Spring Cloud學習之-什么是Spring Cloud?


SpringCloud

什么是微服務?

要想學習微服務,首先需要知道什么是微服務?為什么會有微服務?相信看完架構的發展史讀者就會明白

架構發展史

單體應用架構

1580046416056

如圖所示:將所有的模塊,所有內容(頁面、Dao、Service、Controller)全部寫入一個項目中,放在一個Tomcat容器中啟動適用於小型項目

優點:開發速度快,可以利用代碼生成工具快速的開發一個項目

缺點:不易擴展,代碼耦合度高,且不容錯(當某部分出錯后整個服務就會停止運行)

垂直架構

1580046801449

既然原來單體架構中代碼耦合度高,不利於維護和運行,人們自然就想到將不同的內容分開。最簡單合理的方式就是將系統按照功能划分成不同的模塊,然后將各模塊獨立放入不同的Web容器中,這就形成了垂直架構

優點:代碼耦合度降低,且不同模塊之間可以獨立運行。一旦某個模塊壓力過大,可以針對性的搭集群

缺點:模塊之間有可能不是那么完全獨立,導致實體類或者其他層代碼不能復用,需要多出粘貼,不方便日后維護。如果直接通過HTTP調用又不是很合理。

分布式架構/分布式SOA架構

分布式架構顧名思義就是分散部署在不同的機器上的服務,一個服務可能負責幾個功能,是一種面向SOA架構的,服務之間也是通過rpc來交互或者是webservice來交互的架構。從開發的角度看就是Controller層(服務消費者)和Service層(服務提供者)分成不同的項目,部署在不同的服務器上,通過RPC(遠程方法調用)來實現交互。阿里巴巴著名的Dubbo框架就是作為分布式架構的框架。一般推薦使用Zookeeper作為服務的注冊中心,負責注冊和發現服務的提供者,並供服務的消費者消費

微服務

微服務的提出者馬丁·福勒關於微服務的論文中文翻譯版

單體架構和微服務的比較圖示:

1580103548314

微服務的核心就是將傳統的一站式應用,根據業務拆分成一個個原子應用。徹底地去耦合,一個服務只做一件事情,從技術角度講就是一個服務就是一個進程,可以單獨啟動或銷毀,擁有獨立的數據庫。並且通過配置中心可以方便的切換數據庫等。

優點:

  • 每個服務足夠內聚,足夠小,代碼容易理解,一個服務可能就是專一的只干一件事。開發簡單、開發效率提高
  • 微服務能夠被小團隊單獨開發,這個小團隊可以是由2到5人的開發人員組成
  • 微服務能使用不同的語言開發。易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具,如Jenkins, Hudson, bamboo 。微服務允許你利用融合最新技術。
  • 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。

缺點:

  • 開發人員要處理分布式系統的復雜性,會面臨分布式事務、分布式一致性等問題
  • 多服務運維難度,隨着服務的增加,運維的壓力也在增大
  • 服務間通信成本變高

微服務的技術棧

微服務條目 落地技術 備注
服務開發 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、Spectator等
全鏈路追蹤 Zipkin,Brave、Dapper等
服務部署 Docker、OpenStack、Kubernetes等
數據流操作開發包 SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)
事件消息總線 Spring Cloud Bus

什么是Spring Cloud

Spring Cloud 是實現微服務思想落地開發的一整套技術的集合

1580132941867

Spring Cloud和Dubbo的區別圖解

1580133791055

Spring Cloud開發者文檔中文版:

https://springcloud.cc/spring-cloud-dalston.html

Spring Cloud中國社區

http://springcloud.cn/

Spring Cloud中文網

https://springcloud.cc/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM