javascript
Spring Cloud 微服务入门(二)--Spring Cloud 架构
Spring Cloud整體核心架構(gòu):Rest服務(wù),在Spring Cloud配置過程中,都是遵循Rest風(fēng)格規(guī)范,在Rest處理中,必不可少兩個(gè)對(duì)象端:服務(wù)的提供者(provider)和服務(wù)消費(fèi)者(consumer)
所以整個(gè)Spring Cloud的基礎(chǔ)結(jié)構(gòu)如下所示:
?
?
既然Spring Cloud的核心是Restful架構(gòu),那么如果想更好的去使用微服務(wù)好需要考慮這些問題:
1、所有的微服務(wù)的地址可能非常多,為了統(tǒng)一管理這些地址,也為了能夠即時(shí)告訴用戶哪些服務(wù)不可用用,為此必不可少一個(gè)分布式注冊(cè)中心,并且注冊(cè)中心支持HA機(jī)制(High Availability),為了高效且方便的服務(wù)注冊(cè),Spring Cloud使用Eureka服務(wù)注冊(cè)中心。
?
2、對(duì)于整個(gè)的WEB端的架構(gòu)(Spring Boot實(shí)現(xiàn)),可以進(jìn)行輕松方便的WEB程序編寫,而后利用Nginx或Apache實(shí)現(xiàn)負(fù)載均衡,這是WEB端端的負(fù)載均衡,那么業(yè)務(wù)端呢?應(yīng)該也提供多個(gè)業(yè)務(wù)端進(jìn)行負(fù)載均衡,這時(shí)將所有需要參與到負(fù)載均衡的業(yè)務(wù)端在Eureka之中進(jìn)行注冊(cè)。
?
在進(jìn)行客戶端使用Rest架構(gòu)調(diào)用的時(shí)候,都需要有一個(gè)調(diào)用地址,即使使用了Eureka作為注冊(cè)中心,也需要有一個(gè)明確的調(diào)用地址,但是所有的操作都利用訪問地址的方式來調(diào)用。程序的開發(fā)者最方便的應(yīng)用工具是接口,更好的方式是將所有的Rest服務(wù)的內(nèi)容以接口的方式調(diào)用,所以它有提供了feign技術(shù),利用feign可以偽造接口。
3、在進(jìn)行整體微服務(wù)架構(gòu)設(shè)計(jì)的時(shí)候由于牽扯到的問題還是屬于RPC,所以不可避免考慮到熔斷處理機(jī)制,所謂上的熔斷就好比用電安全之中的保險(xiǎn)絲,假設(shè)現(xiàn)在有若干個(gè)微服務(wù),并且這些微服務(wù)之間允許相互調(diào)用,例如,A服務(wù)調(diào)用B服務(wù)、B服務(wù)又調(diào)用了C服務(wù)。
?
如果實(shí)際開發(fā)中沒有設(shè)計(jì)好熔斷處理機(jī)制,那么就會(huì)出現(xiàn)雪崩效應(yīng),所以為了防止這樣的災(zāi)難問題出現(xiàn),Spring Cloud里面提供有Hystrix熔斷處理機(jī)制,以保證某一個(gè)微服務(wù)出現(xiàn)問題之后依然可以正常提供服務(wù)信息,但是這個(gè)返回的服務(wù)信息可能已經(jīng)不是期望的結(jié)果,而是服務(wù)故障的信息,讓調(diào)用方知道該服務(wù)出現(xiàn),避免擴(kuò)大更大范圍的影響。
?
?
?
?
4、在進(jìn)行微服務(wù)訪問的時(shí)候還有一點(diǎn)是非常可怕的,客戶端調(diào)用Rest微服務(wù)時(shí)需要知道所有微服務(wù)的名稱信息,如果服務(wù)多名稱也會(huì)多,操作起來非常麻煩,同時(shí)增加日后維護(hù)成本。
?
通過Zuul的代理用戶只需要知道指定的路由的路徑就可以訪問指定的微服務(wù)的信息,這樣更好提現(xiàn)了Java中“key=value”的設(shè)計(jì)方案,而且所有的微服務(wù)通過Zuul進(jìn)行代理之后也可以更加安全的名稱的隱藏。
?
5、在Spring Boot里面突出“零配置”的概念,原則上不再使用任何配置文件,但是事實(shí)上沒有完全實(shí)現(xiàn),因?yàn)樵谡w的設(shè)計(jì)里面,依然會(huì)提供application.yml等配置文件,那么在微服務(wù)創(chuàng)建之中,一定有成百上千個(gè)微服務(wù),于是這些配置文件的管理就成為問題,維護(hù)起來就不是件容易的事了。
為了解決這樣的問題,Spring Cloud的設(shè)計(jì)中提供一個(gè)SpringCloudConfig的程序組件,利用這個(gè)組件就可以直接基于Git或SVN來進(jìn)行配置文件的管理。
?
由此可見,在整體設(shè)計(jì)上SpringCloud更好的實(shí)現(xiàn)了RPC的架構(gòu)設(shè)計(jì),而且使用了Rest作為通信的基礎(chǔ),這是它無與倫比之處,同時(shí)大量使用了Netflix公司的產(chǎn)品實(shí)踐技術(shù),所以這些技術(shù)也有可靠保證。
作者: xiaogao
出處: http://www.cnblogs.com/tocode/
關(guān)于作者:專注Java Web,網(wǎng)絡(luò)爬蟲,請(qǐng)多多賜教!
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但務(wù)必注明出處,且在文章頁面明顯位置給出, 原文鏈接 如有問題請(qǐng)咨詢。
轉(zhuǎn)載于:https://www.cnblogs.com/tocode/p/8996964.html
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud 微服务入门(二)--Spring Cloud 架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle APEX 系列文章2:在阿
- 下一篇: 20165320 第十周课上测试补做