天天看點

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

哈喽各位同學們大家好呀,小編今天帶着開發者學院中課程“Dubbo分布式加與大規模服務叢集治理”幹貨總結來了~一起學習新課程吧!

課程連結以及圖譜位址小編已經為大家指路了,搭配學習效果更佳👇

課程名稱:Dubbo 分布式服務治理實踐

課程位址:

https://developer.aliyun.com/learning/course/72/detail/1186?spm=a2c6h.21258778.0.0.6abe6a00HnUwTh

圖譜名稱:Alibaba Java 技術圖譜

圖譜位址:

https://developer.aliyun.com/graph/java?spm=a2c6h.21110250.J_5703890090.6.700e3c67EjOBeJ

Dubbo分布式加與大規模服務叢集治理 

一、Dubbo分布式架構 

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

Dubbo架構主要分為兩個部分:用戶端與服務端,也可稱為Dubbo消費者和Dubbo提供者。 

例如電商網站,要調支付服務、物流服務、訂單服務、監控服務、大資料服務等,服務是某些功能的封裝,這些是提供者所提供的服務。作為用戶端的話,使用者要調用這些服務去完成某些業務功能,因為用戶端和服務端是位于不同程序,位于分布式網絡中不同的節點上,這是典型的一個架構。如果用戶端和服務端兩個都是單體的話,則為最簡單的分布式架構。 

随着業務的不斷發展,架構也會不斷演化。有些業務是大規模的叢集,此時單點調用無法解決問題,這是由于服務端可能有10台、100台、1000台甚至更多。同樣的服務有時候上線有時候下線,無法預估有多少台可能會上線,多少台會下線,此時需要使用叢集的彈性收縮功能解決這個問題。 

如果叢集從上線到下線到運作一直都是10台,則正常情況就能滿足需求。但如果在某些大型業務場景,例如雙11時,平時10台可以滿足的業務,在雙11的時候可能需要1000台,甚至上萬台進行支撐。是以,不同的業務叢集規模是不一樣的,小規模叢集可能直接基于IP進行叢集搭建就可以,大規模叢集則需要對接多個不同的區域網路,基于域名的方式進行排程的情況可能更多一點。 

是以,Dubbo分布式架構不僅僅是用戶端和服務端、消費者和提供者這樣的調用關系,它解決的是大規模用戶端與大規模服務端的管理問題。 

簡單的架構要解決技術問題的話,它還需要有一個注冊中心,還有應用監控中心,這就是典型的Dubbo早期解決問題。 

二、Dubbo分布式叢集架構 

在這個基礎上,如果服務是不定數量的大規模叢集,就需架構進一步去更新改造。 

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

注冊中心可能是個叢集,監控中心可能是個叢集,在大型業務場景下,服務可能也是個叢集。 

無論是支付服務、訂單服務、商品服務、賬号服務等,都可以根據自己的實際的并發需求,去部署不定規格、不定數量的大規模服務叢集。Dubbo聯合其他技術人員給使用者提供快速上線、包括管理的服務。Dubbo不僅解決分布式調用的問題,還解決了多協定大規模叢集的治理問題,這也是Dubbo在其他大型網際網路公司中收到廣泛好評的原因。 

三、Dubbo核心元件 

  • Dubbo主要有以下核心元件: 
  1. Provider:服務的提供方,通過Jar或者容器的方式啟動服務 
  2. Consumer:服務消費方 
  3. Registry:注冊中心 
  4. Monitor:統計服務和調用次數,調用時間監控中心。(Dubbo的控制台頁面中可以顯示,目前隻有一個簡單版本) 
  5. Container:服務運作的容器 

四、Dubbo SOA服務治理 

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

Dubbo誕生于SOA盛行的2008年,早期基于Web Service中心SOA服務治理,後面在這個基礎上逐漸開始大規模的擴充,服務之間關系越來越複雜。此時需要治理中心,用來做大規模的流量排程、監控等,這些都是極具挑戰性的問題,是以阿裡開發了很多工具在内部去解決這些問題。 

對于這些挑戰性問題,Dubbo的許多觀點思想與目前微服務架構Spring Cloud不謀而合。這是由于當微服務到了大規模叢集的層次上,無論怎麼拆,它終究會面臨這些問題,例如熔斷限流,負載均衡,流量排程,安全治理等。 

2013~2017年Dubbo疏于維護,而這是Spring Cloud蓬勃發展時期,逐漸成為世界級微服務架構,但從某種程度上來說,Dubbo可以稱為Spring Cloud的前輩。 

五、Dubbo未來底層同步與異步架構 

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

Dubbo從3.0版本開始,也在做服務高并發、協定等方面的改造。如雲原生支援的改造,去支援底層的高并發高吞吐量,去對接K8s雲原生的工具,協定層支援RPC等新的類型,進而讓Dubbo整個通信協定更多樣化,使使用者在不同場景下可以選擇不同的實踐方式。 

異步請求和同步請求各有優勢,異步請求優勢在于非阻塞,同步請求的優勢在于即時性,但如果是阻塞操作、長時間操作的話,可能會導緻線程卡死的狀況,影響整體的并發。 

Dubbo整個分布架構是更高層級的架構,它是大規模服務叢集,不僅僅是開發落地,而且要大規模服務治理,它的實踐經驗給其他網際網路公司的架構提供了很好的參考。 

六、Dubbo分布式架構與Remoting 

開發者學堂課程幹貨總結——Dubbo 分布式服務治理實踐(二)

Dubbo分布式架構的遠端通訊(Remoting)提供對多種NIO架構抽象封裝,包括“同步轉異步”和“請求-響應”模式的資訊交換方式。