摘要:什么是分布式系統(tǒng)從進程角度看兩個程序分別運行在兩臺主機的進程上它們相互協(xié)作最終完成同一個服務那么理論上這兩個程序所組成的系統(tǒng)可以稱作分布式系統(tǒng)當然這兩個程序可以是不同的程序可以是相同的程序如果是相同的程序我們又可以稱為集群所謂集群就是將相同
什么是分布式系統(tǒng)
從進程角度看, 兩個程序分別運行在兩臺主機的進程上, 它們相互協(xié)作最終完成同一個服務, 那么理論上這兩個程序所組成的系統(tǒng), 可以稱作"分布式系統(tǒng)".
當然, 這兩個程序可以是不同的程序, 可以是相同的程序. 如果是相同的程序, 我們又可以稱為 "集群". 所謂集群, 就是將相同的程序, 通過不斷橫向擴展, 以提高服務能力的方式.
應用框架演進 服務化架構上圖的 web app 服務是單體化的, 所有組件耦合在一個開發(fā)項目中, 并且配置和運行在一個 JVM 進程中. 如果某個組件需要升級上線, 則會導致其他沒有變更的組件同樣上線.
而且無法滿足高并發(fā)請求處理, 水平擴展能力也很有限的.
為了解決上述問題, SOA 出現了. SOA 代表面向服務的架構, 俗稱服務化. SOA 將應用程序的模塊化組件通過定義明確的接口和協(xié)議聯系起來, 接口是采用中立的方式進行定義的, 獨立于某種語言、硬件和操作系統(tǒng), 通常通過網絡通信來完成, 但是并不局限于某種網絡協(xié)議, 可以是底層的 TCP/IP, 可以是應用層的 HTTP, 也可以是消息隊列協(xié)議, 甚至可以是來約定的某種數據庫存儲信息.
這使得各種各樣的系統(tǒng)中的模塊化組件可以以一種統(tǒng)一和通用的方式進行交互.
SOA 將模塊化組件從單一進程中進一步拆分, 通過某種網絡協(xié)議形成獨立的對外提供服務的網絡化組件, 這種架構下的特點如下:
SOA 定義了良好的對外接口, 通過網絡協(xié)議對外提供服務, 服務之間表現為松耦合性.
某個服務的內部結構和實現發(fā)生改變時, 只要接口保持不變, 不影響整個流程對外提供服務.
SOA 通過定義標準的對外接口, 可以讓多個使用方同時使用, 增加服務的可重用性.
SOA 可以讓企業(yè)最大化地使用內部和外部地公共服務, 避免重復造輪子.
要徹底理解 SOA 時代地服務化發(fā)展情況, 我們必須理解 SOA 的兩個主流實現方式: web service 和 ESB.
Web Service
Web Service 技術是 SOA 服務化的一種實現方式. 運行在不同操作系統(tǒng)上的服務的互相發(fā)現和調用, 并且可以通過某種協(xié)議交換數據.
上圖可以看到, 每個服務之間是對等的, 并且互相是解耦的, 通過 WSDL 定義的服務發(fā)現接口進行訪問, 并通過 SOAP 協(xié)議進行通信. SOAP 協(xié)議通常是一種在 HTTP 或者 HTTPS 通道上傳輸 XML 數據來實現的協(xié)議, 但是每個服務都要依賴中心化 Web Service 目錄來發(fā)現現存的服務.
Web Service 的工作原理如下.
服務提供者 Web Service 2 和 Web Service 3 通過 UDDI 協(xié)議將服務注冊到 Web Service 目錄服務中.
服務消費者 Web Service 1 通過 UDDI 協(xié)議從 Web Service 目錄中查詢服務, 并獲得服務的 WSDL 服務描述文件.
服務消費者 Web Service 1 通過 WSDL 語言遠程調用和消費 Web Service 2 和 3 提供的服務.
通過這個過程, 要改造一個新的業(yè)務流程, 可以從 Web Service 目錄中發(fā)現現有的服務, 并最大限度地重用現有的服務.
從服務化到微服務隨著物聯網企業(yè)的不斷發(fā)展, 互聯網產品需要服務的用戶量逐漸增加, 海量用戶發(fā)起的大規(guī)模、高并發(fā)請求是企業(yè)不得不面對的.
前面介紹的 SOA 服務化系統(tǒng)能夠分解任務, 讓每個服務更簡單、職責單一、更易于擴展, 但無論是 Web Service 還是 ESB, 都有時代遺留問題.
Web Service 的問題如下:
依賴中心化的服務發(fā)現機制.
使用 SOAP 通信協(xié)議, 通常使用 XML 格式來序列化通信數據, XML 格式的數據冗余太大, 協(xié)議太重.
服務化管理和治理設施并不完善.
微服務架構倡導將軟件應用設計成多個可獨立開發(fā)、可配置、可運行和可維護的子服務, 子服務之間通過良好的接口定義通信機制, 通常使用 RESTful 風格的 API 形式來通信, 因為 RESTful 風格的 API 通常是在 HTTP 或者 HTTPS 通道上傳輸 JSON 格式的數據來實現的, HTTP 協(xié)議有跨語言、跨異構系統(tǒng)的優(yōu)點.
當然, 也可以通過底層的二進制協(xié)議、消息隊列協(xié)議等進行交互.
這些服務不需要中心化的統(tǒng)一管理, 每個服務的功能可以自治, 并且可以由不同的語言、系統(tǒng)和平臺實現.
微服務架構與傳統(tǒng)單體架構的對比上圖我們可以得出如下結論:
微服務把每個職責單一的功能放在一個獨立的服務中.
每個服務運行在一個多帶帶的進程中.
每個服務有多個實例在運行, 每個實例可以運行在容器化平臺內, 達到平滑伸縮的效果.
每個服務有自己的數據存儲, 實際上, 每個服務又該有自己獨享的數據庫、緩存、信息隊列等資源.
每個服務應該有自己的運營平臺, 以及獨享的運營人員, 這包括技術運維和業(yè)務運營人員; 每個服務都高度自治, 內部的變化對外透明.
每個服務都可以根據性能需求獨立的進行水平伸縮.
通過對比微服務與傳統(tǒng)單體架構, 我們得知傳統(tǒng)單體架構具有如下特點:
傳統(tǒng)單體架構將所有模塊化組件混合后運行在同一個 JVM 進程中.
可對包含多個模塊化組件的整體 JVM 進程進行水平擴展, 而無法對某個模塊化組件進行水平擴展.
某個模塊化組件發(fā)生變化時, 需要所有模塊化組件進行編譯、打包、和上線.
久而久之, 模塊之間的依賴將會不清晰, 互相耦合、相互依賴成為家常便飯.
微服務架構與 SOA 服務化的對比微服務在 SOA 服務化的基礎上進行演進和疊加, 形成了適合現代化應用場景的一個方法論.
1.目的不同
SOA 服務化涉及的范圍更廣一些, 強調不同的異構服務之間的協(xié)作和協(xié)議, 并強調有效集成、業(yè)務流程編排、歷史應用集成等, 典型代表 Web Service 和 ESB.
微服務使用一系列的微小服務來實現整體的業(yè)務流程, 目的是有效的拆分應用, 實現敏捷開發(fā)和部署, 在每個微小服務的團隊里, 減少了跨團的溝通, 讓專業(yè)的人做專業(yè)的事, 縮小變更和迭代影響的范圍, 并達到單一微服務更容易水平擴展的目的.
2.部署方式不同
微服務將完整的應用拆分成多個細小的服務, 通常使用敏捷擴容、縮容的 Docker 技術來實現自動化的容器管理, 每個微服務運行在單一的進程內, 微服務中的部署互相獨立、互不影響.
SOA 服務化通常將多個業(yè)務服務通過組件化模塊方式打包在一個 war 包里, 然后統(tǒng)一部署在一個應用服務器上.
3.服務粒度不同
微服務倡導將服務拆分成更細的粒度, 通過多個服務組合來實現業(yè)務流程的處理, 拆分到職責單一, 甚至小到不能再進行拆分.
SOA 對粒度沒有要求, 在實戰(zhàn)中服務通常是粗粒度的, 強調接口協(xié)議的規(guī)范化, 內部實現可以更粗顆粒.
總結微服務是新一代分布式架構.
每個服務運行在單一的進程內, 獨立部署、互不影響.
每個服務拆分到職責單一、甚至小到不能在拆分.
每個服務有自己獨享的數據庫、緩存、信息隊列等資源.
每個服務有自己的運營平臺; 每個服務都高度自治, 內部的變化對外透明.
每個服務可以通過 HTTP 或底層的二進制協(xié)議、消息隊列協(xié)議等進行交互.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72865.html
摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經常被問到的持久化與恢復實現故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數據恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...
摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經常被問到的持久化與恢復實現故障恢復自動化詳解哨兵技術查漏補缺最易錯過的技術要點大掃盲意外宕機不難解決,但你真的懂數據恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...
摘要:微服務架構概述應用架構的發(fā)展應用是可獨立運行的程序代碼,提供相對完善的業(yè)務功能。阿里開源的是的典型實現。它目前由官方開發(fā)維護,基于開發(fā),提供一套完整的微服務解決方案。 微服務與Spring Cloud 隨著互聯網的快速發(fā)展, 云計算近十年也得到蓬勃發(fā)展, 企業(yè)的IT環(huán)境和IT架構也逐漸在發(fā)生變革,從過去的單體應用架構發(fā)展為至今廣泛流行的微服務架構。 微服務是一種架構風格, 能給軟件應用...
摘要:缺點系統(tǒng)依賴復雜,給開發(fā)測試部署帶來不便,分布式數據一致性和分布式事務支持困難,一般通過最終一致性簡化解決。微服務架構分成三種實現模式。事件驅動架構事件是狀態(tài)發(fā)生變化時,軟件發(fā)出的通知。事件驅動架構的四個部分事件隊列接收事件的入口。 架構的規(guī)劃誰架構就是對系統(tǒng)中的實體以及實體之間的關系所進行的抽象描述,是決策。...
摘要:阿里巴巴的共享服務理念以及企業(yè)級互聯網架構建設的思路,給這些企業(yè)帶來了不少新的思路,這也是我最終決定寫這本書的最主要原因。盡在雙阿里巴巴技術演進與超越是迄今唯一由阿里巴巴集團官方出品全面闡述雙八年以來在技術和商業(yè)上演進和創(chuàng)新歷程的書籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型網站技術架構:核...
閱讀 3053·2023-04-26 00:40
閱讀 2391·2021-09-27 13:47
閱讀 4196·2021-09-07 10:22
閱讀 2965·2021-09-06 15:02
閱讀 3306·2021-09-04 16:45
閱讀 2483·2021-08-11 10:23
閱讀 3598·2021-07-26 23:38
閱讀 2899·2019-08-30 15:54