- 微服務(wù)從小白到專家:Spring Cloud和Kubernetes實戰(zhàn)
- 姚秋辰 張昕 卿睿
- 1560字
- 2021-10-29 12:24:34
4.3 大廠微服務(wù)架構(gòu)的服務(wù)治理方案
4.3.1 業(yè)界主流服務(wù)治理框架一覽
1. Dubbo
Apache Dubbo是阿里開源的一款高性能RPC(Remote Procedure Call)框架,Dubbo的更新維護曾一度停滯了數(shù)年,隨著近幾年“阿里系”在開源領(lǐng)域上的逐步發(fā)力,Dubbo也重新煥發(fā)了青春活力。目前Dubbo已經(jīng)正式完成項目孵化并成為Apache的頂級項目,它也是國內(nèi)微服務(wù)領(lǐng)域的一個熱門開發(fā)框架。Dubbo提供了面向接口的遠程服務(wù)調(diào)用、服務(wù)容錯和負載均衡及服務(wù)注冊和服務(wù)發(fā)現(xiàn)等核心功能。除此之外,在服務(wù)治理和運維可視化方面、運行期流量調(diào)度和發(fā)布策略方面也有比較完善的功能。
2. HSF
High Speed Framework(又名“好舒服”),很多讀者可能會對這個名字感到陌生,它是“阿里系”內(nèi)部使用最廣泛的RPC服務(wù)治理框架,應用在淘寶、天貓及各個“淘系”的上下游業(yè)務(wù)中。HSF是“淘系”團隊開發(fā)的RPC框架,由于淘系業(yè)務(wù)在“阿里系”的核心地位,HSF奠定了自己在“阿里系”服務(wù)治理領(lǐng)域的“一哥”地位。但HSF過多地依賴了“阿里系”的內(nèi)部系統(tǒng),其部署方式相對Dubbo來說更加重量級(需要Taobao-Tomcat),從運維的角度來說,HSF不如Dubbo靈巧、輕便。因此,目前它主要通過阿里云走技術(shù)輸出路線。
3. SOFARPC
SOFARPC是螞蟻金服開源的一款RPC框架,支持RESTful、Dubbo、H2C和螞蟻金服開發(fā)的Bolt協(xié)議進行通信,并且可以將同一個服務(wù)以多種不同協(xié)議開放出去,在使用上與Dubbo并沒有太大區(qū)別。目前SOFARPC的其中一個發(fā)展方向是通過兼容主流開源軟件來推進自己的開源路線。在最近的發(fā)布版本中,SOFARPC和Spring Cloud的注冊中心Consul及服務(wù)容錯組件Hystrix做了集成,與其他注冊中心中間件(Eureka和ETCD)的對接仍在開發(fā)中。
4. gRPC
gRPC是谷歌開發(fā)的高性能RPC框架,基于ProtoBuf序列化協(xié)議的跨語言服務(wù)治理框架,開發(fā)者只需定義一套Proto格式的接口描述,就能用插件生成指定編程語言的接口訪問層。gRPC對異步調(diào)用也有強大的支持,借助gRPC可以輕松地構(gòu)建下一代微服務(wù)架構(gòu)方案——ServiceMesh云原生應用。筆者所任職公司的業(yè)務(wù)就搭建在gRPC + Kubernetes + Istio的ServiceMesh云原生架構(gòu)之上。gRPC在海外應用得相當廣泛,但由于種種限制,在國內(nèi)的應用比較少。
5. Spring Cloud
Spring Cloud提供了多款優(yōu)秀的服務(wù)注冊中心,比如原生組件Consul、由阿里貢獻的Nacos項目,以及目前應用最廣泛的由Netflix公司開發(fā)的Eureka。Spring Cloud提供的服務(wù)治理功能遠不只服務(wù)注冊與服務(wù)發(fā)現(xiàn)。Spring Cloud還提供了一整套豐富的微服務(wù)組件庫,構(gòu)建了微服務(wù)架構(gòu)的一站式解決方案。可以說,Spring Cloud是目前微服務(wù)架構(gòu)領(lǐng)域內(nèi)功能最強大、生態(tài)最豐富的開源項目工具包。從本書第5章開始,我們會對Spring Cloud的核心組件做詳細介紹。
4.3.2 微服務(wù)框架的選型建議
微服務(wù)框架的選型要著眼于現(xiàn)有的業(yè)務(wù)和技術(shù)平臺,從0開始搭建的應用或者中小型項目相比于大型應用有更大的選型自由度,替換基礎(chǔ)組建的成本也在可控范圍內(nèi)。但是對于老舊遺留系統(tǒng)和大型項目,更換技術(shù)選型的限制因素有很多,若要遷移到微服務(wù)架構(gòu)上,則要采取長期規(guī)劃加逐步替換的策略,尤其要保證新的微服務(wù)技術(shù)棧在遷移過程中始終與已有服務(wù)組件保持兼容。
因此,我們在進行技術(shù)選型的時候,應當盡可能地選擇可插拔式的組件,這類組件的接入成本是可控的,并且可以被靈活替換。在此,筆者推薦使用Spring Cloud一站式解決方案,主要的考量因素有以下幾點:
1. 組件化
Spring Cloud將服務(wù)治理領(lǐng)域的各個平臺功能做了頂層抽象,各個不同功能的組件之間有清晰的界限,組件與組件之間沒有強綁定關(guān)系,可以很方便地替換某個組件。對于相同領(lǐng)域的組件(比如注冊中心的Eureka、Consul和Nacos),由于它們都遵循同一套接口規(guī)范,所以只要變更依賴項和少量配置注解,便可以達到替換底層組件的目的。這種插件式的架構(gòu)設(shè)計為技術(shù)選型提供了很大的靈活度。
2. 生態(tài)活躍
依托于Spring社區(qū)的活躍度,可以預見Spring Cloud在未來將保持旺盛的更新節(jié)奏(現(xiàn)在幾乎不到一年就會有大版本的更新),為開發(fā)者提供越來越多的高質(zhì)量組件庫和新功能。
3. 一站式
Spring Cloud有豐富的組件庫,可以在微服務(wù)架構(gòu)的方方面面提供解決方案,是一個“全家桶”式的微服務(wù)解決方案;而大部分微服務(wù)架構(gòu)其實只解決了“服務(wù)治理”這一個領(lǐng)域的問題。
- Learning Cython Programming(Second Edition)
- 兩周自制腳本語言
- Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計
- Java編程指南:基礎(chǔ)知識、類庫應用及案例設(shè)計
- 樂高機器人設(shè)計技巧:EV3結(jié)構(gòu)設(shè)計與編程指導
- The Computer Vision Workshop
- Raspberry Pi 2 Server Essentials
- Python高效開發(fā)實戰(zhàn):Django、Tornado、Flask、Twisted(第3版)
- Kotlin Standard Library Cookbook
- Learning Python Design Patterns
- Getting Started with LLVM Core Libraries
- MongoDB,Express,Angular,and Node.js Fundamentals
- Spring MVC+MyBatis開發(fā)從入門到項目實踐(超值版)
- QGIS 2 Cookbook
- 微課學人工智能Python編程