<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微服務第一講

          共 1455字,需瀏覽 3分鐘

           ·

          2021-05-08 02:35

          什么是微服務

          微服務的概念定義沒有特別官方的統(tǒng)一語言,參考Chris Richardson的《MicroServicesPatterns》一書中的定義:把應用程序功能性分解為一組服務的架構風格。

          這個概念是通過MartinAbbott和Michael Fisher的名著《The Art of Scalability》中描述的三位可擴展模型(擴展立方體)而來。


          8f23aadb3b16358ad01c3651959f170d.webp

          • X軸擴展:在多個實例之間實現(xiàn)請求的負載均衡??梢院唵卫斫馔ㄟ^負載均衡對某個應用實現(xiàn)水平擴容。

          • Y軸擴展:根據(jù)功能把應用拆分為服務。也就是單體應用到微服務的演變。

          • Z軸擴展:根據(jù)請求的屬性路由請求??梢院唵卫斫鉃槁酚删W(wǎng)關,根據(jù)不同的緯度將交易路由到指定的應用服務上。


          X軸和Z軸擴展有效地提升了應用的吞吐量和可用性,Y軸擴展解決了單體煉獄問題。
          微服務與單體服務的對比

          優(yōu)點

          缺點

          單體服務

          應用開發(fā)簡單

          過度臃腫造成復雜性升高(臟泥球理論)

          易于對應用程序進行大規(guī)模的更改

          開發(fā)速度慢,交付周期變長

          測試相對簡單直觀

          很難保證交付質量

          部署簡單明了

          難以擴展(主要是基礎資源層面)

          橫向擴容成本較低(加一層負載均衡)

          需要長期依賴某個可能已經(jīng)過時的技術棧

          微服務

          使大型的復雜應用程序可以持續(xù)交付和持續(xù)部署

          服務的拆分和定義是一項挑戰(zhàn)。(可以根據(jù)DDD或者業(yè)務功能拆分)

          每個服務都相對較小并容易維護

          分布式系統(tǒng)帶來的各種復雜性,使開發(fā)、測試和部署變得更困難

          服務可以獨立部署

          當部署跨越多個服務的功能時需要謹慎地協(xié)調更多開發(fā)團隊(變更管理)

          服務可以獨立擴展(硬件資源)

          開發(fā)者需要思考到底應該在應用的什么階段使用微服務架構

          微服務架構可以實現(xiàn)團隊自治


          更容易實驗和采納新的技術


          更好的容錯性(故障隔離)


          持續(xù)交付需要有DevOps配套支持,持續(xù)交付部署可以為業(yè)務帶來若干價值:縮短了產(chǎn)品的上市時間,使企業(yè)能夠快速響應客戶的反饋;使企業(yè)能夠提供當前客戶所期望的可靠服務(即業(yè)務連續(xù)性保障);員工滿意度更高,因為開發(fā)人員可以因此花費更多時間來提供有價值的功能,而不是四處擔任救火隊員。


          微服務架構與SOA的異同

          什么是SOA

          面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,并通過這些服務之間定義良好的接口和協(xié)議聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構建在各種各樣的系統(tǒng)中的服務可以以一種統(tǒng)一和通用的方式進行交互。

          對比


          SOA

          微服務

          服務間通信

          智能管道,例如Enterprise Service Bus(ESB也叫企業(yè)服務總線),往往采用重量級協(xié)議,例如SOAP或其他WS*標準

          使用啞管道,例如消息代理,或者服務之間點對點通信,使用輕量級協(xié)議,例如REST或gRPC

          數(shù)據(jù)管理

          全局數(shù)據(jù)模型并共享數(shù)據(jù)庫

          每個服務都有自己的數(shù)據(jù)模型和數(shù)據(jù)庫

          典型服務的規(guī)模

          較大的單體應用

          較小的服務

          總結

          SOA和微服務的設計思想本質上是一致的,但是在具體實現(xiàn)上存在較大差役。SOA的技術棧通常都比較重,其主要原因也是因為它出現(xiàn)的年代比較早,當時的技術方案還比較落后。其次在數(shù)據(jù)管理層面也可以看出對于數(shù)據(jù)模型和共享上與微服務存在本質區(qū)別,SOA更注重的是應用拆分和管道管理,對于數(shù)據(jù)管理沒有投入足夠的性能或者業(yè)務連續(xù)性方面的考慮。再有就是SOA的應用往往還是比較大的,冗余程度要高于微服務,所帶來的好處就是規(guī)避了很多服務治理方面的問題。我們在設計微服務架構時,很容易由于服務拆分的不好導致最終形成類似SOA這種架構。


          瀏覽 44
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性生活视频无码 | 在线色图 | 国产小视频一区 | 无码一区二区三区四 | 欧美黄色直播 |