亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分布式服務(wù)架構(gòu)

cjie / 3418人閱讀

摘要:什么是分布式系統(tǒng)從進(jìn)程角度看兩個(gè)程序分別運(yùn)行在兩臺(tái)主機(jī)的進(jìn)程上它們相互協(xié)作最終完成同一個(gè)服務(wù)那么理論上這兩個(gè)程序所組成的系統(tǒng)可以稱作分布式系統(tǒng)當(dāng)然這兩個(gè)程序可以是不同的程序可以是相同的程序如果是相同的程序我們又可以稱為集群所謂集群就是將相同

什么是分布式系統(tǒng)

從進(jìn)程角度看, 兩個(gè)程序分別運(yùn)行在兩臺(tái)主機(jī)的進(jìn)程上, 它們相互協(xié)作最終完成同一個(gè)服務(wù), 那么理論上這兩個(gè)程序所組成的系統(tǒng), 可以稱作"分布式系統(tǒng)".

當(dāng)然, 這兩個(gè)程序可以是不同的程序, 可以是相同的程序. 如果是相同的程序, 我們又可以稱為 "集群". 所謂集群, 就是將相同的程序, 通過不斷橫向擴(kuò)展, 以提高服務(wù)能力的方式.

應(yīng)用框架演進(jìn) 服務(wù)化架構(gòu)

上圖的 web app 服務(wù)是單體化的, 所有組件耦合在一個(gè)開發(fā)項(xiàng)目中, 并且配置和運(yùn)行在一個(gè) JVM 進(jìn)程中. 如果某個(gè)組件需要升級(jí)上線, 則會(huì)導(dǎo)致其他沒有變更的組件同樣上線.

而且無法滿足高并發(fā)請(qǐng)求處理, 水平擴(kuò)展能力也很有限的.

為了解決上述問題, SOA 出現(xiàn)了. SOA 代表面向服務(wù)的架構(gòu), 俗稱服務(wù)化. SOA 將應(yīng)用程序的模塊化組件通過定義明確的接口和協(xié)議聯(lián)系起來, 接口是采用中立的方式進(jìn)行定義的, 獨(dú)立于某種語言、硬件和操作系統(tǒng), 通常通過網(wǎng)絡(luò)通信來完成, 但是并不局限于某種網(wǎng)絡(luò)協(xié)議, 可以是底層的 TCP/IP, 可以是應(yīng)用層的 HTTP, 也可以是消息隊(duì)列協(xié)議, 甚至可以是來約定的某種數(shù)據(jù)庫存儲(chǔ)信息.

這使得各種各樣的系統(tǒng)中的模塊化組件可以以一種統(tǒng)一和通用的方式進(jìn)行交互.

SOA 將模塊化組件從單一進(jìn)程中進(jìn)一步拆分, 通過某種網(wǎng)絡(luò)協(xié)議形成獨(dú)立的對(duì)外提供服務(wù)的網(wǎng)絡(luò)化組件, 這種架構(gòu)下的特點(diǎn)如下:

SOA 定義了良好的對(duì)外接口, 通過網(wǎng)絡(luò)協(xié)議對(duì)外提供服務(wù), 服務(wù)之間表現(xiàn)為松耦合性.

某個(gè)服務(wù)的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)發(fā)生改變時(shí), 只要接口保持不變, 不影響整個(gè)流程對(duì)外提供服務(wù).

SOA 通過定義標(biāo)準(zhǔn)的對(duì)外接口, 可以讓多個(gè)使用方同時(shí)使用, 增加服務(wù)的可重用性.

SOA 可以讓企業(yè)最大化地使用內(nèi)部和外部地公共服務(wù), 避免重復(fù)造輪子.

要徹底理解 SOA 時(shí)代地服務(wù)化發(fā)展情況, 我們必須理解 SOA 的兩個(gè)主流實(shí)現(xiàn)方式: web service 和 ESB.

Web Service

