欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:【架構(gòu)】分布式與微服務(wù)架構(gòu)解析

柚子快報激活碼778899分享:【架構(gòu)】分布式與微服務(wù)架構(gòu)解析

http://yzkb.51969.com/

分布式與微服務(wù)架構(gòu)解析

一、分布式1、什么是分布式架構(gòu)2、為什么需要分布式架構(gòu)3、分布式架構(gòu)有哪些優(yōu)勢?4、分布式架構(gòu)有什么劣勢?5、分布式架構(gòu)有哪些關(guān)鍵技術(shù)?6、基于分布式架構(gòu)如何提高其高性能?7、如何基于架構(gòu)提高系統(tǒng)的穩(wěn)定性?8、分布式架構(gòu)有什么難點?

二、微服務(wù)1、什么是微服務(wù)2、微服務(wù)架構(gòu)誕生的背景3、為什么需要微服務(wù)架構(gòu)4、微服務(wù)架構(gòu)存在的問題5、微服務(wù)架構(gòu)的優(yōu)點6、常見的微服務(wù)架構(gòu)

三、分布式架構(gòu)和微服務(wù)架構(gòu)的區(qū)別

一、分布式

1、什么是分布式架構(gòu)

微服務(wù)架構(gòu)是分布式架構(gòu),分布式架構(gòu)不一定是微服務(wù)架構(gòu)

當(dāng)系統(tǒng)的并發(fā)處理能力、存儲能力不足時,我們可能會創(chuàng)建多個web服務(wù)(多個tomcat服務(wù)器),多個數(shù)據(jù)庫服務(wù)(主從架構(gòu)等),這些服務(wù)器通過網(wǎng)絡(luò)進行連接,然后協(xié)同處理客戶端的并發(fā)請求,這樣的系統(tǒng)我們稱之為分布式系統(tǒng)。

2、為什么需要分布式架構(gòu)

分布式架構(gòu)可以更好的提高系統(tǒng)的容量、可靠性(避免單點故障)、性能。 同時因為模塊化,系統(tǒng)的可重用性以及并行并發(fā)開發(fā)的效率也會提高。

當(dāng)一個系統(tǒng)的業(yè)務(wù)量越來越大時,我們需要垂直或是水平拆分業(yè)務(wù)系統(tǒng),同時為了避免所有業(yè)務(wù)都部署在一臺機器上時,一旦機器出現(xiàn)故障從而導(dǎo)致整體不可用,就需要將這些業(yè)務(wù)部署在多臺計算機上,來構(gòu)建一個分布式架構(gòu)。

3、分布式架構(gòu)有哪些優(yōu)勢?

可以實現(xiàn)更大數(shù)據(jù)量的存儲。(抖音每天幾十pb的數(shù)據(jù))可以更好提高系統(tǒng)的高可用性。(業(yè)務(wù)冗余、業(yè)務(wù)拆分、限流、熔斷)可以更好提高系統(tǒng)的可重用性??梢愿锰岣呦到y(tǒng)的性能。

4、分布式架構(gòu)有什么劣勢?

復(fù)雜性增加:分布式架構(gòu)的設(shè)計和實現(xiàn)相對于單體應(yīng)用來說更加復(fù)雜。開發(fā)人員需要考慮到網(wǎng)絡(luò)通信、數(shù)據(jù)一致性、故障處理等方面的問題,這增加了系統(tǒng)的復(fù)雜性和開發(fā)的難度。性能問題:由于分布式架構(gòu)將系統(tǒng)拆分成多個服務(wù),服務(wù)之間需要通過網(wǎng)絡(luò)進行通信,這會引入一定的延遲。同時,分布式系統(tǒng)中的負(fù)載均衡和數(shù)據(jù)分片等機制也會對性能產(chǎn)生一定的影響。一致性難題:在分布式系統(tǒng)中,由于存在多個節(jié)點,數(shù)據(jù)的一致性成為一個復(fù)雜的問題。保證數(shù)據(jù)的一致性需要引入復(fù)雜的分布式事務(wù)機制,增加了系統(tǒng)的開銷和復(fù)雜性。部署和維護成本增加:由于分布式架構(gòu)涉及多個服務(wù)的部署和維護,這增加了部署和維護的成本。同時,對于分布式系統(tǒng)的監(jiān)控和故障排查也需要更多的工作。 系統(tǒng)的復(fù)雜性增加了故障排查的難度:由于分布式架構(gòu)的復(fù)雜性,當(dāng)系統(tǒng)出現(xiàn)故障時,排查問題變得更加困難。需要考慮多個服務(wù)之間的交互,以及網(wǎng)絡(luò)通信等方面的問題。

