最近总结了下平时工作中写的微服务, 抽出来一个比较简单直观的微服务项目启动模板. 如果对 Go 微服务选工具库或组织代码有所疑虑的话可以读读看, 限于篇幅这里就放个引言, 全篇可以点链接.
微服务算是一个 Go 语言的主要应用场景, 与 Java 不同 Go 语言生态中并不存在一个像 Spring 那样具有绝对统治力的后端框架. 一般大家都是按照自己的业务需求, 组合一些工具库来实现微服务. 这次就带大家一起来实现一个简单实用的项目模板.
首先分享下我平常写微服务时常用的库:
这次的项目模板准备支持的特性:
1
mengdodo 2022-04-24 08:50:53 +08:00
跟风贴一个
``` ├── cmd # 执行目录 │ ├── api.go # Api 入口文件 │ ├── games.go # websocekt 单用户入口文件 │ ├── createRsaPem.go # 手动生成 rsa 非对称密钥 ├── configs # 配置文件 │ ├── local.yaml # 本地环境 │ ├── dev.yaml # 测试环境 │ ├── pro.yaml # 正式环境 ├── app │ ├── api │ │ ├── routes │ │ │ ├── api │ │ ├── controller │ │ ├── model //数据结构体 │ │ ├── middleware │ │ │ ├── responseJson.go //包裹响应数据为 json │ │ │ ├── tokenAuth.go //token 验证中间件 │ │ ├── proto //protobuf │ │ ├── utls //公共函数存放 │ ├── game # 游戏服务器( Nano server ) ├── internal │ ├── pkg # 项目基础包 │ │ ├── jwt # jwt 生成和验证函数库 │ │ ├── algoutil # 常用工具函数 │ │ │ ├── algoutil.go │ │ ├── crypto # md5 rsa sha1 x509 base64 相关工具 │ │ │ ├── crypto.go │ │ ├── errutil # 游戏服务器中错误码和错误信息统一管理 │ │ │ ├── code.go │ │ │ ├── errutil.go │ │ ├── whitelist # 白名单验证工具函数 │ │ │ ├── white_list.go ├── http.go # api 项目公用框架入口 ├── websocket.go # websocket 项目公用框架入口 ``` |
2
Dganzh 2022-04-24 14:23:42 +08:00
不错不错,学习学习
|
3
golangLover 2022-04-25 09:00:26 +08:00 via Android
学习了谢谢
|
4
twistedmeadows 2022-04-25 17:59:04 +08:00
学习了!先收藏!
|
5
sciel 2022-04-26 09:01:24 +08:00 via iPhone
怎么没有讲服务注册、发现、调用、限流、熔断呢。
|
6
Gota OP @sciel 微服务治理其实是个挺大的话题,这里简单说两句。
在前 Kubernetes 时代确实需要在微服务代码中实现相关的治理功能,不过自从 Kubernetes 成为主流之后这就不再是一个必选项了,我们只要专心写业务代码,再搭配合适的 Ingress 实现就可以做到同样的效果。 考虑到每篇文章的正交性,这篇文章还是主要讲怎么组织业务代码,Part 2 中可能会提一下 Kubernetes 的部署配置,但也不会太深入,毕竟这个话题想讲明白估计得写一个系列了。 |
7
sciel 2022-04-26 11:32:04 +08:00
@Gota 期待你深入浅出的讲解,我觉得单个节点程序,很多常用的框架都可以使用。如果可以重点讲讲如何将节点组织起来,可能给大家的收获会更多。
|
8
FanZhen 2022-04-28 10:37:08 +08:00
学习学习~
|