您好,登錄后才能下訂單哦!
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
1)、基礎(chǔ)組件
Eureka組件,服務(wù)注冊(cè)與發(fā)現(xiàn)
Ribbon和Feign組件,實(shí)現(xiàn)負(fù)載均衡
Hystrix組件,實(shí)現(xiàn)服務(wù)熔斷
Turbine組件,實(shí)現(xiàn)微服務(wù)集群監(jiān)控
Zuul組件,實(shí)現(xiàn)路由網(wǎng)關(guān)控制
Config組件,實(shí)現(xiàn)配置統(tǒng)一管理
Zipkin組件,實(shí)現(xiàn)請(qǐng)求鏈路追蹤
2)、應(yīng)用案例
基于Shard-Jdbc分庫(kù)分表,數(shù)據(jù)庫(kù)擴(kuò)容方案
基于SpringCloud實(shí)現(xiàn)Shard-Jdbc的分庫(kù)分表擴(kuò)容
3)、后續(xù)更新
該案例主要基于SpringCloud2版本,演示微服務(wù)在實(shí)際開(kāi)發(fā)中的應(yīng)用。
<modules>
<!-- 客戶端接口層 -->
<module>storey-client-web</module>
<!-- 公共代碼塊層 -->
<module>storey-block-code</module>
<!-- 中間件管理層 -->
<module>storey-middle-soft</module>
<!-- 數(shù)據(jù) 中 心層 -->
<module>storey-data-center</module>
<!-- 微服務(wù)組件層 -->
<module>storey-cloud-ware</module>
</modules>
采用版本
Eureka是一種基于REST的服務(wù),主要用于AWS云,用于定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。此服務(wù)稱(chēng)為EurekaServer??蛻舳私M件EurekaClient,它使與服務(wù)的交互變得更加容易。
Ribbon是一個(gè)客戶端的負(fù)載均衡(Load Balancer,簡(jiǎn)稱(chēng)LB)器,它提供對(duì)大量的HTTP和TCP客戶端的訪問(wèn)控制。
Feign 是一個(gè)聲明式的 Web Service 客戶端。它的出現(xiàn)使開(kāi)發(fā) Web Service 客戶端變得很簡(jiǎn)單。使用 Feign 只需要?jiǎng)?chuàng)建一個(gè)接口加上對(duì)應(yīng)的注解,比如:@FeignClient 接口類(lèi)注解。
微服務(wù)架構(gòu)中某個(gè)微服務(wù)發(fā)生故障時(shí),要快速切斷服務(wù),提示用戶,后續(xù)請(qǐng)求,不調(diào)用該服務(wù),直接返回,釋放資源,這就是服務(wù)熔斷。
微服務(wù)架構(gòu)中為了保證程序的可用性,防止程序出錯(cuò)導(dǎo)致網(wǎng)絡(luò)阻塞,出現(xiàn)了斷路器模型。斷路器的狀況反應(yīng)程序的可用性和健壯性,它是一個(gè)重要指標(biāo)。HystrixDashboard是作為斷路器狀態(tài)的一個(gè)組件,提供了數(shù)據(jù)監(jiān)控和直觀的圖形化界面。
Zuul 網(wǎng)關(guān)主要提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全管控等功能。在分布式的微服務(wù)系統(tǒng)中,系統(tǒng)被拆為了多個(gè)微服務(wù)模塊,通過(guò)zuul網(wǎng)關(guān)對(duì)用戶的請(qǐng)求進(jìn)行路由,轉(zhuǎn)發(fā)到具體的后微服務(wù)模塊中。
在微服務(wù)系統(tǒng)中,服務(wù)較多,相同的配置:如數(shù)據(jù)庫(kù)信息、緩存、參數(shù)等,會(huì)出現(xiàn)在不同的服務(wù)上,如果一個(gè)配置發(fā)生變化,需要修改很多的服務(wù)配置。spring cloud提供配置中心,來(lái)解決這個(gè)場(chǎng)景問(wèn)題。
Zipkin是SpringCloud微服務(wù)系統(tǒng)中的一個(gè)組件,實(shí)現(xiàn)了鏈路追蹤解決方案??梢远ㄎ灰粋€(gè)請(qǐng)求到底請(qǐng)求了哪些具體的服務(wù)。在復(fù)雜的微服務(wù)系統(tǒng)中,如果請(qǐng)求發(fā)生了異常,可以快速捕獲問(wèn)題所在的服務(wù)。
SpringBoot專(zhuān)注于快速開(kāi)發(fā)單個(gè)微服務(wù)。SpringCloud是關(guān)注全局的微服務(wù)協(xié)調(diào)框架,它將SpringBoot開(kāi)發(fā)的單個(gè)微服務(wù)整合管理,并為微服務(wù)之間提供,配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由網(wǎng)關(guān)等集成服務(wù),SpringCloud依賴(lài)SpringBoot。
服務(wù)調(diào)用方式是 Dubbo 和 Spring Cloud 重要不同點(diǎn),熟悉RPC/HTTP/REST概念,有助對(duì)比 Dubbo 和SpringCloud。RPC 是遠(yuǎn)端過(guò)程調(diào)用,其調(diào)用協(xié)議通常包含傳輸協(xié)議和編碼協(xié)議。RPC調(diào)用是面向服務(wù)的封裝,針對(duì)服務(wù)的可用性和效率等都做了優(yōu)化。http是超文本傳輸協(xié)議,RPC 也可以用http作為傳輸協(xié)議,但一般是用 tcp作為傳輸協(xié)議。
Dubbo 采用單一長(zhǎng)連接和NIO異步通訊(保持連接/輪詢(xún)處理),使用自定義報(bào)文的TCP協(xié)議,并且序列化使用定制Hessian2框架,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況,但不適用于傳輸大數(shù)據(jù)的服務(wù)調(diào)用。Spring Cloud 直接使用 HTTP 協(xié)議,在性能上弱于Dubbo。
這里通常指ZooKeeper(Dubbo注冊(cè)中心)和Eureka(Cloud注冊(cè)中心)的對(duì)比。分布式領(lǐng)域著名的CAP理論(C:數(shù)據(jù)一致性,A:服務(wù)可用性,P:分區(qū)故障的容錯(cuò)性),Zookeeper保證的是CP,但對(duì)于服務(wù)發(fā)現(xiàn)而言,可用性比數(shù)據(jù)一致性更加重要,AP勝過(guò)CP,而 Eureka 設(shè)計(jì)則遵循 AP 原則。
Dubbo 專(zhuān)注 RPC 和服務(wù)治理,Spring Cloud 則是一個(gè)微服務(wù)架構(gòu)生態(tài)。
GitHub·地址
https://github.com/cicadasmile/spring-cloud-base
GitEE·地址
https://gitee.com/cicadasmile/spring-cloud-base
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。