5、分布式架構(gòu)有哪些關(guān)鍵技術(shù)?

服務(wù)治理

服務(wù)治理最大的意義是需要把服務(wù)間的依賴關(guān)系、服務(wù)調(diào)用鏈,以及關(guān)鍵的服務(wù)給梳理出來,并對這些服務(wù)進行性能和可用性方面的管理。一般我們所討論的服務(wù)拆分、服務(wù)注冊、服務(wù)發(fā)現(xiàn)、服務(wù)限流、服務(wù)熔斷、降級、服務(wù)的鏈路跟蹤,監(jiān)控等都屬于服務(wù)治理的范疇。

架構(gòu)管理

基于服務(wù)所形成的架構(gòu)需要用架構(gòu)管理、整體架構(gòu)的生命周期管理,以及對服務(wù)的編排、聚合事務(wù)處理等服務(wù)調(diào)度的功能。

DevOps(開發(fā)與運維一體化)

分布式系統(tǒng)可以更為快速的更新服務(wù),但是對于服務(wù)的測試和部署都會是挑戰(zhàn)。所以,還需要DevOps的全流程,其中包括環(huán)境構(gòu)建、持續(xù)集成、持續(xù)部署等、自動化運維。有了DevOps后,我們就可以對服務(wù)進行自動伸縮、故障遷移、配置管理、狀態(tài)管理等一系列的自動化運維技術(shù)了。(AIOps)

資源調(diào)度管理

應(yīng)用層的自動化運維需要基礎(chǔ)層的調(diào)度支持,也就是云計算IaaS層的計算、存儲、網(wǎng)絡(luò)等資源調(diào)度、隔離和管理。

整體架構(gòu)監(jiān)控

如果沒有一個好的監(jiān)控系統(tǒng),那么自動化運維和資源調(diào)度管理只可能成為一個泡影,因為監(jiān)控系統(tǒng)是你的眼睛。沒有眼睛、沒有數(shù)據(jù),就無法進行高效的運維。所以說,監(jiān)控是非常重要的部分。這里的監(jiān)控需要對三層系統(tǒng)(應(yīng)用層、中間件、基礎(chǔ)層)進行監(jiān)控。

流量控制

6、基于分布式架構(gòu)如何提高其高性能?

一般面對這樣的問題,首先要從整體維度去思考,要分析問題,例如影響系統(tǒng)性能的因素有哪些?

請求數(shù)據(jù)的傳輸時間請求數(shù)據(jù)的處理時間響應(yīng)數(shù)據(jù)的傳輸時間響應(yīng)數(shù)據(jù)的渲染時間 當(dāng)了解影響系統(tǒng)性能的因素以后,此時可以給出一些具體解決方案,例如;減少數(shù)據(jù)傳輸時間?(加寬帶,減少數(shù)據(jù)傳輸量,減少傳輸距離)提高請求數(shù)據(jù)的處理速度?(CPU、內(nèi)存、硬盤、分布式架構(gòu),緩存、算法、sql調(diào)優(yōu),索引的設(shè)計、異步) 3.減少數(shù)據(jù)在客戶端的渲染時間?(局部更新-Ajax,減少不必要的元素渲染等) 具體從架構(gòu)層面進行設(shè)計的話可以從如下幾個維度進行思考:

