91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分布式系統實戰

發布時間:2020-07-13 16:51:51 來源:網絡 閱讀:6594 作者:yaocoder 欄目:軟件技術

導語:記得在自己大學畢業的2006年到之后近五年的工作里,源于工作經歷和有限的視野,幾乎對“分布式系統”沒有任何概念。當然,彼時的互聯網/移動互聯網還未對我們的生活呈覆蓋顛覆之勢,很多網絡應用采用傳統的集中式服務便可應對。但是隨著互聯網大潮的風起云涌,出現了越來越多的細分大流量網站及應用,網民體量也如滾落雪球一般越來越大,這種情況下分布式的概念幾乎在技術圈“家喻戶曉”,也成了我們追逐的另一顆時代“銀彈”。我也不例外,但是只是因為身處于某幾乎無互聯網氛圍的二線城市和保守封閉的技術氛圍中,所以對分布式系統的理解、掌握只能是自己一步步學習、實踐而來,但是反過來也有了很多踏實的實踐體會。




剛才提到分布式系統產生的背景之一就是有了很多大型網站、應用。

  • 這些系統的特點是:高并發、大流量;高可用;海量數據;用戶分布廣泛,網絡情況復雜,安全環境惡劣;需求快速變更,迭代式發展,發布頻繁。

  • 這些系統的核心架構要素:性能、可用性、伸縮性、擴展性和安全性。

 

來看看分布式系統的特點:

  • 異構性:使得用戶能在大量異構計算機和網絡上訪問服務和運行應用程序,比如允許硬件、操作系統、編程語言、開發者等的多樣性和差別。

  • 開放性(擴展性):使系統能以不同的方式被擴展和實現,比如通過發布系統的關鍵接口、基于一致的通信機制和網絡協議擴展其他應用。

  • 可伸縮性在不同的用戶規模下通過對資源的調節依然能有效且高效的運轉,比如通過縱向的伸縮來加強硬件、通過橫向的伸縮來增加服務器等。

  • 并發性保持用戶對共享資源操作的正確性,比如CAP理論中的C(一致性)的要求。

  • 高可用性:通過性能優化、安全性、故障處理提高可用性,比如采用高性能的編程模型,安全的隔離和過濾機制,自動化故障檢測、容錯、故障修復、冗余等。


分布式系統的優勢:

  • 降低不同模塊開發團隊間的協同成本,業務響應更迅捷。

  • 大大降低系統間的耦合度以及整體復雜度,各個開發團隊可專注于各自的業務模塊。

  • 避免了個別模塊的錯誤給整體帶來的影響。

  • 業務可拆分、可擴展后解放了對單服務資源的依賴。

  • 做到針對性的業務能力擴容,減少不必要的資源浪費。

可見分布式系統為大型網站應用在技術和組織層面都提供了良好的解決和支撐。

分布式系統相關的理論:

  • CAP理論:一個分布式系統最多只能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance 指分布式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性和可用性的服務)其中的兩項。

  • BASE理論:是指基本可用(Basically Avalilable)、柔性狀態(Soft State)、最終一致性(Eventual Consistency)。BASE是對CAP理論的延伸,核心思想是即使無法做到強一致性,但應用可以采用適合的方式達到最終一致性。  


另外,現在經常有人問起分布式架構理念與之前我們經常說的SOA(面向服務的架構)和現在頗為流行的微服務架構孰優孰劣。我個人認為問優劣是不合理的,首先分布式構架理念在兩者中都有體現和應用。而對于作為對比的SOA和微服務,這二者在彼此適配的場景下都可以殊途同歸的解決問題,都是好的架構理念。但是確實是也有區別和聯系:


SOA的主要特性:

  • 面向服務的分布式計算

  • 服務間松散耦合

  • 支持服務的組裝

  • 服務注冊和自動發現

  • 以服務契約方式定義服務交互方式

微服務架構的典型特征:

  • 分布式服務組成的系統

  • 按照業務而不是按照技術來劃分組織

  • 做有生命的產品而不是項目

  • 智能化服務端點與傻瓜式服務編排

  • 自動化運維

  • 系統容錯

  • 服務快速演化




