內容提要
本文涉及以下內容:
- 微服務架構介紹
- spring cloud介紹
- jhipster架構介紹
微服務架構介紹
微服務概念
微服務和SOA很相似,都是按照業務功能把系統拆分成一個一個的服務。比如電子商務系統拆分成訂單服務,商品服務等,每個微服務都是自治的,可以單獨部署。
微服務和SOA的區別是:微服務粒度更細,通信協議傾向於使用restfull api 而不使用webservice。
微服務有很多優點,包括松散耦合、自治服務、分散化治理以及易於持續交付等等。
微服務大的缺點是服務的可用性、數據的一致性等
微服務架構和單體應用架構對比:
微服務架構技術關注點
首先看一個概覽圖:
從上圖可以看出,主要分為交付和開發兩個方面,微服務化后需要部署眾多的獨立程序,給運維帶來了較大的壓力,使用docker可以很好的解決這個問題。
現在主要說下開發方面的技術點
1 服務注冊、發現、負載均衡,容錯(服務注冊中心->兼配置中心)
2 服務間的通信(消息模式,RPC模式)
3 api網關(路由,監控,安全認證,日志,限流)
4 微服務周邊設施:日志中心,監控中心 ,文檔自動生成
spring cloud介紹
Spring Cloud是Springframework里的一個項目,提供了開發分布式系統中比較常見的一些模式能力。其中配置管理(Config Server)、服務發現(Eureka)、服務熔斷(Hystrix)、網關(Zuul)等是基於Netflix OSS的一個封裝,利用Java注解(annotation)聲明,可以在Spring Boot應用里便捷地使用Netflix的開源產品構建生產級可用的微服務應用
jhipster介紹
jhipster是一個方便的代碼生成工具。可以生成整套微服務架構項目基礎代碼,后端使用spring(spring cloud ,spring boot等),前端使用angularjs。
jhipster 還有兩個重要的開源項目,
- jhipster-registry,基於 Spring Cloud Netflix Eureka 和 Spring Cloud Config,實現服務注冊、發現,配置管理等
- jhipster-console,基於ELK,實現日志中心和監控中心。
jhipster架構圖1:
jhipster架構圖2:
jhipster各組件啟動順序
- 啟動jhipster-registry --服務和網關依賴注冊中心,如果不先啟動注冊中心,服務和網關啟動不了。
- 啟動jhipster-console--如果使用這個控制台的話需要優先於具體服務啟動
- 啟動具體服務--例如訂單服務,商品服務。服務啟動時會把自己注冊到注冊中心,方便別的服務或網關調用
- 啟動網關--這里的網關指jhipster生成的gateway類型的項目,是一個基於angular的前端
參考文檔:
0. jhipster中文網站
本文涉及的開源項目介紹:
-
Netflix ribbon 可以實現進程內(客戶側)負載均衡,配合netflix eureka 可以實現動態服務列表
-
Netflix eureka Eureka是一個服務注冊表,由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務注冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。
-
Netflix Hystrix 通過控制那些訪問遠程系統、服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信號隔離,請求緩存和請求打包(request collapsing,即自動批處理,譯者注),以及監控和配置等功能。
-
Netflix zuul Zuul 是提供動態路由,監控,彈性,安全等的網關服務
-
spring-cloud-netflix 該項目是Spring Cloud的子項目之一,主要內容是對Netflix公司一系列開源產品的包裝,它為Spring Boot應用提供了自配置的Netflix OSS整合。通過一些簡單的注解,開發者就可以快速的在應用中配置一下常用模塊並構建龐大的分布式系統。它主要提供的模塊包括:服務發現(Eureka),斷路器(Hystrix),智能路有(Zuul),客戶端負載均衡(Ribbon)等。
-
jhipster-registry,基於 Spring Cloud Netflix Eureka 和 Spring Cloud Config,實現服務注冊、發現,配置管理等
-
jhipster-console,基於ELK,實現日志中心和監控中心。