應(yīng)用緩存

為系統(tǒng)添加緩存,可以有效地提高系統(tǒng)的訪問能力。從前端的瀏覽器,到網(wǎng)絡(luò),再到后端的服務(wù),底層的數(shù)據(jù)庫、文件系統(tǒng)、硬盤和CPU,全都有緩存,這是提高快速訪問能力最有效的手段。

負(fù)載均衡

負(fù)載均衡是做水平擴展的關(guān)鍵技術(shù),使用多臺機器來共同分擔(dān)一部分流量請求。

異步調(diào)用

異步系統(tǒng)主要通過消息隊列來對請求做排隊處理,這樣可以把前端的請求的峰值給“削平”了,而后端通過自己能夠處理的速度來處理請求。

數(shù)據(jù)分區(qū)和數(shù)據(jù)鏡像

數(shù)據(jù)區(qū)分是把數(shù)據(jù)按一定的方式分成多個區(qū)(比如通過地理位置),不同的數(shù)據(jù)區(qū)分來分擔(dān)不同區(qū)的流量。

具體從SQL調(diào)優(yōu)層面如何進行優(yōu)化呢?

獲取執(zhí)行慢的SQL(通過慢 SQL日志找到執(zhí)行慢的SQL)獲取影響SQL執(zhí)行比較慢的原因(通過執(zhí)行計劃分析SQL執(zhí)行慢的原因)給出具體SQL的優(yōu)化方案(例如數(shù)據(jù)量太大,沒設(shè)計索引或沒走索引,SQL結(jié)構(gòu)設(shè)計不合理)

7、如何基于架構(gòu)提高系統(tǒng)的穩(wěn)定性?

服務(wù)拆分:分而治之

服務(wù)拆分可以更好的實現(xiàn)故障隔離,同時也可以重用服務(wù)模塊。

服務(wù)冗余:有備無患

服務(wù)冗余是為了去除單點故障,支持服務(wù)的彈性伸縮,以及故障遷移。

限流降級:細(xì)水長流,斷尾求生

當(dāng)系統(tǒng)扛不住壓力時,只能通過限流或者功能降級的方式來停掉一部分任務(wù),或是拒絕一部分用戶,以確保整個架構(gòu)不會掛掉。

高可用架構(gòu):多機房部署

高可用就是從冗余架構(gòu)的角度來保障可用性。比如多租戶隔離,災(zāi)備多活等,總之是wield不出單點故障。

高可用運維

指的是DevOps中的CI(持續(xù)集成)、CD(持續(xù)部署)。一個良好的運維應(yīng)做了足夠的自動化測試,做相應(yīng)的灰度發(fā)布,以及對線上系統(tǒng)的自動化控制。這樣就可以做到“計劃內(nèi)”或是“非計劃內(nèi)”的宕機事件的時長最短。

8、分布式架構(gòu)有什么難點?

異構(gòu)系統(tǒng)存在很多不標(biāo)準(zhǔn)的問題

構(gòu)建軟件時使用的編程語言、通訊協(xié)議、數(shù)據(jù)格式、運維標(biāo)準(zhǔn)可能不同,進而導(dǎo)致架構(gòu)設(shè)計的復(fù)雜度越來越高。

系統(tǒng)架構(gòu)中的服務(wù)依賴問題

傳統(tǒng)的單體應(yīng)用,一臺機器掛了,整個軟件就垮掉了,分布式架構(gòu)下也可能出現(xiàn)這樣的問題,因為一個服務(wù)可能會依賴另一個服務(wù),某個服務(wù)掛掉了,會導(dǎo)致調(diào)用鏈上的服務(wù)都出現(xiàn)故障。

故障發(fā)生的概率更大

