Web
gin实战连载
go-gin-api
微服务实战
go-micro
go-kit
小结
自土拨鼠2021元旦建立Go招聘交流群以来,加了很多同学,包括还没/刚毕业的学生、从其他技术栈(PHP、JAVA、C++等)转Go的、也有只学过Go语法的没有接触过实战的同学和一些多年工作经验的大佬等。其中不少同学问有没有Go实战方面的教程推荐呢?所以这里土拨鼠趁周末给大家推荐一波Go方面的实战教程系列,仅供参考。Go基础方面的土拨鼠就不多介绍了,偷偷告诉你土拨鼠是跟着无闻老师的《Go 编程基础》[1]入门Go的,顺便预告一下无闻老师近期会有新动作,大家敬请期待。
今天土拨鼠主要分享一下web教程和微服务实战方面的教程。
Web
web方面的土拨鼠这里主要说下gin方面的教程,据土拨鼠这么多年打杂过来了解gin是目前企业中应用最多的web库了。不过最近很火热的基于fasthttp[2]的受 Express[3]启发的fiber[4] web框架也很不错。感兴趣的同学可以追更站长的#Fiber系列教程。
gin实战连载
说起gin,这里不得不提一下Go圈界的网红:煎架,相信很多同学学gin都是跟着煎架的gin系列入门的。教程主要介绍了gin搭建Blog API、使用JWT进行身份校验、Swagger自动生成API文档、gin项目docker镜像打包部署和还有一些实战性质的功能教程。
gin实战连载系列教程文章[5] gin实战连载系列教程代码仓库[6]
是不是看得还不够过瘾,还可以看《跟煎鱼学Go》[7]教程系列和到煎架的博客站点[8]进行进一步学习。
go-gin-api
这里再介绍一下新亮大佬的go-gin-api系列教程。教程集成了很多项目开发中的基础能力并带有web管理页面。包括支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用、cron 定时任务等等。
go-gin-api[9] go-gin-api代码仓库[10]
微服务实战
想必大家在Gopher招聘JD中也经常看到微服务实战的经验要求。不过不得不说一下Go微服务框架在国内如火如荼,具体项目实战使用什么框架还是要根据实际情况来决定。所以土拨鼠今天主要搜集了go-micro和go-kit的相关教程文档。
土拨鼠觉得如果你学会了运用了一种微服务框架和web框架,其他的框架也就很好理解了。很多思想都大同小异。土拨鼠建议大家在运用的同时还是要多去想底层的设计和源码细节,而不是搬来搬去。
正好阿松的群里也有位群友问:有比较好的微服务教程吗?我给大家贴一下土拨鼠之前收集的微服务框架的相关内容。
微服务框架对比
微服务框架列表
kitex[11]、kitex-benchmark[12] rpcx[13]、rpcx-benchmark[14] 、rpcx-benchmark2018[15]、rpcx-benchmark2018-article[16] go-zero[17] kratos[18] dubbo-go[19] go-kit/kit[20] kite[21] brpc[22]、brpc-benchmark[23]
go-micro
Golang 微服务教程
土拨鼠18年入门微服务主要还是项目中通过使用go-micro[24]入门的。当时参考的主要是官方教程和Microservices in Golang系列。
Microservices in Golang[25] Microservices in Golang shippy代码仓库[26] Golang 微服务教程[27]
go-micro V2 从零开始
这里也推荐一下hotcoffie大佬的go-micro教程:go-micro V2 从零开始[28],包括使用micro工具自动生成项目、手写第一个微服务、集成micro api网关、消息的订阅和发布、集成etcd注册中心、集成nats消息中间件、集成断路器Hystrix、集成链路追踪工具iaeger、定制网关等主题文章内容。
go-micro V2 从零开始[29] go-micro-study-notes代码仓库[30]
go-kit
其实土拨鼠还是挺中意go-kit,go-kit主要是为我们用Go构建微服务提供kit包。想用哪些模块功能你可以自由组合。你只需要去专注业务就可以了。如果你想了解go-kit,有必要理解下Service、Endpoint、Transport3个核心概念。有了这样的分层架构学习思路也就很清晰了。
go-kit 微服务实践,从入门到精通系列
这个教程主要是代码库,主要介绍了HTTP的基础使用、添加日志、JWT、限流、服务注册与发现、服务熔断、链路追踪和网关相关模块系列教程。另外介绍了基于gk[31]的go-kit自动生成代码库kit[32]。
go-kit 微服务实践,从入门到精通系列[33] go-kit自动生成代码命令行工具[34]
go-kit example. go-kit微服务探索实践
gokit[35]该教程主要包括了:go-kit offical example、go 语言编写 grpc 微服务实例系列文章、go-kit的系列文章和项目推荐等。
gokit系列文章
go-kit微服务系列目录[36] gokit系列文章译[37]
Micro-services Using go-kit文章和案例
gokit系列文章译[38] Micro-services Using go-kit[39] Micro-services Using go-kit 代码仓库[40] Micro-services Using go-kit 代码仓库中译—gokit-playground-example[41]
小结
web和微服务相关的实战教程土拨鼠就先写到这里了。外链比较多,可以查看原文跳转到Go招聘网站上阅读。如果你有更好的实战相关教程,欢迎留言讨论推荐。
参考资料
无闻老师的《Go 编程基础》: https://github.com/unknwon/go-fundamental-programming
[2]fasthttp: https://github.com/valyala/fasthttp
[3]Express: https://github.com/expressjs/express
[4]fiber: https://github.com/gofiber/fiber
[5]gin实战连载系列教程文章: https://eddycjy.com/tags/gin/#2018
[6]gin实战连载系列教程代码仓库: https://github.com/EDDYCJY/go-gin-example
[7]《跟煎鱼学Go》: https://eddycjy.gitbook.io/golang/
[8]煎架的博客站点: https://eddycjy.com/posts/
[9]go-gin-api: https://www.yuque.com/xinliangnote/go-gin-api
[10]go-gin-api代码仓库: https://github.com/xinliangnote/go-gin-api
[11]kitex: https://github.com/cloudwego/kitex
[12]kitex-benchmark: https://github.com/cloudwego/kitex-benchmark
[13]rpcx: https://github.com/smallnest/rpcx
[14]rpcx-benchmark: https://github.com/rpcxio/rpcx-benchmark
[15]rpcx-benchmark2018: https://github.com/rpcx-ecosystem/rpcx-benchmark
[16]rpcx-benchmark2018-article: https://colobu.com/2018/01/31/benchmark-2018-spring-of-popular-rpc-frameworks/
[17]go-zero: https://github.com/tal-tech/go-zero
[18]kratos: https://github.com/go-kratos/kratos
[19]dubbo-go: https://github.com/apache/dubbo-go
[20]go-kit/kit: https://github.com/go-kit/kit
[21]kite: https://github.com/koding/kite
[22]brpc: https://github.com/apache/incubator-brpc
[23]brpc-benchmark: https://github.com/apache/incubator-brpc/blob/master/docs/cn/benchmark.md
[24]go-micro: https://github.com/asim/go-micro
[25]Microservices in Golang: https://ewanvalentine.io/microservices-in-golang-part-1/
[26]Microservices in Golang shippy代码仓库: https://github.com/EwanValentine/shippy
[27]Golang 微服务教程: https://github.com/wuYin/blog/tree/master/microservices
[28]go-micro V2 从零开始: https://blog.csdn.net/hotcoffie/category_10382544.html
[29]go-micro V2 从零开始: https://blog.csdn.net/hotcoffie/category_10382544.html
[30]go-micro-study-notes代码仓库: https://gitee.com/xieyu1989/go-micro-study-notes
[31]gk: https://github.com/kujtimiihoxha/gk
[32]kit: https://github.com/kujtimiihoxha/kit
[33]go-kit 微服务实践,从入门到精通系列: https://github.com/hwholiday/learning_tools/tree/master/go-kit
[34]go-kit自动生成代码命令行工具: https://github.com/kujtimiihoxha/kit
[35]gokit: https://github.com/generals-space/gokit
[36]go-kit微服务系列目录: https://juejin.cn/post/6844903794380111886
[37]gokit系列文章译: https://t.hk.uy/arNA
[38]gokit系列文章译: https://t.hk.uy/arNA
[39]Micro-services Using go-kit: https://www.ru-rocker.com/tag/gokit/
[40]Micro-services Using go-kit 代码仓库: https://github.com/ru-rocker/gokit-playground
[41]Micro-services Using go-kit 代码仓库中译—gokit-playground-example: https://github.com/generals-space/gokit/tree/master/06.gokit-playground-example