国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《微服務架構設計模式》第一章

這篇具有很好參考價值的文章主要介紹了《微服務架構設計模式》第一章。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

逃離單體地獄

FTGO單體架構

???????作者用國外FTGO公司(一家做線餐飲外賣)的應用程序舉例,闡述了單體架構的優(yōu)缺點。FTGO應用架構如下:《微服務架構設計模式》第一章,微服務,微服務

應用程序是單體應用,具有六邊形架構,最內側是業(yè)務邏輯,包含訂單管理、配送管理、用戶管理等。業(yè)務邏輯外邊是實現(xiàn)用戶界面的適配器和與外部系統(tǒng)對接的適配器。外部系統(tǒng)如:消息服務、郵件服務、支付服務、數(shù)據(jù)庫。通過這些適配器,業(yè)務邏輯可以訪問數(shù)據(jù)庫,調用外部服務。

單體架構的好處

  1. 應用開發(fā)簡單:只需要構建這一個應用就可以了。
  2. 易于大規(guī)模的更改:可以更改代碼和數(shù)據(jù)庫模式,然后構建和部署。
  3. 測試相對簡單直觀:只有這一個應用,測接口或者使用Selenium就行了,Selenium是一個可以控制瀏覽器的工具。
  4. 部署簡單:部署時開發(fā)者唯一要做的把WAR文件復制到安裝了tomcat服務器上。
  5. 橫向擴展不費吹會之力:可以運行多個實例,有一個負載均衡器進行調度。這里提一下什么是橫向擴展和縱向擴展:
    橫向擴展和縱向擴展都是一種架構理念。
    橫向擴展是向環(huán)境中添加機器或節(jié)點,如給服務新增一臺機器/節(jié)點,給mysql新增個從庫等,各個節(jié)點共同完成。眾人拾柴火焰高
    縱向發(fā)展是提高單個節(jié)點的處理能力,如給mysql增加內存、提升機器cpu性能等。注重個人發(fā)展,個人能力頂呱呱

單體架構的壞處

  1. 過度復雜性嚇退開發(fā)者:系統(tǒng)龐大復雜,開發(fā)者很難梳理出其中邏輯,更改或新增功能時,困難又耗時,這種情況隨著每一次開發(fā)會越來越糟糕,有點像業(yè)內說的“堆shi山”,哈哈哈。
  2. 開發(fā)速度緩慢:系統(tǒng)太龐大,構建、啟動、測試、部署花費的時間會越來越長,嚴重影響開發(fā)效率。
  3. 難以擴展:這里的擴展是指系統(tǒng)提供的功能越多,就需要越多的資源。如內存、cpu、gpu。一般的服務器滿足不了,得需要高性能的服務器。
  4. 交付不可靠:一個模塊出了問題,整個服務就可能故障或宕機。容易出問題的其中一個原因就是因為系統(tǒng)過于龐大而無法進行全面的測試。

拯救之道:微服務架構

微服務概念

Netfix著名架構師將微服務定義為面向服務的架構,由松耦合和具有邊界上下文多的元素組成。作者描述了一個三維可擴展模型來更好的說明
《微服務架構設計模式》第一章,微服務,微服務
X軸:復制實例,并實現(xiàn)負載均衡,提高吞吐量和可用性。沒啥好說的。屬于上邊提到的橫向擴展了。

Y軸:根據(jù)功能把應用拆分成服務。降低應用復雜性。
《微服務架構設計模式》第一章,微服務,微服務

Z軸:根據(jù)請求的屬性就行路由請求,每個實例負責數(shù)據(jù)的一部分子集。如查詢用戶信息,根據(jù)useId將請求路由到對應實例。


《微服務架構設計模式》第一章,微服務,微服務
微服務的一個關鍵特性就是每個服務之間都是松耦合的,僅通過API進行通信,實現(xiàn)松耦合的方式之一就是每個服務都有自己的私有數(shù)據(jù)庫

FTGO微服務架構

《微服務架構設計模式》第一章,微服務,微服務
將單體應用拆成訂單管理、配送管理、餐館管理、用戶管理等服務。每個服務和API都有著其清晰的定義,有著獨立數(shù)據(jù)庫,也可以獨立開發(fā)、部署、擴展

微服務好處

  1. 大型的復雜應用程序可以持續(xù)交付和持續(xù)部署,是微服務最大好處
  2. 每個服務相對較小,易維護、可獨立擴展、部署、容錯性高,可實現(xiàn)團隊自治。巴拉巴拉…

微服務弊端

微服務并不是一種銀彈(類似一種特效武器),不是說用微服務就可以解決軟件中所有問題了。文章來源地址http://www.zghlxwxcb.cn/news/detail-699995.html

  1. 服務拆分和定義是一個挑戰(zhàn)。如何拆分和定義確實需要考慮好。不然可能拆分成一組耦合度很高的微服務架構。
  2. 分布式系統(tǒng)帶來的復雜性。一個服務變成了多個了,那么服務之間就需要通信了。這比一個服務調用本地方法要復雜,需要考慮遠程服務不可用或高延遲情況,做故障處理。開發(fā)的時候要打開多個應用了,測試的時候之前要部署一個應用,現(xiàn)在可能要部署多個了。如果應用不屬于同一個團隊,部署錢要和其他團隊溝通好。
  3. 什么階段使用微服務?剛開始開發(fā)一個項目,需要快速迭代的時候,精心設計分布式架構會減緩開發(fā)速度。當問題復雜的時候,就需要將應用程序分解成一組服務了。但如何將重構復雜的應用程序,也是一個問題。