分布式架構(gòu)中,服務(wù)和機器都會比較多,故障發(fā)生的頻率會更大,只是影響面沒有單體應(yīng)用的影響面大,分布式系統(tǒng)中故障可以被隔離。還有就是分布式架構(gòu)管理相對于單體架構(gòu)也更加復(fù)雜,沒有優(yōu)秀的架構(gòu)管理人員,故障的頻率還是會非常高。

多層架構(gòu)的運維復(fù)雜度很大

分布式架構(gòu)中,我們可以將系統(tǒng)分為四層(基礎(chǔ)層、平臺層、應(yīng)用層、接入層)

基礎(chǔ)層:包括機器、網(wǎng)絡(luò)和存儲設(shè)備平臺層:就是中間件層包括tomcat、MySQL、Redis、RocketMQ類似的軟件。應(yīng)用層:就是我們的業(yè)務(wù)軟件,包括各種業(yè)務(wù)服務(wù)。接入層:就是接入用戶請求的網(wǎng)關(guān)、負(fù)載均衡、CDN、DNS等。

二、微服務(wù)

1、什么是微服務(wù)

微服務(wù)是一種軟件架構(gòu)風(fēng)格,是一種分布式架構(gòu)解決方案,簡單點就是將整體大應(yīng)用,基于業(yè)務(wù)劃分為更加微小的服務(wù)。然后作為獨立的進程進行開發(fā)、測試、部署、運行、維護,每個服務(wù)都具備獨立的自治能力。

微服務(wù)架構(gòu)具有以下特點:

服務(wù)拆分:微服務(wù)架構(gòu)將應(yīng)用程序拆分成多個小型的服務(wù),每個服務(wù)都專注于特定的業(yè)務(wù)功能。這種拆分使得每個服務(wù)可以獨立開發(fā)、部署和擴展,從而提高了開發(fā)效率和系統(tǒng)的靈活性。獨立部署:每個微服務(wù)都可以獨立部署,這意味著當(dāng)一個服務(wù)需要更新或修復(fù)時,只需要重新部署該服務(wù),而不需要重新部署整個應(yīng)用程序。這種獨立部署的特性可以減少對整個系統(tǒng)的影響,并提高了系統(tǒng)的可用性。松耦合:微服務(wù)架構(gòu)通過輕量級的通信機制(如RESTful API或消息隊列)來實現(xiàn)服務(wù)之間的通信。這種松耦合的通信方式使得每個服務(wù)可以獨立演化,而不會對其他服務(wù)產(chǎn)生影響。同時,松耦合還使得每個服務(wù)可以使用不同的技術(shù)棧和編程語言,以滿足不同的需求??缮炜s性:由于每個微服務(wù)都是獨立部署的,因此可以根據(jù)需求對每個服務(wù)進行獨立的擴展。這種可伸縮性使得系統(tǒng)可以根據(jù)負(fù)載的變化來動態(tài)調(diào)整資源的分配,從而提高系統(tǒng)的性能和可用性。

2、微服務(wù)架構(gòu)誕生的背景

服務(wù)太大了太臃腫,容易產(chǎn)生單點故障,更新迭代也比較慢,所以要拆成若干個小系統(tǒng),然后進行分而治之。這樣分了之后,可以把每個服務(wù)作為一個獨立的開發(fā)項目,由小團隊進行快速開發(fā)、迭代升級。

3、為什么需要微服務(wù)架構(gòu)

微服務(wù)架構(gòu)是從soa架構(gòu)模式演變過來的,比SOA架構(gòu)對服務(wù)拆分的粒度更加精細(xì),讓業(yè)務(wù)界限更加清晰

