• 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]
04.png

微服务实战

想必大家在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招聘网站上阅读。如果你有更好的实战相关教程,欢迎留言讨论推荐。

参考资料

[1]

无闻老师的《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