上面主要講了對分布式系統的概念認識,很多是對書籍和學習的總結。但是做到真正的理解就必須有實戰,拿其中一個自己親自架構編碼的即時聊天/用戶、設備上線系統的后臺架構為例,此架構思路目前已經實踐應用在多個百萬級別的服務上。其實對于此架構的分布式應用,自己并不是在熟知分布式理論的前提下設計的,而是基于其他理念模型和在具體的業務實踐、組織協作過程中演化而來的。

  • 比如分層的架構設計,之前由于主要做網絡安全和網絡編程工作,TCP/IP協議棧的分層設計深深影響了自己

分布式系統實戰

把網絡層、業務邏輯層、數據層分離,網絡層支持負載均衡,業務層支持動態擴展,數據層支持分布式存儲,各層均支持分布式部署;以下是架構細化圖

分布式系統實戰

  • 對不同功能的模塊進行進程級的分離,用TCP來進行通訊。這是受“《UNIX編程藝術》第7章——多道程序設計:分離進程為獨立的功能“的理念影響,是不是和微服務的理念很像,而且基于TCP通信的方式利于進行分布式部署。Unix最具特點的程序模塊化技法就是將大型程序分解成多個協作進程,并專注于考慮這些子進程間的接口和通訊方式;

  • 通用技術模塊和業務應用模塊分離,比如網關服務、上線服務實現網絡接入和協議轉發功能不承載業務邏輯,由具體的應用進程處理業務。網關服務就類似于Nginx,用戶的請求首先會通過前端接入層(Nginx)分發到后端的應用集群上,另外通過在網關上實現的安全過濾(比如域名IP類、協議秘鑰、黑名單)實現接入層限流、安全的主要工作。

  • 無狀態的設計,將狀態、消息、業務數據類信息分離出業務進程,利用分布式緩存(如redis),數據庫(關系型數據庫MySQL、非關系型數據庫MongoDB)存儲進行調用。這樣業務進程利于分布式部署,數據服務也支持分布式存儲。

  • 服務間利用標準統一的協議進行信息交互,比如采用序列化協議Json和RESTful API設計,我個人比較推崇文本化的協議,容易使人理解也更容易記錄、分析、調試。這是深受“《Unix編程藝術》第5章——文本化:好協議產生好實踐”理念的影響。相比二進制協議,文本化協議可以帶來互用性、透明性、可擴展性。

  • 通過配置文件或者配置服務加載策略,對于很多靜態和動態的策略不要寫死在程序中,而是通過配置文件或者配置服務加載,這樣可以快速部署發布新功能、對服務進行無間斷的熱啟動。這也是“《Unix編程藝術》中分離原則:策略同機制分離,接口同引擎分離”原則的實踐。




資料和代碼:

《服務端架構中的“網關服務器 》             《IM系統架構設計之淺見 》

DSF(Distributed service framework) :基于C++語言實現的一個簡單分布式服務框架示例,包括一個邏輯分發服務實現(網關服務),一個邏輯應用實現(具體應用服務)

highPerformanceNetworkServer :高性能TCP網絡服務器程序(上線服務器的雛形)


參考書籍:

《Unix編程藝術》

《企業IT架構轉型之道:阿里巴巴中臺戰略思想與架構實戰 》

《大型網站技術架構》 

《分布式系統概念與設計》



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长沙市| 清流县| 宁都县| 长丰县| 左权县| 伊宁市| 西乡县| 霍山县| 安宁市| 乌拉特前旗| 鹤山市| 托克逊县| 南京市| 桂平市| 湟中县| 友谊县| 石城县| 武陟县| 阜阳市| 封丘县| 建瓯市| 饶河县| 集贤县| 昌图县| 清水河县| 同仁县| 荆州市| 巴彦县| 蓝田县| 开封市| 玉田县| 德阳市| 太仆寺旗| 武山县| 新化县| 东乌珠穆沁旗| 运城市| 灌云县| 武冈市| 昌江| 中卫市|