Web Service 技術(shù)是 SOA 服務(wù)化的一種實(shí)現(xiàn)方式. 運(yùn)行在不同操作系統(tǒng)上的服務(wù)的互相發(fā)現(xiàn)和調(diào)用, 并且可以通過某種協(xié)議交換數(shù)據(jù).

上圖可以看到, 每個(gè)服務(wù)之間是對(duì)等的, 并且互相是解耦的, 通過 WSDL 定義的服務(wù)發(fā)現(xiàn)接口進(jìn)行訪問, 并通過 SOAP 協(xié)議進(jìn)行通信. SOAP 協(xié)議通常是一種在 HTTP 或者 HTTPS 通道上傳輸 XML 數(shù)據(jù)來實(shí)現(xiàn)的協(xié)議, 但是每個(gè)服務(wù)都要依賴中心化 Web Service 目錄來發(fā)現(xiàn)現(xiàn)存的服務(wù).

Web Service 的工作原理如下.

服務(wù)提供者 Web Service 2 和 Web Service 3 通過 UDDI 協(xié)議將服務(wù)注冊(cè)到 Web Service 目錄服務(wù)中.

服務(wù)消費(fèi)者 Web Service 1 通過 UDDI 協(xié)議從 Web Service 目錄中查詢服務(wù), 并獲得服務(wù)的 WSDL 服務(wù)描述文件.

服務(wù)消費(fèi)者 Web Service 1 通過 WSDL 語言遠(yuǎn)程調(diào)用和消費(fèi) Web Service 2 和 3 提供的服務(wù).

通過這個(gè)過程, 要改造一個(gè)新的業(yè)務(wù)流程, 可以從 Web Service 目錄中發(fā)現(xiàn)現(xiàn)有的服務(wù), 并最大限度地重用現(xiàn)有的服務(wù).

從服務(wù)化到微服務(wù)

隨著物聯(lián)網(wǎng)企業(yè)的不斷發(fā)展, 互聯(lián)網(wǎng)產(chǎn)品需要服務(wù)的用戶量逐漸增加, 海量用戶發(fā)起的大規(guī)模、高并發(fā)請(qǐng)求是企業(yè)不得不面對(duì)的.

前面介紹的 SOA 服務(wù)化系統(tǒng)能夠分解任務(wù), 讓每個(gè)服務(wù)更簡(jiǎn)單、職責(zé)單一、更易于擴(kuò)展, 但無論是 Web Service 還是 ESB, 都有時(shí)代遺留問題.

Web Service 的問題如下:

依賴中心化的服務(wù)發(fā)現(xiàn)機(jī)制.

使用 SOAP 通信協(xié)議, 通常使用 XML 格式來序列化通信數(shù)據(jù), XML 格式的數(shù)據(jù)冗余太大, 協(xié)議太重.

服務(wù)化管理和治理設(shè)施并不完善.

微服務(wù)架構(gòu)倡導(dǎo)將軟件應(yīng)用設(shè)計(jì)成多個(gè)可獨(dú)立開發(fā)、可配置、可運(yùn)行和可維護(hù)的子服務(wù), 子服務(wù)之間通過良好的接口定義通信機(jī)制, 通常使用 RESTful 風(fēng)格的 API 形式來通信, 因?yàn)?RESTful 風(fēng)格的 API 通常是在 HTTP 或者 HTTPS 通道上傳輸 JSON 格式的數(shù)據(jù)來實(shí)現(xiàn)的, HTTP 協(xié)議有跨語言、跨異構(gòu)系統(tǒng)的優(yōu)點(diǎn).

當(dāng)然, 也可以通過底層的二進(jìn)制協(xié)議、消息隊(duì)列協(xié)議等進(jìn)行交互.

這些服務(wù)不需要中心化的統(tǒng)一管理, 每個(gè)服務(wù)的功能可以自治, 并且可以由不同的語言、系統(tǒng)和平臺(tái)實(shí)現(xiàn).

微服務(wù)架構(gòu)與傳統(tǒng)單體架構(gòu)的對(duì)比

上圖我們可以得出如下結(jié)論:

微服務(wù)把每個(gè)職責(zé)單一的功能放在一個(gè)獨(dú)立的服務(wù)中.