SOA 早期均使用了總線模式,這種總線模式是與某種技術(shù)棧強綁定的,比如:J2EE。這導(dǎo)致很多企業(yè)的遺留系統(tǒng)很難對接,切換時間太長,成本太高,新系統(tǒng)穩(wěn)定性的收斂也需要一些時間,最終 SOA 看起來很美,但卻成為了企業(yè)級奢侈品,中小公司都望而生畏。此外,實施SOA時會遇到很多問題,比如通信協(xié)議(例如SOAP)的選擇、第三方中間件如何選擇、服務(wù)粒度如何確定等,目前也存在一些關(guān)于如何劃分系統(tǒng)的指導(dǎo)性原則,但其中有很多都是錯誤的。SOA并沒有告訴你如何將單體應(yīng)用劃分成微服務(wù),所以在實施SOA時會遇到很多問題。傳統(tǒng)企業(yè)或者很多企業(yè)的軟件,大多不止一套系統(tǒng),都是各個獨立大系統(tǒng)的堆砌。通常存在擴展性差、可靠性不高、維護成本大、重復(fù)輪子很多等問題。

對于上述這些問題,可以想到的解決方案有:組件化、服務(wù)化。 微服務(wù)架構(gòu)將各個組件或者模塊分散到各個服務(wù)中,對整個系統(tǒng)實現(xiàn)解耦。那微服務(wù)架構(gòu)強調(diào)的重中之重就是業(yè)務(wù)系統(tǒng)需要完善的組件化和服務(wù)化。

組件化:將一個大系統(tǒng),按照一定的業(yè)務(wù)或者技術(shù)維度關(guān)注形式,拆分成獨立的組件。目的是為了分而治之,為了可重用,為了減少耦合度。比如按照技術(shù)維度:搜索組件、緩存組件;按照業(yè)務(wù)維度:用戶中心、支付中心等服務(wù)化:是一種以服務(wù)為中心的解決方案:服務(wù)注冊、服務(wù)發(fā)布、服務(wù)調(diào)用、服務(wù)監(jiān)控、服務(wù)負(fù)載均衡等。核心就是不同服務(wù)之間的通信。服務(wù)化之前:代碼重復(fù)、可維護性低、DB 訪問耦合等。服務(wù)化后的好處:調(diào)用簡單、代碼復(fù)用、業(yè)務(wù)隔離、數(shù)據(jù)庫解耦等

4、微服務(wù)架構(gòu)存在的問題

服務(wù)注冊與發(fā)現(xiàn): 微服務(wù)之間相互調(diào)用完成整體業(yè)務(wù)功能,需要考慮如何在眾多微服務(wù)中找到正確的目標(biāo)服務(wù)地址。 這就是所謂「服務(wù)發(fā)現(xiàn)」功能,常用的做法是:

服務(wù)提供方啟動的時候把自己的地址上報給「服務(wù)注冊中心」,這就是「服務(wù)注冊」。服務(wù)調(diào)用方「訂閱」服務(wù)變更「通知」,動態(tài)的接收服務(wù)注冊中心推送的服務(wù)地址列表,以后想找哪個服務(wù)直接發(fā)給他就可以。分布式服務(wù)注冊與發(fā)現(xiàn)(eureka、consul、zookeeper、Nacos)分布式事務(wù)解決方案(rabbitmq、rocketmq事務(wù)消息、lnc(淘汰)、setata)最終一致性概念分布式任務(wù)調(diào)度平臺(XXL-Job、AlibabaCloud Scheduler、elastic-job)

運維成本: 微服務(wù)將系統(tǒng)分成多個獨立的部分,每個部分都是可以獨立部署的業(yè)務(wù)單元。這就意味著,在微服務(wù)架構(gòu)下,隨著服務(wù)數(shù)量的增多,每個服務(wù)都需要獨立的配置、部署、監(jiān)控、日志收集等,因此成本呈指數(shù)級增長。

這就需要我們有一套完備的服務(wù)監(jiān)控體系,包括拓?fù)潢P(guān)系、監(jiān)控(Metrics)、日志監(jiān)控(Logging)、調(diào)用追蹤(Trace)、告警通知、健康檢查等,防患于未然。分布式日志采集系統(tǒng)elk+kafka分布式服務(wù)追蹤與調(diào)用鏈系統(tǒng)Zipkin

