開發與維運

從單體到微服務,淺談這些年架構的演變(下) | 帶你讀《Spring Cloud Alibaba(2019)》之二

上一篇:微服務架構演變過程(上) | 帶你讀《Spring Cloud Alibaba(2019)》之一

本文來自於《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,點擊查看視頻內容
本文系志願者整理,供配合學習中心課程使用,不做商業用途。

微服務架構演變過程

微服務架構

微服務架構產生的原因

微服務架構基於SOA架構演變過來的。
在傳統的Web Service架構中有如下問題:

  1. 依賴中心化服務發現機制
  2. 使用Soap通訊協議,通常使用XML格式來序列化通訊數據,xml格式非常喜歡重,比較佔寬帶傳輸。
  3. 服務化管理和治理設施不完善

微服務架構模式

SOA架構模式存在哪些缺點:
1、採用SOAP協議實現通訊,xml傳輸非常重,效率比較低。
2、服務化管理和治理設施不夠完善
3、依賴與中心服務發現機制
4、不適合於前後分離架構模式

前端分離技術就是對我們控制層和業務層邏輯實現區分,前端控制可以採用vue調用我們後端接口(http+json)。

微服務架構基本概念

微服務架構模式是從SOA架構模式演變過來, 比SOA架構模式粒度更加精細,讓專業的人去做專業的事情(專注),目的是提高效率,每個服務與服務之間互不影響,微服務架構中每個服務必須獨立部署、互不影響,微服務架構模式體現輕巧、輕量級、適合於互聯網公司開發模式。

微服務架構倡導應用程序設計程多個獨立、可配置、可運行和可微服務的子服務。
服務與服務通訊協議採用Http協議,使用restful風格API形式來進行通訊,數據交換格式輕量級json格式通訊,整個傳輸過程中,採用二進制,所以http協議可以跨語言平臺,並且可以和其他不同的語言進行相互的通訊,所以很多開放平臺都採用http協議接口。

image.png
image.png

微服務架構與SOA架構的不同

  1. 微服務架構基於 SOA架構 演變過來,繼承 SOA架構的優點,在微服務架構中去除 SOA 架構中的 ESB 企業服務總線,採用 http+json(restful)進行傳輸。
  2. 微服務架構比 SOA 架構粒度會更加精細,讓專業的人去做專業的事情(專注),目的提高效率,每個服務於服務之間互不影響,微服務架構中,每個服務必須獨立部署,微服務架構更加輕巧,輕量級。
  3. SOA 架構中可能數據庫存儲會發生共享,微服務強調獨每個服務都是單獨數據庫,保證每個服務於服務之間互不影響。
  4. 項目體現特徵微服務架構比 SOA 架構更加適合與互聯網公司敏捷開發、快速迭代版本,因為粒度非常精細。

ESB企業服務總線:解決多系統之間跨語言無法實現通訊的問題,對我們數據協議實現轉換,可以提供可靠的消息傳輸,第三方框架實現。
一般情況下都是採用Http+JSON格式傳輸,所以沒有必要使用ESB企業服務總線。

微服務架構會產生那些問題

分佈式事務解決方案(rabbitmq/rocketmq/lcn(已經淘汰)/ Seata)
分佈式任務調度平臺(XXL-Job、阿里Scheduler)
分佈式日誌採集系統ELJ+Kafka
分佈式服務註冊中心 eureka、Zookeeper、consule、nacos等。
分佈式服務追蹤與調用鏈Zipkin等。

非常重要的概念:獨立部署、可配置、動態化

為什麼我們要使用SpringCloud

SpringCloud並不是rpc遠程調用框架,而是一套全家桶的微服務解決框架,理念就是解決我們在微服務架構中遇到的任何問題。
服務治理:eureka
分佈式配置:config
客戶端調用工具rest/feign客戶端 rpc遠程調用

注意:大家如果去一些比較大型的互聯網公司中,整個公司內部實現rpc通訊的框架、服務治理都是內部自己研發。

Rpc遠程調用框架有哪些?
Httpclient、dubbo、feign、grpc、基於netty手寫rpc

SpringCloud第一代與第二代的區別

image.png

SpringCloud第一代:
SpringCloud Config 分佈式配置中心
SpringCloud Netflix 核心組件

  • Eureka:服務治理
  • Hystrix:服務保護框架
  • Ribbon:客戶端負載均衡器
  • Feign:基於ribbon和hystrix的聲明式服務調用組件
  • Zuul: 網關組件,提供智能路由、訪問過濾等功能。

SpringCloud第二代(自己研發)和優秀的組件組合:

Spring Cloud Gateway 網關
Spring Cloud Loadbalancer 客戶端負載均衡器
Spring Cloud r4j(Resilience4J) 服務保護

Spring Cloud Alibaba Nacos 服務註冊
Spring Cloud Alibaba Nacos 分佈式配置中心
Spring Cloud Alibaba Sentinel服務保護
SpringCloud Alibaba Seata分佈式事務解決框架
Alibaba Cloud OSS 阿里雲存儲
Alibaba Cloud SchedulerX 分佈式任務調度平臺
Alibaba Cloud SMS 分佈式短信系統

為什麼Alibaba要推出SpringCloud組件

目的就是為了對阿里雲的產品實現擴展。

SpringCloud與Spring Cloud Alibaba的區別

Spring Cloud Alibaba實際上對我們的SpringCloud實現了拓展組件能夠完美整合到SpringCloud rpc遠程調用整合。
1、nacos分佈式註冊中心,分佈式配置中心SpringCloudEureka+Config組合
2、目的是為了推廣阿里雲產品,如果使用了Spring Cloud Alibaba建議最好使用Alibaba Mq rocketmq
分佈式任務調度

總結:Spring Cloud Alibaba實際上對我們的SpringCloud做拓展組件開發naoocs、setata分佈式解決框架、scheduler、Alibaba Cloud OSS等目的推廣阿里雲產品。

Leave a Reply

Your email address will not be published. Required fields are marked *