Golang Go语言中从零开始搭建一个简单实用的微服务模板

最近总结了下平时工作中写的微服务, 抽出来一个比较简单直观的微服务项目启动模板. 如果对 Go 微服务选工具库或组织代码有所疑虑的话可以读读看, 限于篇幅这里就放个引言, 全篇可以点链接.


引言

微服务算是一个 Go 语言的主要应用场景, 与 Java 不同 Go 语言生态中并不存在一个像 Spring 那样具有绝对统治力的后端框架. 一般大家都是按照自己的业务需求, 组合一些工具库来实现微服务. 这次就带大家一起来实现一个简单实用的项目模板.

首先分享下我平常写微服务时常用的库:

  1. 日志: github.com/sirupsen/logrus
  2. 命令行: github.com/urfave/cli/v2
  3. 服务器: github.com/gofiber/fiber/v2
  4. HTTP 客户端: github.com/go-resty/resty/v2
  5. 参数校验: github.com/go-playground/validator/v10
  6. JWT: github.com/dgrijalva/jwt-go
  7. MySQL: github.com/go-sql-driver/mysql
  8. 错误处理: github.com/gota33/errors
  9. 初始化工具: github.com/gota33/initializr

这次的项目模板准备支持的特性:

  1. 命令行启动
  2. 优雅退出
  3. 配置仓库
  4. 访问日志
  5. JWT
  6. 结构化错误处理
  7. 请求校验

全篇: https://blog.igota.net/posts/20220422/


Golang Go语言中从零开始搭建一个简单实用的微服务模板

更多关于Golang Go语言中从零开始搭建一个简单实用的微服务模板的实战教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

跟风贴一个

<br>├── cmd # 执行目录<br>│ ├── api.go # Api 入口文件<br>│ ├── games.go # websocekt 单用户入口文件<br>│ ├── createRsaPem.go # 手动生成 rsa 非对称密钥<br>├── configs # 配置文件<br>│ ├── local.yaml # 本地环境<br>│ ├── dev.yaml # 测试环境<br>│ ├── pro.yaml # 正式环境<br>├── app<br>│ ├── api<br>│ │ ├── routes<br>│ │ │ ├── api<br>│ │ ├── controller<br>│ │ ├── model //数据结构体<br>│ │ ├── middleware<br>│ │ │ ├── responseJson.go //包裹响应数据为 json<br>│ │ │ ├── tokenAuth.go //token 验证中间件<br>│ │ ├── proto //protobuf <br>│ │ ├── utls //公共函数存放 <br>│ ├── game # 游戏服务器( Nano server )<br>├── internal<br>│ ├── pkg # 项目基础包<br>│ │ ├── jwt # jwt 生成和验证函数库<br>│ │ ├── algoutil # 常用工具函数<br>│ │ │ ├── algoutil.go <br>│ │ ├── crypto # md5 rsa sha1 x509 base64 相关工具<br>│ │ │ ├── crypto.go<br>│ │ ├── errutil # 游戏服务器中错误码和错误信息统一管理<br>│ │ │ ├── code.go<br>│ │ │ ├── errutil.go<br>│ │ ├── whitelist # 白名单验证工具函数<br>│ │ │ ├── white_list.go<br>├── http.go # api 项目公用框架入口<br>├── websocket.go # websocket 项目公用框架入口<br><br>

更多关于Golang Go语言中从零开始搭建一个简单实用的微服务模板的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


不错不错,学习学习

学习了谢谢

学习了!先收藏!

怎么没有讲服务注册、发现、调用、限流、熔断呢。

微服务治理其实是个挺大的话题,这里简单说两句。

在前 Kubernetes 时代确实需要在微服务代码中实现相关的治理功能,不过自从 Kubernetes 成为主流之后这就不再是一个必选项了,我们只要专心写业务代码,再搭配合适的 Ingress 实现就可以做到同样的效果。

考虑到每篇文章的正交性,这篇文章还是主要讲怎么组织业务代码,Part 2 中可能会提一下 Kubernetes 的部署配置,但也不会太深入,毕竟这个话题想讲明白估计得写一个系列了。

期待你深入浅出的讲解,我觉得单个节点程序,很多常用的框架都可以使用。如果可以重点讲讲如何将节点组织起来,可能给大家的收获会更多。

学习学习~

作为IT营GO语言方面的专家,很高兴为您提供关于从零开始搭建简单实用微服务模板的建议。

在Go语言中,搭建微服务模板通常包括以下几个步骤:

  1. 定义微服务接口:首先明确微服务的功能和接口,如服务端点、请求和响应的数据结构等。这可以通过定义结构体和标记来描述服务接口及其参数。
  2. 创建项目结构:使用标准的项目结构组织代码,将不同服务组件(如处理请求、数据库访问等)分离到不同包中。
  3. 选择通信协议:使用HTTP或RPC等协议实现微服务间的通信,可以使用Go语言内置的HTTP包或第三方库(如gRPC)。
  4. 实现业务逻辑:根据微服务的功能和接口编写业务逻辑代码,包括处理请求、访问数据库等。
  5. 数据库访问:使用Go语言的数据库驱动程序连接和操作数据库。
  6. 错误处理:利用Go语言的错误处理机制处理异常情况。
  7. 安全性:确保微服务的安全性,可以使用Go语言的安全库和认证机制。
  8. 日志和监控:使用日志记录库记录关键事件和错误信息,并使用监控工具监控服务性能和健康状况。
  9. 测试:编写单元测试和集成测试,测试微服务的功能和接口。
  10. 部署和扩展:使用Docker等工具将微服务部署到云平台或容器环境中,方便管理和扩展。

在搭建过程中,可以参考Go语言的官方文档和相关教程,确保代码的正确性和效率。同时,注意保持代码的可读性和可维护性,方便后续的开发和迭代。希望这些建议对您有所帮助!

回到顶部