1. 程式人生 > 其它 >網際網路架構模板:“開發層”和“服務層”技術

網際網路架構模板:“開發層”和“服務層”技術

極客時間:《從 0 開始學架構》:網際網路架構模板:“開發層”和“服務層”技術

開發層技術

1、開發框架

網際網路公司都會指定一個大的技術方向,然後使用統一的開發框架。使用統一的開發框架能夠有效解決:

  • 技術人員之間沒有共同的技術語言,交流合作少。
  • 每類技術都需要投入大量的人力和資源並熟練精通。
  • 不同團隊之間人員無法快速流動,人力資源不能高效的利用。
    等問題,大大提升組織和團隊的開發效率。

對於框架的選擇,總的原則:優選成熟的框架,避免盲目追逐新技術

2、Web伺服器

開發框架只是負責完成業務功能的開發,真正能夠執行起來給使用者提供服務,還需要伺服器配合。

3、容器

千萬不要以為 Docker 只是一個虛擬化或者容器技術,它將在很大程度上改變目前的技術形勢:

  • 運維方式會發生革命性的變化:Docker 啟動快,幾乎不佔資源,隨時啟動和停止,基於 Docker 打造自動化運維、智慧化運維將成為主流方式。
  • 設計模式會發生本質上的變化:啟動一個新的容器例項代價如此低,將鼓勵設計思路朝“微服務”的方向發展。

服務層技術

網際網路業務的不斷髮展帶來了複雜度的不斷提升,業務系統也越來越多,系統間相互依賴程度加深。
服務層的主要目標其實就是為了降低系統間相互關聯的複雜度。

    1. 配置中心
      配置中心就是集中管理各個系統的配置。
      下面是配置中心簡單的設計,其中通過“系統標識 + host + port”來標識唯一一個系統執行例項是常見的設計方法。
    1. 服務中心
      當系統數量不多的時候,系統間的呼叫一般都是直接通過配置檔案記錄在各系統內部的,但當系統數量多了以後,這種方式就存在問題了。
      服務中心就是為了解決跨系統依賴的“配置”和“排程”問題

      服務中心的實現一般來說有兩種方式:服務名字系統服務匯流排系統。
  • 服務名字系統(Service Name System)
    服務名字系統是為了將 Service 名稱解析為“host + port + 介面名稱”
    基本的設計如下:

  • 服務匯流排系統(Service Bus System)
    服務匯流排系統:由匯流排系統完成呼叫,服務請求方都不需要直接和服務提供方互動了。
    基本的設計如下:

服務名字系統”和“服務匯流排系統”簡單對比如下表所示:

  • 訊息佇列
    網際網路業務的一個特點是“快”,這就要求很多業務處理採用非同步的方式。
    傳統的非同步通知方式是由訊息生產者直接呼叫訊息消費者提供的介面進行通知的
    ,但當業務變得龐大,子系統數量增多時,這樣做會導致系統間互動非常複雜和難以管理,因為系統間互相依賴和呼叫,整個系統的結構就像一張蜘蛛網,如下圖所示:

訊息佇列就是為了實現這種跨系統非同步通知的中介軟體系統。訊息佇列既可以“一對一”通知,也可以“一對多”廣播。
以微博為例:

對比前面的蜘蛛網架構,可以清晰地看出引入訊息佇列系統後的效果:

  • 整體結構從網狀結構變為線性結構,結構清晰;
  • 訊息生產和訊息消費解耦,實現簡單;
  • 增加新的訊息消費者,訊息生產者完全不需要任何改動,擴充套件方便;
  • 訊息佇列系統可以做高可用、高效能,避免各業務子系統各自獨立做一套,減輕工作量;
  • 業務子系統只需要聚焦業務即可,實現簡單