每個(gè)服務(wù)運(yùn)行在一個(gè)多帶帶的進(jìn)程中.

每個(gè)服務(wù)有多個(gè)實(shí)例在運(yùn)行, 每個(gè)實(shí)例可以運(yùn)行在容器化平臺(tái)內(nèi), 達(dá)到平滑伸縮的效果.

每個(gè)服務(wù)有自己的數(shù)據(jù)存儲(chǔ), 實(shí)際上, 每個(gè)服務(wù)又該有自己獨(dú)享的數(shù)據(jù)庫、緩存、信息隊(duì)列等資源.

每個(gè)服務(wù)應(yīng)該有自己的運(yùn)營平臺(tái), 以及獨(dú)享的運(yùn)營人員, 這包括技術(shù)運(yùn)維和業(yè)務(wù)運(yùn)營人員; 每個(gè)服務(wù)都高度自治, 內(nèi)部的變化對(duì)外透明.

每個(gè)服務(wù)都可以根據(jù)性能需求獨(dú)立的進(jìn)行水平伸縮.

通過對(duì)比微服務(wù)與傳統(tǒng)單體架構(gòu), 我們得知傳統(tǒng)單體架構(gòu)具有如下特點(diǎn):

傳統(tǒng)單體架構(gòu)將所有模塊化組件混合后運(yùn)行在同一個(gè) JVM 進(jìn)程中.

可對(duì)包含多個(gè)模塊化組件的整體 JVM 進(jìn)程進(jìn)行水平擴(kuò)展, 而無法對(duì)某個(gè)模塊化組件進(jìn)行水平擴(kuò)展.

某個(gè)模塊化組件發(fā)生變化時(shí), 需要所有模塊化組件進(jìn)行編譯、打包、和上線.

久而久之, 模塊之間的依賴將會(huì)不清晰, 互相耦合、相互依賴成為家常便飯.

微服務(wù)架構(gòu)與 SOA 服務(wù)化的對(duì)比
微服務(wù)在 SOA 服務(wù)化的基礎(chǔ)上進(jìn)行演進(jìn)和疊加, 形成了適合現(xiàn)代化應(yīng)用場(chǎng)景的一個(gè)方法論.

1.目的不同

SOA 服務(wù)化涉及的范圍更廣一些, 強(qiáng)調(diào)不同的異構(gòu)服務(wù)之間的協(xié)作和協(xié)議, 并強(qiáng)調(diào)有效集成、業(yè)務(wù)流程編排、歷史應(yīng)用集成等, 典型代表 Web Service 和 ESB.

微服務(wù)使用一系列的微小服務(wù)來實(shí)現(xiàn)整體的業(yè)務(wù)流程, 目的是有效的拆分應(yīng)用, 實(shí)現(xiàn)敏捷開發(fā)和部署, 在每個(gè)微小服務(wù)的團(tuán)隊(duì)里, 減少了跨團(tuán)的溝通, 讓專業(yè)的人做專業(yè)的事, 縮小變更和迭代影響的范圍, 并達(dá)到單一微服務(wù)更容易水平擴(kuò)展的目的.

2.部署方式不同

微服務(wù)將完整的應(yīng)用拆分成多個(gè)細(xì)小的服務(wù), 通常使用敏捷擴(kuò)容、縮容的 Docker 技術(shù)來實(shí)現(xiàn)自動(dòng)化的容器管理, 每個(gè)微服務(wù)運(yùn)行在單一的進(jìn)程內(nèi), 微服務(wù)中的部署互相獨(dú)立、互不影響.

SOA 服務(wù)化通常將多個(gè)業(yè)務(wù)服務(wù)通過組件化模塊方式打包在一個(gè) war 包里, 然后統(tǒng)一部署在一個(gè)應(yīng)用服務(wù)器上.

3.服務(wù)粒度不同

微服務(wù)倡導(dǎo)將服務(wù)拆分成更細(xì)的粒度, 通過多個(gè)服務(wù)組合來實(shí)現(xiàn)業(yè)務(wù)流程的處理, 拆分到職責(zé)單一, 甚至小到不能再進(jìn)行拆分.

SOA 對(duì)粒度沒有要求, 在實(shí)戰(zhàn)中服務(wù)通常是粗粒度的, 強(qiáng)調(diào)接口協(xié)議的規(guī)范化, 內(nèi)部實(shí)現(xiàn)可以更粗顆粒.

總結(jié)

微服務(wù)是新一代分布式架構(gòu).

每個(gè)服務(wù)運(yùn)行在單一的進(jìn)程內(nèi), 獨(dú)立部署、互不影響.

每個(gè)服務(wù)拆分到職責(zé)單一、甚至小到不能在拆分.

每個(gè)服務(wù)有自己獨(dú)享的數(shù)據(jù)庫、緩存、信息隊(duì)列等資源.

每個(gè)服務(wù)有自己的運(yùn)營平臺(tái); 每個(gè)服務(wù)都高度自治, 內(nèi)部的變化對(duì)外透明.

每個(gè)服務(wù)可以通過 HTTP 或底層的二進(jìn)制協(xié)議、消息隊(duì)列協(xié)議等進(jìn)行交互.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72865.html

相關(guān)文章

  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評(píng)論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    tommego 評(píng)論0 收藏0
  • 服務(wù)與Spring Cloud概述

    摘要:微服務(wù)架構(gòu)概述應(yīng)用架構(gòu)的發(fā)展應(yīng)用是可獨(dú)立運(yùn)行的程序代碼,提供相對(duì)完善的業(yè)務(wù)功能。阿里開源的是的典型實(shí)現(xiàn)。它目前由官方開發(fā)維護(hù),基于開發(fā),提供一套完整的微服務(wù)解決方案。 微服務(wù)與Spring Cloud 隨著互聯(lián)網(wǎng)的快速發(fā)展, 云計(jì)算近十年也得到蓬勃發(fā)展, 企業(yè)的IT環(huán)境和IT架構(gòu)也逐漸在發(fā)生變革,從過去的單體應(yīng)用架構(gòu)發(fā)展為至今廣泛流行的微服務(wù)架構(gòu)。 微服務(wù)是一種架構(gòu)風(fēng)格, 能給軟件應(yīng)用...

    scwang90 評(píng)論0 收藏0
  • #yyds干貨盤點(diǎn)#帶你統(tǒng)一認(rèn)識(shí)一下系統(tǒng)架構(gòu)及分析和總結(jié)

    摘要:缺點(diǎn)系統(tǒng)依賴復(fù)雜,給開發(fā)測(cè)試部署帶來不便,分布式數(shù)據(jù)一致性和分布式事務(wù)支持困難,一般通過最終一致性簡(jiǎn)化解決。微服務(wù)架構(gòu)分成三種實(shí)現(xiàn)模式。事件驅(qū)動(dòng)架構(gòu)事件是狀態(tài)發(fā)生變化時(shí),軟件發(fā)出的通知。事件驅(qū)動(dòng)架構(gòu)的四個(gè)部分事件隊(duì)列接收事件的入口。 架構(gòu)的規(guī)劃誰架構(gòu)就是對(duì)系統(tǒng)中的實(shí)體以及實(shí)體之間的關(guān)系所進(jìn)行的抽象描述,是決策。...

    warkiz 評(píng)論0 收藏0
  • 進(jìn)階Java架構(gòu)師必看的15本書

    摘要:阿里巴巴的共享服務(wù)理念以及企業(yè)級(jí)互聯(lián)網(wǎng)架構(gòu)建設(shè)的思路,給這些企業(yè)帶來了不少新的思路,這也是我最終決定寫這本書的最主要原因。盡在雙阿里巴巴技術(shù)演進(jìn)與超越是迄今唯一由阿里巴巴集團(tuán)官方出品全面闡述雙八年以來在技術(shù)和商業(yè)上演進(jìn)和創(chuàng)新歷程的書籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型網(wǎng)站技術(shù)架構(gòu):核...

    Julylovin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<