背景
微服務旨在將復雜的項目進行拆分,明確各服務之間的邊界,實現服務內部高內聚,服務間低耦合
為什么要使用微服務?
1.降低開發難度,有利于大團隊的分工,細化模塊開發,開發人員能夠更專注于業務模塊優化
2.獨立部署,服務間依賴降低,服務部署更為簡單
3.提高容錯和容災能力,微服務之間獨立,能夠最大程度降低服務故障的連環影響
簡介
在go語言的發展歷程中涌現出了許多的微服務框架,而go-zero就是其中脫穎而出的一位選手。
go-zero是一個集成了各種工程實踐的web和rpc框架,通過彈性設計保障了大并發服務端的穩定性,并廣泛應用于各大企業的業務使用。
go-zero擁有以下優點:
1.適用支撐高并發的后端服務
2.具備微服務治理能力,無需配置和額外代碼
3.微服務治理中間件可無縫集成到其他框架中使用
4.極簡API,一鍵生成代碼
5.大量的開源工具包
優缺點
一到五星
| 框架 | 基本概況 | 組件依賴程度(少為佳) | API支持力度(大為佳) |
| go-micro | 元老級 | ★★★★★ | ★★★ |
| go-kit | 元老級 | ★★★★★ | ★★ |
| tars-go | 騰訊開源,依托于基于c++的tars框架 | ★★ | ★★★★ |
| dubbo-go | 阿里開源,依托于基于java的dubbo框架 | ★★ | ★★★★ |
| go-kratos | b站開源,輕量級 | ★★★★ | ★★★★★ |
| go-zero | 最新力作,社區不斷更新 | ★★★★★ | ★★★★★ |
依賴
1.goctl,go-zero框架的基礎工具,用于生成模板框架和代碼
2.protoc,web框架必備,proto文件的編譯器
組件
相比于傳統框架,go-zero集成了很多實用的組件,例如
1.并發利器
mr: mapReduce強于sync.WaitGroup,容錯高
fx: 流處理和函數并發
2.服務編排
ServiceGroup
3.groutines編程
RoutineGroup
GoSafe
RunSafe
TaskRunner
WorkerGroup
4.通訊
gRPC
http
gRPC Gateway
http client
5.存儲
MySQL
PosgreSQL
Monggo
Redis
6.消息隊列
kafka
7.延時隊列
beanstalk
8.服務注冊與發現
內置Etcd
支持k8s
9.服務治理
內置令牌桶、計數限流器
內置熔斷器
內置負載均衡組件
超時控制
10.數據監控
指標采集上報
鏈路追蹤
11.工具
goctl腳手架