一、單體架構
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:如果你覺得本文對你有幫助的話,記得關注點贊轉發,你的支持就是我更新動力。