部署自動化: 對于微服務(wù)架構(gòu)而言,每個服務(wù)都是一個獨立可部署的業(yè)務(wù)單元,每個服務(wù)的修改都需要獨立部署。如何有效地構(gòu)建自動化部署流水線,降低部署成本、提高部署頻率,是微服務(wù)架構(gòu)下需要面臨的一個挑戰(zhàn)。

分布式服務(wù)配置中心(springcloud config/nacos/disconfig/攜程阿波羅)

服務(wù)容錯: 生產(chǎn)環(huán)境復(fù)雜多變,服務(wù)運行過程中不可避免的發(fā)生各種故障(宕機、過載等等),需要引入「熔斷、隔離、限流和降級、超時機制」等「服務(wù)容錯」機制來保證服務(wù)持續(xù)可用性。 微服務(wù)是拆分成多個服務(wù)進行部署,服務(wù)間的通信都是通過網(wǎng)絡(luò),此時的性能會受影響。同時可靠性也會受影響。數(shù)據(jù)一致性也需要嚴(yán)格控制,其成本也比單塊系統(tǒng)高。 服務(wù)治理: 由于微服務(wù)架構(gòu)是把系統(tǒng)拆分為若干個可獨立部署的服務(wù),所以需要:

進行服務(wù)間的依賴測試:在服務(wù)數(shù)量較多的情況下,如何有效地保證服務(wù)之間能有效按照接口的約定正常工作,成為微服務(wù)實施過程中必須面臨的巨大挑戰(zhàn)。隨著微服務(wù)個數(shù)的增多,如何清晰有效地展示服務(wù)之間的依賴關(guān)系,成為了一個挑戰(zhàn)。

服務(wù)安全: 有些服務(wù)的敏感數(shù)據(jù)存在安全問題,「服務(wù)安全」就是對敏感服務(wù)采用安全鑒權(quán)機制,對服務(wù)的訪問需要進行相應(yīng)的身份驗證和授權(quán),防止數(shù)據(jù)泄露的風(fēng)險。

DevOps 與組織結(jié)構(gòu): 傳統(tǒng)單塊架構(gòu)中,團隊通常是按技能劃分,如開發(fā)部、測試部、運維部,并通過項目的方式協(xié)作,完成系統(tǒng)交付。而在微服務(wù)架構(gòu)的實施過程中,在組織或者團隊層面,如何傳遞 DevOps 文化的價值,讓團隊理解 DevOps 文化的價值,并構(gòu)建全功能團隊,也是一個不小的挑戰(zhàn)。

微服務(wù)不僅表現(xiàn)出一種架構(gòu)模型,同樣也表現(xiàn)出一種組織模型。這種新型的組織模型意味著開發(fā)人員和運維的角色發(fā)生了變化,開發(fā)者將承擔(dān)起服務(wù)整個生命周期的責(zé)任,包括部署和監(jiān)控,而運維也越來越多地表現(xiàn)出一種顧問式的角色,盡早考慮服務(wù)如何部署。因此,如何在微服務(wù)的實施中,按需調(diào)整組織架構(gòu),構(gòu)建全功能的團隊,是一個不小的挑戰(zhàn)。

5、微服務(wù)架構(gòu)的優(yōu)點

