目前微服務是非常火的架構或者說概念,也是在構建大型互聯網項目時采用的架構方式。
1.單體架構
單體架構,是指將開發好的項目打成war包,然后發布到tomcat等容器中的應用。
假設你正准備開發一款與Uber和Hailo競爭的出租車調度軟件,經過初步會議和需求分析,你可能會手動或者使用基於Spring Boot、Play或者Maven的生成器開始這個新項目,它的六邊形架構是模塊化的,架構圖如下:
應用核心是業務邏輯,由定義服務、域對象和事件的模塊完成。圍繞着核心的是與外界打交道的適配器。適配器包括數據庫訪問組件、生產和處理消息的消息組件,以及提供API或者UI訪問支持的web模塊等。
盡管也是模塊化邏輯,但是最終它還是會打包並部署為單體式應用。具體的格式依賴於應用語言和框架。例如,許多Java應用會被打包為WAR格式,部署在Tomcat或者Jetty上,而另外一些Java應用會被打包成自包含的JAR格式,同樣,Rails和Node.js會被打包成層級目錄。
這種應用開發風格很常見,因為IDE和其它工具都擅長開發一個簡單應用,這類應用也很易於調試,只需要簡單運行此應用,用Selenium鏈接UI就可以完成端到端測試。單體式應用也易於部署,只需要把打包應用拷貝到服務器端,通過在負載均衡器后端運行多個拷貝就可以輕松實現應用擴展。在早期這類應用運行的很好。
2. 單體架構存在的問題
3. 什么是微服務?
4. 微服務架構的特征
5. 微服務架構示例
6. SpringCloud簡介
1.SpringCloud子項目
Component |
Camden.SR7 |
Dalston.SR3 |
Edgware.M1 |
Finchley.M2 |
Finchley.BUILD-SNAPSHOT |
備注 |
spring-cloud-aws |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
用於簡化整合AmazonWebService的組件 |
spring-cloud-bus |
1.2.2.RELEASE |
1.3.1.RELEASE |
1.3.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
事件、消息總線,用於傳播集群中的狀態變化或事件。 |
spring-cloud-cli |
1.2.4.RELEASE |
1.3.4.RELEASE |
1.4.0.M1 |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
用於在Groovy平台創建SpringCloud應用。 |
spring-cloud-commons |
1.1.9.RELEASE |
1.2.3.RELEASE |
1.3.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
服務發現、負載均衡、熔斷機制這種模式為Spring Cloud客戶端提供了一個通用的抽象層。 |
spring-cloud-contract |
1.0.5.RELEASE |
1.1.3.RELEASE |
1.2.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
|
spring-cloud-config |
1.2.3.RELEASE |
1.3.2.RELEASE |
1.4.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
配置管理工具,支持使用git、svn等存儲配置文件。並在支持客戶端配置信息的刷新,加密解密配置內容等。 |
spring-cloud-netflix |
1.2.7.RELEASE |
1.3.4.RELEASE |
1.4.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
核心組件,對多個NetflixOSS開源套件進行整合。 |
spring-cloud-security |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
安全工具包。 |
spring-cloud-cloudfoundry |
1.0.1.RELEASE |
1.1.0.RELEASE |
1.1.0.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
整合Pivotal Cloudfoundry(Vmware推出的業界第一個開源PaaS雲平台)支持。 |
spring-cloud-consul |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
服務發現與配置管理工具 |
spring-cloud-sleuth |
1.1.3.RELEASE |
1.2.4.RELEASE |
1.3.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
Spring Cloud應用的分布式跟蹤實現。 |
spring-cloud-stream |
Brooklyn.SR3 |
Chelsea.SR2 |
Ditmars.M2 |
Elmhurst.M1 |
Elmhurst.BUILD-SNAPSHOT |
通過Redis、RabbitMQ、Kafka實現的消息微服務。 |
spring-cloud-zookeeper |
1.0.4.RELEASE |
1.1.2.RELEASE |
1.2.0.M1 |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
基於ZooKeeper的服務發現與配置管理組件。 |
spring-boot |
1.4.5.RELEASE |
1.5.4.RELEASE |
1.5.6.RELEASE |
2.0.0.M3 |
2.0.0.M3 |
|
spring-cloud-task |
1.0.3.RELEASE |
1.1.2.RELEASE |
1.2.0.RELEASE |
2.0.0.M1 |
2.0.0.RELEASE |
用於快速構建數據處理的應用。 |
spring-cloud-vault |
|
1.0.2.RELEASE |
1.1.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
|
spring-cloud-gateway |
|
|
1.0.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
SpringCloud網關相關的整合實現。 |
2. 版本說明
3. SpringCloud框架特點
7.和springboot的關系
Spring boot 是 Spring 的一套快速配置腳手架,可以基於spring boot 快速開發單個微服務,Spring Cloud是一個基於Spring Boot實現的雲應用開發工具;
Spring boot專注於快速、方便集成的單個個體,Spring Cloud是關注全局的服務治理框架;
spring boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基於Spring boot來實現,可以不基於Spring boot嗎?不可以。
Spring boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring boot,屬於依賴的關系。
spring -> spring booot > spring cloud 這樣的關系。
8.springCloud的優勢
微服務的框架那么多比如:dubbo,為什么就要使用Spring Cloud的呢?
- 產出於spring大家族,spring在企業級開發框架中無人能敵,來頭很大,可以保證后續的更新、完善。比如dubbo現在就差不多死了
- 有spring Boot 這個獨立干將可以省很多事,大大小小的活spring boot都搞的挺不錯。
- 作為一個微服務治理的大家伙,考慮的很全面,幾乎服務治理的方方面面都考慮到了,方便開發開箱即用。
- Spring Cloud 活躍度很高,教程很豐富,遇到問題很容易找到解決方案
- 輕輕松松幾行代碼就完成了熔斷、均衡負責、服務中心的各種平台功能