1. SOA、分布式、微服務之間有什么關系和區別?
1.分布式架構指將單體架構中的各個部分拆分,然后部署到不同的機器或進程中去,SOA和微服務基本上都是分布式架構的
2. SOA是一種面向服務的架構,系統的所有服務都注冊在總線上,當調用服務時,從總線上查找服務信息,然后調用
3.微服務是一種更徹底的面向服務的架構,將系統中各個功能個體抽成一個個小的應用程序,基本保持一個應用對應的一個服務的架構
SpringCloudAlibaba架構
2.微服務間的通信方式
1.同步通信:微服務之間通過請求-響應的方式進行通信,例如RESTful API和RPC。通信過程中,請求方需要等待響應方的返回結果,因此可靠性較高,但可能會出現請求排隊、線程阻塞等問題,從而影響系統的響應速度和并發性能。
2.異步通信:微服務之間通過消息隊列進行異步通信,例如Kafka和RabbitMQ。通信過程中,發送方向消息隊列發送消息,接收方從消息隊列中消費消息,消息傳輸以異步的方式進行,不需要等待接收方的響應。由于解耦性高,消息隊列還可以支持發布-訂閱模式,消息得以廣播到多個服務中,助于構建高可伸縮的系統。不過異步通信也可能導致延遲較高,以及可靠性和容錯性較差等問題。
3.事件驅動架構(EDA):微服務之間通過發布-訂閱模式進行通信,例如Apache Kafka和AWS SNS/SQS。通信過程中,發布者發布事件,訂閱者訂閱事件,事件傳遞以異步的方式進行。通過EDA,不同服務之間可以實現松耦合通信,提高系統的可伸縮性和彈性,但需要謹慎處理網絡分區等極端情況,以避免出現一致性等問題。
3.微服務架構常用組件
Spring Cloud常用組件及其簡要介紹:
Eureka:服務注冊與發現組件,可以通過RESTFUL接口來實現服務注冊與發現,并提供心跳檢測機制來保證服務可用性。
Ribbon:客戶端的負載均衡組件,可以集成到RestTemplate、Feign等HTTP客戶端中使用。
Feign:基于Ribbon和Hystrix的聲明式服務調用組件,可以讓我們更方便地實現服務之間的調用。
Hystrix:熔斷器組件,可以在服務出現故障或異常時進行自動熔斷,避免服務雪崩問題。
Zuul:API網關組件,可以對外部請求進行統一的路由、過濾和轉發。
Config:分布式配置中心組件,可以將應用程序的配置信息集中管理,并支持動態刷新配置。
Bus:消息總線組件,可以用于在分布式系統中傳遞事件消息,如配置更新事件、狀態變更事件等。
Stream:數據流處理組件,可以幫助我們從消息中間件中讀取、處理和發送消息。
Sleuth:分布式跟蹤組件,可以追蹤請求在微服務架構中的傳遞過程,幫助我們快速定位問題根源。
Zipkin:分布式跟蹤系統,可以用于聚合、可視化和分析分布式系統中的調用鏈路信息。
以上是Spring Cloud的一些常用組件,每個組件都有其獨特的特點和功能,可以根據具體業務場景選擇使用。
Spring Cloud Alibaba常用組件及其簡要介紹:
Nacos:服務注冊與發現、配置管理、流量管理平臺,可以替代Eureka、Config、Ribbon等組件。
Sentinel:流量控制、熔斷降級、系統負載保護等組件,可以替代Hystrix。
Dubbo:高性能Java RPC框架,可以用于實現微服務之間的遠程調用。
RocketMQ:分布式消息中間件,支持消息的廣播、點對點傳輸、順序傳輸等模式。
Seata:分布式事務解決方案,可以保證跨多個數據庫或跨多個服務的操作的一致性和完整性。
Alibaba Cloud SDK:阿里云服務API的封裝,包括云服務器、對象存儲、關系型數據庫等。
Alibaba Cloud OSS:阿里云對象存儲服務,可以用于存儲靜態資源文件。
Alibaba Cloud RDS:阿里云關系型數據庫服務,可以提供MySQL、SQL Server、PostgreSQL等數據庫實例。
Alibaba Cloud ACM:阿里云配置管理服務,可以實現應用程序的動態配置。
以上是Spring Cloud Alibaba的一些常用組件,每個組件都有其獨特的特點和功能,可以根據具體業務場景選擇使用。同時,Spring Cloud Alibaba也與Spring Cloud組件進行了無縫集成,提供了更加完備的微服務解決方案。