技術(shù)異構(gòu)性: 不同服務(wù)內(nèi)部的開發(fā)技術(shù)可以不一致,你可以用java來開發(fā)helloworld服務(wù)A,用golang來開發(fā)helloworld服務(wù)B。 為不同的服務(wù)選擇最適合該服務(wù)的技術(shù),系統(tǒng)中不同部分也可以使用不同的存儲技術(shù),比如A服務(wù)可以選擇redis存儲,B服務(wù)你可以選擇用MySQL存儲,這都是允許的。隔離性: 一個服務(wù)不可用不會導(dǎo)致另一個服務(wù)也癱瘓,因為各個服務(wù)是相互獨立和自治的系統(tǒng)。 這在單體應(yīng)用程序中是做不到的,單體應(yīng)用程序中某個模塊癱瘓,必將導(dǎo)致整個系統(tǒng)不可用,當(dāng)然,單體程序也可以在不同機器上部署同樣的程序來實現(xiàn)備份,不過,同樣存在資源浪費問題。可擴展性: 可以只對那些影響性能的服務(wù)做擴展升級,這樣對癥下藥的效果是很好的。 龐大的單體服務(wù)如果出現(xiàn)性能瓶頸只能對軟件整體進行擴展,可能真正影響性能的只是其中一個很小的模塊,我們也不得不付出升級整個應(yīng)用的代價,這在微服務(wù)架構(gòu)中得到了改善。簡化部署: 在微服務(wù)架構(gòu)中,各個服務(wù)的部署是獨立的,如果真出了問題也只是影響單個服務(wù),可以快速回滾版本解決。 如果你的服務(wù)是一個超大的單體服務(wù),有幾百萬行代碼,即使修改了幾行代碼也要重新編譯整個應(yīng)用,這顯然是非常繁瑣的,而且軟件變更帶來的不確定性非常高,軟件部署的影響也非常大。易優(yōu)化: 微服務(wù)架構(gòu)中單個服務(wù)的代碼量不會很大,這樣當(dāng)你需要重構(gòu)或者優(yōu)化這部分服務(wù)的時候,就會容易很多,畢竟,代碼量越少意味著代碼改動帶來的影響越可控。

6、常見的微服務(wù)架構(gòu)

Dubbo Dubbo是阿里巴巴開源的基于 Java 的高性能 RPC(一種遠(yuǎn)程調(diào)用) 分布式服務(wù)框架(SOA),致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。 Dubbo 提供的基礎(chǔ)能力包括: 服務(wù)發(fā)現(xiàn)、流式通信、負(fù)載均衡、流量治理等等。 提供的通信模型: 同步的 Request-Response (默認(rèn))、消費端異步請求、提供端異步執(zhí)行、消費端請求流、提供端響應(yīng)流、雙向流式通信。 Dubbo 提供的是 Client-Based 的服務(wù)發(fā)現(xiàn)機制,使用者可以有多種方式啟用服務(wù)發(fā)現(xiàn):

使用獨立的注冊中心組件,如 Nacos、Zookeeper、Consul、Etcd 等。將服務(wù)的組織與注冊交給底層容器平臺,如 Kubernetes。

部署架構(gòu): 為了在分布式環(huán)境下實現(xiàn)各個微服務(wù)組件間的協(xié)作, Dubbo 定義了一些中心化組件。

注冊中心配置中心元數(shù)據(jù)中心

Tars 騰訊內(nèi)部使用的微服務(wù)架構(gòu) TAF(Total Application Framework)多年的實踐成果總結(jié)而成的開源項目。 僅支持 C++ 語言,目前在騰訊內(nèi)部應(yīng)用也非常廣泛。2017 年對外開源,僅支持 C++ 語言。 gRPC 是Google開發(fā)的高性能、通用的開源RPC框架,其由Google主要面向移動應(yīng)用開發(fā)并基于HTTP/2協(xié)議標(biāo)準(zhǔn)而設(shè)計,基于ProtoBuf(Protocol Buffers)序列化協(xié)議開發(fā)。 本身它不是分布式的,所以要實現(xiàn)上面的框架的功能需要進一步的開發(fā)。2015 年對外開源的跨語言 RPC 框架,支持多種語言。

thrift 最初是由 Facebook 開發(fā)的內(nèi)部系統(tǒng)跨語言的高性能 RPC 框架,2007 年貢獻(xiàn)給了 Apache 基金,成為 Apache 開源項目之一, 跟 gRPC 一樣,Thrift 也有一套自己的接口定義語言 IDL,可以通過代碼生成器,生成各種編程語言的 Client 端和 Server 端的 SDK 代碼,支持多種語言。

