小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【高可用】系統(tǒng)架構與技術選型

 旅行者m1 2023-04-17 發(fā)布于遼寧
     對于業(yè)務系統(tǒng),基于業(yè)務量、數(shù)據(jù)量、穩(wěn)定性要求等,選擇合適的架構是產(chǎn)品開發(fā)的第一步。
    如果架構沒選好,系統(tǒng)很快就可能面臨各種問題。

01

常見系統(tǒng)問題
    1、單臺數(shù)據(jù)庫/Redis等,查詢等待時間長
    2、部分業(yè)務系統(tǒng)壓力大,或是突增流量,系統(tǒng)不穩(wěn)定
    3、單一故障的傳播,造成更大范圍的系統(tǒng)故障
    4、系統(tǒng)故障影響大,需要人工馬上介入,缺少故障轉移機制
    在業(yè)務成長的過程中,多方面系統(tǒng)瓶頸問題,不一一列了,需要結合架構來做優(yōu)化升級。
    作為一個軟件開發(fā)人員,需要了解軟件構建的演進,熟悉常用的軟件架構。

02

單體架構
    軟件行業(yè)最初流行的是單體架構,整個項目包含的模塊非常多。
    典型的有三級架構,前端(Web/客戶端) + 業(yè)務服務層 + 數(shù)據(jù)庫層。常見的開發(fā)框架比如有Java Spring MVC。
    單體架構的應用比較容易部署、測試,在項目的初期,可以很好地運行。隨著需求的不斷增加, 越來越多的人加入開發(fā),代碼庫也同時在膨脹。
    產(chǎn)品功能做大后,單體應用變得越來越臃腫,可維護性、靈活性逐漸降低,維護成本越來越高。

03

分布式應用
    分布式應用是中級架構,中間層和數(shù)據(jù)層都為分布式,是并發(fā)擴展單體架構。
    經(jīng)歷過單體應用開發(fā)的人員,自然會想到拆分多個業(yè)務系統(tǒng),每個系統(tǒng)部署在不同的服務器上,各個服務模塊之間通過接口做數(shù)據(jù)交互。
    數(shù)據(jù)層也大量采用分布式數(shù)據(jù)庫,比如Redis、ES、MongoDB。通過Nginx等代理應用,將用戶請求均衡分發(fā)到不同的服務器。
    相對于單體架構來說,還是水平擴展系統(tǒng),提供了負載均衡的能力,可以大大提高系統(tǒng)負載能力,解決高并發(fā)的需求。
    缺點是系統(tǒng)之間的交互要使用遠程通訊,接口的開發(fā)量變大,不過嘛,這點問題不大。

04

微服務架構
    微服務架構,主要是分解中間層,將系統(tǒng)拆分成很多微服務,微服務可以部署在不同的系統(tǒng),也可以部署在相同服務器上的不同容器。
    單個應用的負載和故障不直接影響其他應用,常見的框架有 Spring Cloud、Dubbo等。典型的微服務部署架構可參考下圖。

Image

微服務帶來很多優(yōu)點

    1、易于開發(fā)和維護:每個服務關注一個指定的業(yè)務板塊,業(yè)務清晰,微服務之間設計的解耦。

    2、單個服務部署:每個服務代碼量較少,一般只改了某個服務,就只要重新部署這個服務,啟動比較快。

    3、服務治理更專業(yè):可以做更細粒度的服務治理,更精確的流量管控等。

    4、技術棧不受限:每個服務可選不同的技術棧和中間件,甚至支持不同的開發(fā)語言。

微服務帶來一些挑戰(zhàn)

    微服務可便于項目做大做強,同時日常要面臨以下挑戰(zhàn)

    1、分布式的復雜性:系統(tǒng)各方面設計需要考慮分布式,處理網(wǎng)絡延遲、系統(tǒng)容錯、分布式事務等帶來的挑戰(zhàn)。

    2、接口調整成本高:微服務之間通過接口通訊,一個接口修改可能所有調用該接口的服務都需要同步調整。

    3、運維要求較高:微服務的部署數(shù)量常見的幾十到幾百,要保證相互正常運行和協(xié)作,以及容器的自動伸縮,運維技能要求很可能上升到使用 K8s。

05

高可用內容
   系統(tǒng)高可用包含很多個方面,主要有以下方面
    1、高可用部署
    各個業(yè)務中間件做高可用部署,比如MySQL數(shù)據(jù)庫主從、Redis集群部署等,同時代碼層面要做的處理。
    2、負載均衡與網(wǎng)關
    基于用戶的請求,從業(yè)務上游、中游到下游,Nginx負載均衡、微服務網(wǎng)關、服務負載均衡等。
    3、系統(tǒng)高可用
    并發(fā)流量大情況下,如何保證系統(tǒng)穩(wěn)定的一些考量,比如消息隊列、服務降級、限流、超時機制等。
    今天開始新增加一個分享主題,關于架構高可用的技術選型、搭建、使用等。
    主要基于微服務架構,有需要分享的同學點個贊,讓我知道你需要。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多