1. 程式人生 > 其它 >服務端架構演進史

服務端架構演進史

一、引子

當我們入行成為一名後端程式設計師時,就很羨慕架構師這個崗位的人,視同神一樣的存在。而要成為一名後端架構師,必會技能就是分散式架構。今天我們不講各種元件怎麼去實現分散式細節,而是從分散式服務的這一角度來看歷史的發展。 目的就一個:構建並豐富自己的架構知識體系。(普通人差大神多少?選對方向,持之以恆而已。)

注:本文是筆者最近讀了周志明大神(《深入理解Java虛擬機器》的作者)的鳳凰架構,才有了這篇總結。老規矩,膜拜一下大神先:

二、演進史

老司機可以直接跳到第三節,看總結即可。

2.1 單體架構

概念:“單體”只是表明系統中主要的過程呼叫都是程序內呼叫,不會發生程序間通訊,僅此而已。

優點:一切資源都在一個程序內呼叫。簡單方便易實現

缺點:無法做到隔離、技術異構

2.2 SOA架構(Service-Oriented Architecture)

概念:面向服務的架構是一次具體地、系統性地成功解決分散式服務主要問題的架構模式。

優點:為了解決企業級分散式服務的各種問題,第一次形成了統一的技術設計原則和SOAP協議簇。

缺點:SOAP 過於嚴格的規範定義帶來過度的複雜性

2.3 Microservices微服務架構

概念:微服務是一種通過多個小型服務組合來構建單個應用的架構風格,這些服務圍繞業務能力而非特定的技術標準來構建。各個服務可以採用不同的程式語言,不同的資料儲存技術,執行在不同的程序之中。

優點:第一次在軟體層面提供瞭解決服務治理的全家桶,比如springCloud。

缺點:程式程式碼耦合了技術元件,有一定的程式碼侵入

2.4 Cloud Native雲原生架構

概念:從軟體層面獨力應對微服務架構問題,發展到軟、硬一體,合力應對架構問題的時代,即“後微服務時代”。

優點:服務治理作為基礎設施分離,實現了業務和技術的解耦

缺點:主流實現依賴k8s環境,上車較為複雜;引入“服務網格”(Service Mesh)的“邊車代理模式”(Sidecar Proxy),會有效能損耗

2.5 Serverless無服務架構

概念:如果說微服務架構是分散式系統這條路的極致,那無服務架構,也許就是“不分散式”的雲端系統這條路的起點。

優點:服務上雲端(快速部署,彈性擴容),使用雲端計算技術、實現函式式業務能力。業務完全不用關心技術(資料+計算都交給第三方)。

缺點:目前看來,只能算是一種雲端計算架構(函式計算),還未成熟,不能替代複雜業務應用

三、總結

大體可以分為四個大階段:

  1. 單體架構時代(2006年之前):包括原始的分散式時代,DCE體系分散式技術體系的提出,但由於計算機效能發展很快,單體架構是主流架構。
  2. SOA時代(2006-2016):這十年是各大廠商湧入SOA的黃金年代。可惜的是,封閉式的收費模式最終被開源的spring打敗,泯滅在了歷史的塵煙。
  3. 微服務時代(2016-至今):
    • 【2016-2020】2016年以SpringCloud為代表的初代微服務時代蓬勃發展,
    • 【2020-至今】在2017年Kubernetes一統容器架構後,Cloud Native出現,典型代表Istio,在國內2020年開始火起來。可以稱為後微服務時代,目前看來再火個5年問題不大。
  4. 無服務時代(2018-至今):從2010年開始,隨著雲端計算的快速發展,2018年阿里騰訊加入無服務架構(Serverless)陣營,並相繼開放了商業版FAAS產品,可以稱為未來的服務架構,目前並未成熟,不能替代複雜業務服務

=========參考===================

http://icyfenix.cn/ 鳳凰架構  周志明。