
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, Javascript 代码,并可直接运行。
使用 go-zero 的好处:

18 年初,晓黑板后端在经过频繁的宕机后,决定从Java+MongoDB的单体架构迁移到微服务架构,经过仔细思考和对比,我们决定:
对于微服务框架的设计,我们期望保障微服务稳定性的同时,也要特别注重研发效率。所以设计之初,我们就有如下一些准则:
我们经历不到半年时间,彻底完成了从Java+MongoDB到Golang+MySQL为主的微服务体系迁移,并于 18 年 8 月底完全上线,稳定保障了晓黑板后续增长,确保了整个服务的高可用。
go-zero 是一个集成了各种工程实践的包含 web 和 rpc 框架,有如下主要特点:
如下图,我们从多个层面保障了整体服务的高可用:


https://github.com/tal-tech/go-zero
扫码加入微信交流群

1 chenqh 2020-08-30 23:15:00 +08:00 java+mongo 为什么会频繁宕机? |
2 kevinwan OP 因为单体和代码的原因,数据都放在一个 mongo 大仓里 |
3 TypeError 2020-08-30 23:22:18 +08:00 我看斗鱼最近也开源了他们的微服务框架,http://jupiter.douyu.com/jupiter/ 不知道有没有对比过二者的优缺点 |
4 kevinwan OP 好点的微服务框架提供的基本组件基本都差不太多,我们最大的特色是快速构建微服务,参考 https://github.com/tal-tech/go-zero/blob/master/doc/shorturl.md |
5 securityCoding 2020-08-31 10:33:53 +08:00 @kevinwan 在 B 站看了你在 go 夜读的分享,讲的真好 |
6 securityCoding 2020-08-31 10:34:53 +08:00 @chenqh 应该是全部业务在一个单体服务里面,导致不可控的因素太多了 |
7 kevinwan OP @securityCoding ,是的,单体系统各模块强耦合,鸡蛋放在一个篮子里,不可控因素会导致系统难以持续发展。当然小系统没必要强上微服务。 |
8 zhoushuguangking 2020-09-04 09:35:59 +08:00 是一个很不错的微服务框架 |
9 KesonAn 2020-09-04 09:42:51 +08:00 go-zero,一个新型微服务框架,很容易上手,功能很强大。 |
10 KesonAn 2020-09-04 09:46:01 +08:00 前几天跟着 quick start 跑了一下,几分钟就实现了一个微服务。太棒了。 |
11 zhoushuguangking 2020-09-04 09:46:22 +08:00 很多好用的工具,真棒 |
12 KesonAn 2020-09-04 09:46:31 +08:00 |
13 zhoushuguangking 2020-09-04 09:47:16 +08:00 这两天抽空研究了下 go-zero 源码,感觉很不错,代码比较优雅,追求极简 |
14 zhoushuguangking 2020-09-04 09:48:25 +08:00 star 长得快说明框架写的真是不错 |
15 zhoushuguangking 2020-09-04 09:50:30 +08:00 好的框架就是追求极简,不是功能越多越复杂就好 |
16 zhoushuguangking 2020-09-04 09:50:45 +08:00 工具大于约定和文档 |
17 zhoushuguangking 2020-09-04 10:25:35 +08:00 真的是很不错的微服务框架 |
18 zhoushuguangking 2020-09-04 10:26:41 +08:00 降载熔断对保护下游服务真的很重要 |
19 zhoushuguangking 2020-09-04 10:28:16 +08:00 试用了下 go-zero 真的是简单易用易上手 |
20 KesonAn 2020-09-04 10:28:37 +08:00 降载熔断对保护下游服务真的很重要 +1 |
21 KesonAn 2020-09-04 10:29:26 +08:00 core 包中很多干货,推荐学习! |
22 kingxt 2020-09-04 10:30:05 +08:00 很赞啊 |
23 dylanre 2020-09-04 10:34:20 +08:00 大道至简就是这样,其实很多功能特性都不是你真正需要的。而 go-zero 就是保持极简风格。同时 core 中的代码中真的很多干货,赞赞。 |
24 zhoushuguangking 2020-09-04 13:15:08 +08:00 每天都能从 go-zero 中学习到很多知识 |
25 zhoushuguangking 2020-09-04 13:16:04 +08:00 goctl 还能生成不同语言的代码,真的是太强了 |
26 KesonAn 2020-09-04 13:20:01 +08:00 |
27 zhoushuguangking 2020-09-04 13:20:57 +08:00 强啊 |
我今天用 go-zero 部署了几个服务感觉还不错,学习到了很多新的理念 |
29 jeremaihloo 2020-09-04 14:44:23 +08:00 楼上是楼主买的水军吗? |
30 bittoy 2020-09-04 15:25:02 +08:00 相比于其他微服务框架来说,更加注重微服务的工程化,解放双手,避免很多 curd 重复代码 |
31 gowk 2020-09-04 16:04:41 +08:00 |
32 jeremaihloo 2020-09-04 16:07:41 +08:00 @gowk #31 楼上有两个小号干这个事情, 我以为... |
33 allanpk716 2020-11-07 15:30:10 +08:00 微服务 0 基础,对比尝试了 go-micro 以及 go-zero,起码后者跟着 quick start 搞清楚怎么写业务,以及能够把现有的项目尝试性的对接上了( goctl model 这个不错),还有一些细节(如果 *.api V1 版本搞定了,要再加内容,还没测试用官方工具再次生成代码会不会覆盖等一些维护性细节)需要测试确认,如果文档示例能再多点就更好了(逃 |
34 kevinwan OP @allanpk716 没问题的,可以增量生成,只要文件头标记了 do not edit 的不改就没问题 |