微服務(wù)框架與RPC

什么是RPC? RPC (Remote Procedure Call)遠(yuǎn)程過程調(diào)用是一個計算機通信協(xié)議。我們一般的程序調(diào)用是本地程序內(nèi)部的調(diào)用,RPC允許你像調(diào)用本地函數(shù)一樣去調(diào)用另一個程序的函數(shù),這中間會涉及網(wǎng)絡(luò)通信和進程間通信,但你無需知道實現(xiàn)細(xì)節(jié),RPC框架為你屏蔽了底層實現(xiàn)。 RPC是一種服務(wù)器-客戶端(Client/Server)模式,經(jīng)典實現(xiàn)是一個通過發(fā)送請求-接受回應(yīng)進行信息交互的系統(tǒng)。 兩者關(guān)系: 微服務(wù)框架一般都包含了RPC的實現(xiàn)和一系列「服務(wù)治理」能力,是一套軟件開發(fā)框架。我們可以基于這個框架之上實現(xiàn)自己的微服務(wù),方便的利用微服務(wù)框架提供的「服務(wù)治理」能力和RPC能力,所以微服務(wù)框架也被有些人稱作RPC框架。

三、分布式架構(gòu)和微服務(wù)架構(gòu)的區(qū)別

分布式架構(gòu)和微服務(wù)架構(gòu)是兩種不同的架構(gòu)模式,它們在設(shè)計和實現(xiàn)上有一些明顯的區(qū)別。下面是它們之間的對比:

分布式架構(gòu)微服務(wù)架構(gòu)定義分布式架構(gòu)是將一個大型系統(tǒng)劃分為多個獨立的模塊,這些模塊可以在不同的服務(wù)器上運行,通過網(wǎng)絡(luò)進行通信。微服務(wù)架構(gòu)是一種將應(yīng)用程序劃分為一組小型、獨立的服務(wù)的架構(gòu),每個服務(wù)都可以獨立部署、擴展和維護。系統(tǒng)復(fù)雜性分布式架構(gòu)通常需要更多的協(xié)調(diào)和管理,因為不同的模塊需要通過網(wǎng)絡(luò)進行通信和協(xié)調(diào)。微服務(wù)架構(gòu)通過將系統(tǒng)拆分為小型服務(wù),降低了系統(tǒng)的復(fù)雜性,每個服務(wù)可以獨立開發(fā)和部署。擴展性分布式架構(gòu)通常需要在整個系統(tǒng)上進行擴展,當(dāng)系統(tǒng)的負(fù)載增加時,需要增加整個系統(tǒng)的資源。微服務(wù)架構(gòu)允許對系統(tǒng)的不同服務(wù)進行獨立的擴展,當(dāng)某個服務(wù)的負(fù)載增加時,只需增加該服務(wù)的資源??删S護性分布式架構(gòu)的模塊間的依賴關(guān)系較強,當(dāng)一個模塊發(fā)生變化時,可能會影響到其他模塊,導(dǎo)致維護困難。微服務(wù)架構(gòu)的每個服務(wù)都是獨立的,當(dāng)一個服務(wù)發(fā)生變化時,只需關(guān)注該服務(wù)的維護,不會影響其他服務(wù)。部署分布式架構(gòu)需要將整個系統(tǒng)一起部署,當(dāng)一個模塊發(fā)生變化時,需要重新部署整個系統(tǒng)。微服務(wù)架構(gòu)允許每個服務(wù)獨立部署,當(dāng)某個服務(wù)發(fā)生變化時,只需重新部署該服務(wù)。

柚子快報激活碼778899分享:【架構(gòu)】分布式與微服務(wù)架構(gòu)解析

http://yzkb.51969.com/

精彩鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19302970.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