目前的微服務並無一個統一的標準,通常是以業務來劃分將傳統的一站式應用,拆分紅一個個的服務,完全去耦合,一個微服務就是單功能業務,只作一件事。ios
與微服務相對的叫巨石 。數據庫
優勢架構
缺點app
微服務條目 | 落地技術 |
---|---|
服務開發 | SpringBoot,Spring,SpringMVC |
服務配置與管理 | Netflix公司的Archaius、阿里的Diamond等 |
服務註冊與發現 | Eureka、Consul、Zookeeper等 |
服務調用 | Rest、RPC、gRPC |
服務熔斷器 | Hystrix、Envoy等 |
負載均衡 | Ribbon、Nginx等 |
服務接口調用(客戶端調用服務的簡化工具) | Feign等 |
消息隊列 | Kafka、RabbitMQ、ActiveMQ等 |
服務配置中心管理 | SpringCloudConfig、Chef等 |
服務路由(API網關) | Zuul等 |
服務監控 | Zabbix、Nagios、Metrics、Specatator等 |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
服務部署 | Docker、OpenStack、Kubernetes等 |
數據流操做開發包 | SpringCloud Stream(封裝與Redis,Rabbit,Kafka等發送接收消息) |
事件消息總線 | SpringCloud Bus |
Spring的三大模塊:SpringBoot(構建),Spring Cloud(協調),Spring Cloud Data Flow(鏈接) 負載均衡
SpringBoot:專一於快速方便的開發單個個體微服務(關注微觀)框架
SpringCloud:關注全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關注宏觀)運維
注意:SpringBoot能夠離開SpringCloud獨立使用,可是SpringCloud不能夠離開SpringBoot,屬於依賴關係分佈式
Dubbo | Spring | |
---|---|---|
服務註冊中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服務調用方式 | RPC | REST API |
服務監控 | Dubbo-monitor | Spring Boot Admin |
斷路器 | 不完善 | Spring Cloud Netflix Hystrix |
服務網關 | 無 | Spring Cloud Netflix Zuul |
分佈式配置 | 無 | Spring Cloud Config |
服務跟蹤 | 無 | Spring Cloud Sleuth |
消息總線 | 無 | Spring Cloud Bus |
數據流 | 無 | Spring Cloud Stream |
批量任務 | 無 | Spring Cloud Task |
最大區別微服務
(1)Spring Cloud拋棄了RPC通信,採用基於HTTP的REST方式。Spring Cloud犧牲了服務調用的性能,可是同時也避免了原生RPC帶來的問題。REST比RPC更爲靈活,不存在代碼級別的強依賴,在強調快速演化工具
的微服務環境下,顯然更合適。
(2)Dubbo像組裝機,Spring Cloud像一體機
(3)社區的支持與力度:Dubbo曾經停運了5年,雖然重啓了,可是對於技術發展的新需求,仍是須要開發者自行去拓展,對於中小型公司,顯然顯得比較費時費力,也不必定有強大的實力去修改源碼
總結
解決的問題域不同:Dubbo的定位是一款RPC框架,Spring Cloud的目標是微服務架構下的一站式解決方案
想太多,作太少,中間的落差就是煩惱。想沒有煩惱,要麼別想,要麼多作。中校【8】