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
👍👍👍强啊
|
28
zhoushuguangking 2020-09-04 13:21:57 +08:00
我今天用 go-zero 部署了几个服务感觉还不错,学习到了很多新的理念
|
29
jeremaihloo 2020-09-04 14:44:23 +08:00 2
楼上是楼主买的水军吗?
|
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 的不改就没问题
|