技術乾貨總結:微服務架構詳細流程

2019-08-26   IT技術分享

一、單體架構

1. 單體架構的簡介

2. 單體架構的架構圖

3. 單體架構的優點

4. 單體架構的缺點

二、微服務架構

1. 微服務架構的簡介

  • 微服務是指開發一個單個小型的但有業務功能的服務,每個服務都有自己的處理和輕量通訊機制,可以部署在單個或多個伺服器上。
  • 微服務也指一種種松耦合的、有一定的有界上下文的面向服務架構,如果每個服務都要同時修改,那麼它們就不是微服務,因為它們緊耦合在一起;如果你需要掌握一個服務太多的上下文場景使用條件,那麼它就是一個有上下文邊界的服務。

2. 微服務架構的架構圖

3. 微服務架構的設計原則

  • 拆分足夠小
  • 服務與服務之間輕量級通信

4. 微服務架構的優點

  • 相對於單體架構,它的主要特點是組件化、松耦合、自治、去中心化。
  • 一組小的服務其服務粒度要小,而每個服務是針對一個單一職責的業務能力的封裝,專注做好一件事情。
  • 獨立部署運行和擴展 :每個服務能夠獨立被部署並運行在一個進程內。這種運行和部署方式能夠賦予系統靈活的代碼組織方式和發布節奏,使得快速交付和應對變化成為可能。
  • 獨立開發和演化:技術選型靈活,不受遺留系統技術約束。合適的業務問題選擇合適的技術可以獨立演化。服務與服務之間採取與語言無關的API進行集成。相對單體架構,微服務架構是更面向業務創新的一種架構模式。
  • 獨立團隊和自治 :團隊對服務的整個生命周期負責,工作在獨立的上下文中,自己決策自己治理,而不需要統一的指揮中心。團隊和團隊之間通過鬆散的社區部落進行銜接。

5. 微服務架構的缺點

  • 服務拆分微服務架構可能帶來過多的操作
  • 分布式系統可能複雜難以管理,因為分布部署跟蹤問題難。
  • 分布式事務比較難處理
  • 當服務數量增加,管理複雜性增加。

6. 微服務架構的拆分思路

6.1 橫向拆分:根據業務來拆分

6.2 縱向拆分:根據層次來拆分

7. 微服務架構的選擇

7.1 Dubbo(RPC)

7.1.1 Dubbo

  • Dubbo是阿里集團開源的一個極為出名的RPC框架,在很多網際網路公司和企業應用中廣泛使用。
  • 協議和序列化框架都可以插拔是及其鮮明的特色。
  • 遠程接口是基於Java Interface,並且依託於Spring框架方便開發。
  • 可以方便的打包成單一文件,獨立進程運行,和現在的微服務概念一致。
  • Dubbo目前是一種廣泛使用的微服務架構框架。

7.1.2 RPC

  • RPC,Remote Process Call ,即跨進程調用
  • RPC的本質是提供了一種輕量無感知的跨進程通信的方式,在分布式機器上調用其他方法與本地調用無異(遠程調用的過程是透明的,你並不知道這個調用的方法是部署在哪裡,通過PRC能夠解耦服務)
  • RPC是根據語言的API來定義的,而不是基於網絡的應用來定義的,調用更方便,協議私密更安全、內容更小效率更高。

  • 客戶端(Client),服務的調用方。
  • 服務端(Server),真正的服務提供者。
  • 客戶端存根,存放服務端的地址消息,再將客戶端的請求參數打包成網絡消息,然後通過網絡遠程發送給服務方。
  • 服務端存根,接收客戶端發送過來的消息,將消息解包,並調用本地的方法。
  • 基於TCP/IP協議。速度快。

7.2 SpringCloud(HTTP)

7.2.1 SpringCloud

  • Spring Cloud來源於Spring,利用Spring Boot進行快捷開發。
  • Spring Cloud基本上都是使用了現有的開源框架進行的集成,學習的難度和部署的門檻就比較低,對於中小型企業來說,更易於使用和落地。
  • Spring Cloud 核心組件Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現,這也是Spring Cloud體系中最重要最核心的組件之一。

7.2.2 HTTP

  • 應用層協議,簡單。
  • HTTP接口是在接口不多、系統與系統交互較少的情況下,解決信息孤島初期常使用的一種通信手段;優點就是簡單、直接、開發方便。利用現成的HTTP協議 進行傳輸。
  • 使用HTTP協議的微服務,通常返回JSON數據,然後把JSON轉換為對象。

7.3 小結

  • RPC服務和HTTP服務還是存在很多的不同點的:
  • 一般來說,RPC服務主要是針對大型企業的,而HTTP服務主要是針對小企業的
  • 因為RPC效率更高,而HTTP服務開發疊代會更快。
  • 選用什麼樣的框架不是按照市場上流行什麼而決定的,而是要對整個項目進行完整地評估。

8. 微服務架構的基本概念

8.1 服務提供者(Provider)

  • 提供服務的具體實現
  • 同一個微服務,既可以是provider,也可以是consumer。

8.2 服務調用者(Consumer)

  • 通過一些框架來調用服務提供者提供的服務
  • 同一個微服務,既可以是provider,也可以是consumer。

end:如果你覺得本文對你有幫助的話,記得關注點贊轉發,你的支持就是我更新動力。