本文來自于《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,
點選檢視視訊内容。
本文系志願者整理,供配合學習中心課程使用,不做商業用途。
微服務架構演變過程
微服務架構
微服務架構産生的原因
微服務架構基于SOA架構演變過來的。
在傳統的Web Service架構中有如下問題:
- 依賴中心化服務發現機制
- 使用Soap通訊協定,通常使用XML格式來序列化通訊資料,xml格式非常喜歡重,比較占寬帶傳輸。
- 服務化管理和治理設施不完善
微服務架構模式
SOA架構模式存在哪些缺點:
1、采用SOAP協定實作通訊,xml傳輸非常重,效率比較低。
2、服務化管理和治理設施不夠完善
3、依賴與中心服務發現機制
4、不适合于前後分離架構模式
前端分離技術就是對我們控制層和業務層邏輯實作區分,前端控制可以采用vue調用我們後端接口(http+json)。
微服務架構基本概念
微服務架構模式是從SOA架構模式演變過來, 比SOA架構模式粒度更加精細,讓專業的人去做專業的事情(專注),目的是提高效率,每個服務與服務之間互不影響,微服務架構中每個服務必須獨立部署、互不影響,微服務架構模式展現輕巧、輕量級、适合于網際網路公司開發模式。
微服務架構倡導應用程式設計程多個獨立、可配置、可運作和可微服務的子服務。
服務與服務通訊協定采用Http協定,使用restful風格API形式來進行通訊,資料交換格式輕量級json格式通訊,整個傳輸過程中,采用二進制,是以http協定可以跨語言平台,并且可以和其他不同的語言進行互相的通訊,是以很多開放平台都采用http協定接口。

微服務架構與SOA架構的不同
- 通訊協定:微服務架構基于 SOA架構 演變過來,繼承 SOA架構的優點,在微服務架構中去除 SOA 架構中的 ESB 企業服務總線,采用 Http+JSON(restful)進行傳輸。
-
服務拆分粒度:微服務架構比 SOA 架構粒度會更加精細,讓專業的人去做專業的事情(專注),目的提高效率,每個服務與服務之間互不影響,微服務架構中,每個服務必須獨立部署,微服務架構更加輕巧,輕量級。
SOA 架構中可能資料庫存儲會發生共享,微服務強調獨每個服務都是單獨資料庫,保證每個服務于服務之間互不影響。
- 疊代:微服務架構比 SOA 架構更加适合于網際網路公司靈活開發、快速疊代版本,因為粒度非常精細。
ESB企業服務總線:解決多系統之間跨語言無法實作通訊的問題,對我們資料協定實作轉換,可以提供可靠的消息傳輸,第三方架構實作。
一般情況下都是采用Http+JSON格式傳輸,是以沒有必要使用ESB企業服務總線。
微服務架構會産生哪些問題
分布式事務解決方案(rabbitmq、rocketmq事務消息、lcn(已經淘汰) 、setata)最終一緻性概念。
分布式任務排程平台(XXL-Job、Alibaba Cloud Scheduler、elastic-job) .
分布式服務注冊與發現(eureka、consul、zookeeper、Nacos)
分布式日志采集系統elk+kafka
分布式服務追蹤與調用鍊系統Zipkin。
分布式服務配置中心(springcloud config/攜程阿波羅/nacos/disconfig)
在微服務架構中非常重要的概念:獨立部署、可配置、動态化
為什麼我們要使用SpringCloud
SpringCloud并不是rpc遠端調用架構,而是一套全家桶的微服務解決架構,理念就是解決我們在微服務架構中遇到的任何問題。
服務治理:eureka
分布式配置:config
用戶端調用工具rest/feign用戶端 rpc遠端調用
注意:大家如果去一些比較大型的網際網路公司中,整個公司内部實作rpc通訊的架構、服務治理都是内部自己研發。
Rpc遠端調用架構有哪些?
Httpclient、dubbo、feign、grpc、基于netty手寫rpc
SpringCloud第一代與第二代的差別
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
如果進行分布式任務排程,采用Alibaba Cloud SchedulerX
總結:Spring Cloud Alibaba實際上對我們的SpringCloud做拓展元件開發naoocs、setata分布式解決架構、SchedulerX、Alibaba Cloud OSS等,目的推廣阿裡雲産品。