天天看點

SOA架構基于SOA架構核心子產品和中間件詳解

文章目錄

  • 基于SOA架構
  • 核心子產品和中間件詳解
    • 系統間通信
    • 分布式檔案伺服器
    • 緩存
    • 搜尋功能
    • 消息隊列
    • 反向代理
    • 主從備份

基于SOA架構

SOA:Service Oriented Architecture面向服務的架構。也就是把工程都拆分成服務層工程、表現層工程。服務層中包含業務邏輯,隻需要對外提供服務即可。表現層隻需要處理和頁面的互動,業務邏輯都是調用服務層的服務來實作。工程都可以獨立部署。

SOA架構基于SOA架構核心子產品和中間件詳解

在一個典型的SOA架構中,加入了大量的中間件和子系統,用于解決分布式架構中的服務通信及衍生問題,具體包括服務間通信、負載均衡、反向代理、資訊中心、檔案管理、主從備份等等。

核心子產品和中間件詳解

SOA架構為高并發而生,需要解決高并發下不同服務之間的通信問題。

系統間通信

一般來說,基于SOA的架構,它的表現層和服務層是不同的工程。是以要實作一個服務流程需要兩個系統之間進行通信。那麼如何實作遠端通信?常用的方式包括:

  1. 使用WebService:效率不高,它是基于SOAP協定(http+xml)。項目中不推薦使用。
  2. 使用Restful形式的服務:http+json。很多項目中應用。如果服務越來越多,服務與服務之間的調用關系複雜,調用服務的URL管理複雜,什麼時候添加機器難以确定。
  3. 使用Dubbo。使用rpc協定進行遠端調用,直接使用socket通信。傳輸效率高,并且可以統計出系統之間的調用關系、調用次數,管理服務。
  • Dubbo

    DUBBO是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,是阿裡巴巴SOA服務化治理方案的核心架構,每天為2,000+個服務提供3,000,000,000+次通路量支援,并被廣泛應用于阿裡巴巴集團的各成員站點。

  • Zookeeper

    注冊中心負責服務位址的注冊與查找,相當于目錄服務,服務提供者和消費者隻在啟動時與注冊中心互動,注冊中心不轉發請求,壓力較小。使用dubbo-2.3.3以上版本,建議使用zookeeper作為注冊中心。

    Zookeeper是Apacahe Hadoop的子項目,是一個樹型的目錄服務,支援變更推送,适合作為Dubbo服務的注冊中心,工業強度較高(穩定性好),可用于生産環境,并推薦使用。

分布式檔案伺服器

在分布式應用中,無法通過傳統手段解決檔案上傳和下載下傳問題。是以,對于檔案上傳,業務系統節點可以把檔案集中到分布式檔案伺服器做統一管理,而使用者通路,也可以通過分布式檔案伺服器提供快速的檔案下載下傳支援。

  • FastDFS

    FastDFS是用c語言編寫的一款開源的分布式檔案系統。FastDFS為網際網路量身定制,充分考慮了備援備份(高可用)、負載均衡(高并發量)、線性擴容(添加伺服器或者磁盤)等機制,并注重高可用、高性能等名額,使用FastDFS很容易搭建一套高性能的檔案伺服器叢集提供檔案上傳、下載下傳等服務。

    FastDFS架構包括 Tracker server和Storage server。用戶端請求Tracker server進行檔案上傳、下載下傳,通過Tracker server排程最終由Storage server完成檔案上傳和下載下傳。

    Tracker server作用是負載均衡和排程,通過Tracker server在檔案上傳時可以根據一些政策找到Storage server提供檔案上傳服務。可以将tracker稱為追蹤伺服器或排程伺服器。

    Storage server作用是檔案存儲,用戶端上傳的檔案最終存儲在Storage伺服器上,Storage server沒有實作自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以将storage稱為存儲伺服器。

緩存

以一個SOA商城系統為例,它的首頁是系統的門戶,也就是系統的入口。是以首頁的通路量是這個系統最大的。如果每次展示首頁都從資料庫中查詢首頁的内容資訊,那麼勢必會對資料庫造成很大的壓力,是以需要使用緩存來減輕資料庫壓力。實作緩存的工具有很多,現在比較流行的是Redis。

Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫(nosql),應用在緩存、任務隊列等場景較多。

搜尋功能

  • Solr

    SolrCloud(solr 雲)是Solr提供的分布式搜尋方案,當你需要大規模,容錯,分布式索引和檢索能力時使用 SolrCloud。當索引量很大,搜尋請求并發很高,這時需要使用SolrCloud來滿足這些需求。

    SolrCloud是基于Solr和Zookeeper的分布式搜尋方案,它的主要思想是使用Zookeeper作為叢集的配置資訊中心。Solr叢集架構圖如下:

    SOA架構基于SOA架構核心子產品和中間件詳解
    Zookeeper它有幾個特色功能:
  • 集中式的配置資訊(資料庫連接配接池的配置檔案,修改檔案不用重新開機就可以生效)
  • 自動容錯
  • 近實時搜尋
  • 查詢時自動負載均衡

消息隊列

  • MQ

    MQ是一個消息中間件,比如:ActiveMQ、RabbitMQ、kafka都屬于MQ,是MQ的産品。一般可以考慮使用Apache開源的消息隊列ActiveMQ。

  • ActiveMQ的消息形式

    對于消息的傳遞有兩種類型:

    一種是點對點的,即一個生産者和一個消費者一一對應;

    另一種是釋出/訂閱模式,即一個生産者産生消息并進行發送後,可以由多個消費者進行接收。

    JMS定義了五種不同的消息正文格式,以及調用的消息類型,允許你發送并接收以一些不同形式的資料,提供現有消息格式的一些級别的相容性。

反向代理

  • Nginx
    SOA架構基于SOA架構核心子產品和中間件詳解
    正向代理隐藏真實用戶端,反向代理隐藏真實服務端

自己的了解:

正向代理就是我們平常使用的那種代理軟體的效果,我們将自己的請求發給代理伺服器,然後再由代理伺服器發送給目标伺服器;反向代理,顧名思義,方向相反,當代理伺服器收到請求後,依照某種規則,轉發給不同的伺服器。

主從備份

  • Keepalived

    keepalived是以VRRP協定為實作基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛拟路由備援協定。

    虛拟路由備援協定,可以認為是實作路由器高可用的協定,即将N台提供相同功能的路由器組成一個路由器組,這個組裡面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛拟IP位址,該路由器所在區域網路内其他機器的預設路由為該vip),master會發多點傳播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

    keepalived主要有三個子產品,分别是core、check和VRRP。core子產品為keepalived的核心,負責主程序的啟動、維護以及全局配置檔案的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP子產品是來實作VRRP協定的。