go-zeroGo Web 與 RPC 框架
go-zero是一個(gè)集成了各種工程實(shí)踐的web和rpc框架。通過(guò)彈性設(shè)計(jì)保障了大并發(fā)服務(wù)端的穩(wěn)定性,經(jīng)受了充分的實(shí)戰(zhàn)檢驗(yàn)。
go-zero 包含極簡(jiǎn)的 API 定義和生成工具 goctl,可以根據(jù)定義的 api 文件一鍵生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代碼,并可直接運(yùn)行。
使用go-zero的好處:
- 輕松獲得支撐千萬(wàn)日活服務(wù)的穩(wěn)定性
- 內(nèi)建級(jí)聯(lián)超時(shí)控制、限流、自適應(yīng)熔斷、自適應(yīng)降載等微服務(wù)治理能力,無(wú)需配置和額外代碼
- 微服務(wù)治理中間件可無(wú)縫集成到其它現(xiàn)有框架使用
- 極簡(jiǎn)的API描述,一鍵生成各端代碼
- 自動(dòng)校驗(yàn)客戶端請(qǐng)求參數(shù)合法性
- 大量微服務(wù)治理和并發(fā)工具包
設(shè)計(jì)理念
對(duì)于微服務(wù)框架的設(shè)計(jì),保障微服務(wù)穩(wěn)定性的同時(shí),也要特別注重研發(fā)效率。所以設(shè)計(jì)之初,就有如下一些準(zhǔn)則:
- 保持簡(jiǎn)單
- 高可用
- 高并發(fā)
- 易擴(kuò)展
- 彈性設(shè)計(jì),面向故障編程
- 盡可能對(duì)業(yè)務(wù)開發(fā)友好,封裝復(fù)雜度
- 盡可能約束做一件事只有一種方式
項(xiàng)目實(shí)現(xiàn)和特點(diǎn)
- 強(qiáng)大的工具支持,盡可能少的代碼編寫
- 極簡(jiǎn)的接口
- 完全兼容net/http
- 支持中間件,方便擴(kuò)展
- 高性能
- 面向故障編程,彈性設(shè)計(jì)
- 內(nèi)建服務(wù)發(fā)現(xiàn)、負(fù)載均衡
- 內(nèi)建限流、熔斷、降載,且自動(dòng)觸發(fā),自動(dòng)恢復(fù)
- API參數(shù)自動(dòng)校驗(yàn)
- 超時(shí)級(jí)聯(lián)控制
- 自動(dòng)緩存控制
- 鏈路跟蹤、統(tǒng)計(jì)報(bào)警等
- 高并發(fā)支撐,穩(wěn)定保障了曉黑板疫情期間每天的流量洪峰
如下圖,從多個(gè)層面保障了整體服務(wù)的高可用:
評(píng)論
圖片
表情