到了這里,關于《微服務架構設計模式》第一章的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 《微服務架構設計模式》第二章

    《微服務架構設計模式》第二章

    軟件架構的定義 看一下大佬是怎么說的: 計算機系統(tǒng)的軟件架構是構建這個系統(tǒng)所需要的一組結構,包括軟件元素、它們之間的關系以及兩者的屬性。 --Bass等著《Documenting Software Architectures:Views and Beyond》 這個定義將軟件分解為元素和元素之間的關系兩個部分,就像一輛汽車

    2024年02月09日
    瀏覽(22)
  • 《微服務架構設計模式》第二章 服務的拆分策略

    《微服務架構設計模式》第二章 服務的拆分策略

    內容總結自《微服務架構設計模式》 軟件架構的定義:計算機系統(tǒng)的軟件架構是構建這個系統(tǒng)所需要的一組結構,包括軟件元素、他們之間的關系以及兩者的屬性(Bass等著) 其實質是應用程續(xù)的架構將軟件分解為元素(element)和這些元素之間的關系(relation)。由于這兩個

    2024年02月09日
    瀏覽(25)
  • 《微服務架構設計模式》第十二章 部署微服務應用

    《微服務架構設計模式》第十二章 部署微服務應用

    內容總結自《微服務架構設計模式》 在20世紀90年代末開始開發(fā)企業(yè)Java應用程序以來,部署的流程和架構都發(fā)生了根本性的變化。早先開發(fā)人員將代碼扔給運維人員進行手動部署的歷史已經一去不復返了,生產環(huán)境的部署過程已經變得高度自動化。之前由物理機組成的生產環(huán)

    2024年02月16日
    瀏覽(27)
  • 《鳳凰架構》第一章——服務架構演進史

    《鳳凰架構》第一章——服務架構演進史

    前言 剛開始決定弄懂文中所提到的所有東西,就像我寫B(tài)yteByteGo呢幾篇文章一樣,把每一句話都弄懂。但是對于《鳳凰架構》來說,這有點太費時間了,并且沒有必要,有些東西可能永遠都不會用到,但文章為了全面的介紹一個內容,會提到那些東西。所以我還是針對一些自

    2024年02月14日
    瀏覽(21)
  • 【設計模式】第十一章:享元模式詳解及應用案例

    【設計模式】第十一章:享元模式詳解及應用案例

    【設計模式】七大設計原則 【設計模式】第一章:單例模式 【設計模式】第二章:工廠模式 【設計模式】第三章:建造者模式 【設計模式】第四章:原型模式 【設計模式】第五章:適配器模式 【設計模式】第六章:裝飾器模式 【設計模式】第七章:代理模式 【設計模式

    2024年02月13日
    瀏覽(23)
  • 《HeadFirst設計模式(第二版)》第十一章代碼——代理模式

    《HeadFirst設計模式(第二版)》第十一章代碼——代理模式

    代碼文件目錄: ?RMI: MyRemote MyRemoteClient MyRemoteImpl 能夠遠程監(jiān)控的糖果機: 在上一章的代碼的基礎上做一些修改 GumballMachine GumballMachineRemote GumballMachineTestDrive GumballMonitor GumballMonitorTestDrive 五個狀態(tài)類: 同樣的修改:

    2024年02月12日
    瀏覽(29)
  • 設計模式第一課-單例模式(懶漢模式和餓漢模式)

    設計模式第一課-單例模式(懶漢模式和餓漢模式)

    個人理解:單例模式實際就是通過類加載的方式獲取到一個對象,并且保證這個對象在使用中只有一個,不允許再次被創(chuàng)建 1、懶漢模式的基礎寫法 代碼解釋: (1)、編寫LazySingleton類的時候,需要將成員屬性設定為static,這樣才會是類屬性 (2)、重寫構造方法,將其設置

    2024年02月05日
    瀏覽(23)
  • 《golang設計模式》第一部分·創(chuàng)建型模式-02-原型模式(Prototype)

    《golang設計模式》第一部分·創(chuàng)建型模式-02-原型模式(Prototype)

    用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象 Prototype(抽象原型類):它是聲明克隆方法的接口,或所有具體原型類的公共父類 它可以是抽象類也可以是接口,甚至還可以是具體實現(xiàn)類。 ConcretePrototype(具體原型類):它實現(xiàn)在抽象原型類中聲明的

    2024年02月14日
    瀏覽(26)
  • 《golang設計模式》第一部分·創(chuàng)建型模式-01-單例模式(Singleton)

    《golang設計模式》第一部分·創(chuàng)建型模式-01-單例模式(Singleton)

    指目標類(Class)只有一個實例對象(Object),并且向使用該對象的客戶端提供訪問單例的全局方法。 保證類只有一個實例 有方法能讓外部訪問到該實例 懶漢式 在第一次調用單例對象時創(chuàng)建該對象,這樣可以避免不必要的資源浪費 餓漢式 在程序啟動時就創(chuàng)建單例對象,這

    2024年02月14日
    瀏覽(23)
  • 《golang設計模式》第一部分·創(chuàng)建型模式-04-抽象工廠模式(Abstract Factory)

    《golang設計模式》第一部分·創(chuàng)建型模式-04-抽象工廠模式(Abstract Factory)

    在不具體指定產品類的情況下,為相互關聯(lián)的產品簇或產品集提供創(chuàng)建接口,并向客戶隱藏具體產品創(chuàng)建的細節(jié)或表示的對象。 AbstractFactory(抽象工廠):它聲明了一組用于創(chuàng)建產品的方法,每一個方法對應一種產品。 ConcreteFactory(具體工廠):它實現(xiàn)了在抽象工廠中聲明

    2024年02月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包