1. 程式人生 > >【SpringCloud】(2)---SpringCloud入門篇

【SpringCloud】(2)---SpringCloud入門篇

開發 span zipkin 集成 調用服務 data 但是 優點 難度

SpringCloud理解篇

一、微服務概述

1、什麽是微服務

目前的微服務並沒有一個統一的標準,一般是以業務來劃分將傳統的一站式應用,拆分成一個個的服務,徹底去耦合,一個微服務就是單功能業務,只做一件事。

與微服務相對的叫巨石 。

2、微服務與微服務架構

  • 微服務是一種架構模式或者一種架構風格,提倡將單一應用程序劃分成一組小的服務==獨立部署==,服務之間相互配合、相互協調,每個服務運行於自己的==進程==中。
  • 服務與服務間采用輕量級通訊,如HTTP的RESTful API等
  • 避免統一的、集中式的服務管理機制

3、微服務的優缺點

優點

  1. 每個服務足夠內聚,足夠小,比較容易聚焦
  2. 開發簡單且效率高,一個服務只做一件事情
  3. 開發團隊小,一般2-5人足以(當然按實際為準)
  4. 微服務是松耦合的,無論開發還是部署都可以獨立完成
  5. 微服務能用不同的語言開發
  6. 易於和第三方集成,微服務允許容易且靈活的自動集成部署(持續集成工具有Jenkins,Hudson,bamboo等)
  7. 微服務易於被開發人員理解,修改和維護,這樣可以使小團隊更加關註自己的工作成果,而無需一定要通過合作才能體現價值
  8. 微服務允許你融合最新的技術
  9. ==微服務只是業務邏輯的代碼,不會和HTML,CSS或其他界面組件融合==。
  10. ==每個微服務都可以有自己的存儲能力,數據庫可自有也可以統一,十分靈活==。

缺點

  1. 開發人員要處理分布式系統的復雜性
  2. 多服務運維難度,隨著服務的增加,運維的壓力也會增大
  3. 依賴系統部署
  4. 服務間通訊的成本
  5. 數據的一致性
  6. 系統集成測試
  7. 性能監控的難度

4、微服務的技術棧

微服務條目落地技術
服務開發 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

二、SpringCloud入門概述

Spring的三大模塊:SpringBoot(構建),Spring Cloud(協調),Spring Cloud Data Flow(連接)

1、SpringCloud是什麽

  • 分布式系統的簡化版(官方介紹)
  • SpringCloud基於SpringBoot提供了一整套微服務的解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於Netflix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件
  • SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分布式系統的基礎設施開發,SpringCloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線,全局所、決策精選、分布式會話等等,他們都可以用SpringBoot的開發風格做到一鍵啟動和部署。
  • ==一句話概括:SpringCloud是分布式微服務架構下的一站式解決方案,是各個微服務架構落地技術的幾何體,俗稱微服務全家桶==

2、SpringCloud和SpringBoot的關系

SpringBoot:專註於快速方便的開發單個個體微服務(關註微觀)

SpringCloud:關註全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關註宏觀)

註意:SpringBoot可以離開SpringCloud獨立使用,但是SpringCloud不可以離開SpringBoot,屬於依賴關系

3、Dubbo和SpringCloud比較

DubboSpring
服務註冊中心 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】

【SpringCloud】(2)---SpringCloud入門篇