概述
什麼是微服務?
通常而言,微服務架構指的是一種架構模式或者說一種架構風格;它提倡的是將單一應用程序劃分成一組小的服務,每個微服務提供單個業務功能,一個服務做一件事。
- 每個服務獨立運行於自己的進程,服務之間互相協調、互相配合;
- 服務之間採用輕量級的通信機制(通常是HTTP資源的API);
- 每個服務都圍繞具體的業務進行構建,並且能夠被獨立地部署到生成環境;
- 每個服務獨立管理,可使用不同的語言進行編寫服務,也可以採用不同的數據存儲方式。
微服務的優缺點
優點
- 符合高內聚、低耦合的程序設計思想,代碼容易聚焦在一個指定的業務功能上;
- 有利於團隊管理、協助,微服務可被2-5人小團隊獨立開發,獨立管理,再進行團隊與團隊之間的協作;
缺點
- 分佈式系統的技術性、複雜性要求較高;
- 部署、運維、管理難度隨着服務的數量增加而增大;
- 服務間的通訊成本、數據的查詢與一致性
微服務的技術棧有哪些?
- 服務開發 —— SpringBoot、SpringMVC、Spring
- 服務配置與管理 —— Netflix公司的Archaius、阿里的Diamond
- 服務註冊與發現 —— Eureka、Zookeeper
- 服務調用 —— Rest、RPC、gRPC
- 服務熔斷器 —— Hystrix、Envoy
- 負載均衡 —— Ribbon、Nginx
- 消息隊列 —— Kafka、RabbitMQ、ActiveMQ
- 服務配置中心管理 —— SpringCloudConfig
- 服務路由 —— Zuul
- 服務監控 —— Zabbix、Nagios、Metrics
- 服務部署 —— Docker、OpenStack
- 事件消息總線 —— Spring Cloud Bus
Spring Cloud是什麼
Spring Cloud是一個分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全家桶。
Spring Boot 和Spring Cloud,談談對他們的理解
- Spring Boot專注於快速方便的開發單個個體微服務。
- Spring Cloud則是專注於全局的微服務協調整體治理框架。它是將Spring Boot開發的一個個單體微服務整合並管理起來。
Spring Cloud和Dubbo有那些區別?
活躍度
由於Dubbo再2012年暫停5年直到2017年重新開啓維護期間,Dubbo的社區熱度降低了不少;而Spring Cloud也正是在這期間奠定了很好的基礎,目前社區活躍度,Spring Cloud佔優。
對比
\ | Dubbo | Spring Cloud |
---|---|---|
服務註冊中心 | ZooKeeper | Eureka |
服務調用方式 | RPC | REST API |
服務監控 | Dubbo-monitor | Spring Boot Admin |
熔斷器 | \ | Spring Cloud Netflix Hystrix |
服務網關 | \ | Spring Cloud Netflix Zuul |
分佈式配置 | \ | Spring Cloud Conifg |
服務跟蹤 | \ | Spring Cloud Sleuth |
消息總線 | \ | Spring Cloud Bus |
數據流 | \ | Spring Cloud Stream |
批量任務 | \ | Spring Cloud Task |
… | … | … |
區別
1 通訊方式
Spring Cloud 選用了REST API作爲服務調用方式,而Dubbo選擇使用RPC;
兩種方式各有優劣,RPC的性能更好,但使用REST則更爲靈活;
2 治理方式
作爲微服務整體的治理方案,Dubbo所提供的治理方式較少,僅提供基本的服務通訊、註冊和監控。額外的網關、配置、跟蹤、熔斷器等都使用其他廠家提供的技術方案。而Spring Cloud則可以提供一整套的技術方案。
簡單理解就是:Dubbo使用的治理方案是自行組裝式,而Spring Cloud爲品牌一站式。
總結
阿里2017繼續維護的Dubbo的技術總負責人劉軍曾表示:Dubbo與Spring Cloud並不是完全的競爭關係,兩者所解決的領域並不一樣;Dubbo的定位始終是一款RPC框架,而Spring Cloud的目標是微服務架構下的一站式解決方案。
爲什麼選用Spring Cloud?
選型依據
- 整體解決方案和框架的成熟度比較完善
- 社區熱度較好
- 可維護性較高
- 學習曲線持續增長
各大型公司使用的微服務架構
- 阿里 —— Dubbo/HSF(停更5年)
- 京東 —— JSF(由HSF改造)
- 新浪微博 —— Motan
- 噹噹網 —— DubboX
各微服務框架對比
Spring Cloud 學習
官網:https://spring.io/projects/spring-cloud
中文文檔:https://www.springcloud.cc/spring-cloud-dalston.html
Spring Cloud中國社區:http://springcloud.cn/
Spring Cloud中文網:https://www.springcloud.cc/