javascript
微服务架构案例(05):SpringCloud 基础组件应用设计
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
更新進(jìn)度(共6節(jié)):
01:項(xiàng)目技術(shù)選型簡(jiǎn)介,架構(gòu)圖解說(shuō)明
02:業(yè)務(wù)架構(gòu)設(shè)計(jì),系統(tǒng)分層管理
03:數(shù)據(jù)庫(kù)選型,業(yè)務(wù)數(shù)據(jù)設(shè)計(jì)規(guī)劃
04:中間件集成,公共服務(wù)管理
05:SpringCloud 基礎(chǔ)組件應(yīng)用設(shè)計(jì)
一、組件應(yīng)用規(guī)劃
1、注冊(cè)中心
Eureka 組件是 Netflix 開發(fā)的,用于定位服務(wù),基于RESTFul方式實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)。包括一個(gè)EurekaServer服務(wù)端(通常是指微服務(wù)中的注冊(cè)中心) 和EurekaClient客戶端(通常指微服務(wù)中的業(yè)務(wù)服務(wù))。Eureka支持高可用的配置,當(dāng)注冊(cè)中心發(fā)現(xiàn)有故障的服務(wù)時(shí),Eureka就會(huì)轉(zhuǎn)入自動(dòng)保護(hù)模式,故障時(shí)不影響服務(wù)的發(fā)現(xiàn)和注冊(cè),當(dāng)故障恢復(fù)正常時(shí),注冊(cè)中心的服務(wù)會(huì)進(jìn)行狀態(tài)同步,繼續(xù)提供服務(wù)。
2、服務(wù)調(diào)用
Feign 組件是一個(gè)聲明式的 WebService客戶端。在Eureka注冊(cè)的服務(wù)中,可以使用Feign接口的形式來(lái)進(jìn)行相關(guān)服務(wù)間的請(qǐng)求調(diào)用,并提供超時(shí)回退,快速熔斷的相關(guān)特性。Feign是一個(gè)便利的RestFul框架,簡(jiǎn)化調(diào)用,通過(guò)ribbon在注冊(cè)服務(wù)器中找到服務(wù)實(shí)例,然后對(duì)請(qǐng)求進(jìn)行服務(wù)分配,實(shí)現(xiàn)了負(fù)載均衡的效果,默認(rèn)采用輪詢算法。
3、服務(wù)網(wǎng)關(guān)
GateWay網(wǎng)關(guān),可以讓所有客戶端請(qǐng)求先通過(guò)微服務(wù)網(wǎng)關(guān),跟網(wǎng)關(guān)進(jìn)行交互,由網(wǎng)關(guān)進(jìn)行各個(gè)微服務(wù)的請(qǐng)求轉(zhuǎn)發(fā),客戶端(前端)對(duì)多服務(wù)架構(gòu)無(wú)感知。降低客戶端與微服務(wù)之間的交互耦合度;便于監(jiān)控,可在網(wǎng)關(guān)中監(jiān)控?cái)?shù)據(jù);在網(wǎng)關(guān)層統(tǒng)一處理認(rèn)證,規(guī)劃切面編程;也就是說(shuō)與業(yè)務(wù)本身功能無(wú)關(guān)的公共邏輯可以在網(wǎng)關(guān)層統(tǒng)一封裝實(shí)現(xiàn),類似設(shè)計(jì)模式中的門面模式。
二、注冊(cè)中心
1、服務(wù)端配置
eureka:server:enable-self-preservation: falseeviction-interval-timer-in-ms: 15000instance:prefer-ip-address: trueclient:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://127.0.0.1:5001/eureka/2、客戶端配置
eureka:instance:prefer-ip-address: trueclient:service-url:defaultZone: http://127.0.0.1:5001/eureka/三、Feign組件
1、Feign接口
@FeignClient("MOPSZ-SOFT-ROCKET") public interface UserSearchFeign {@GetMapping("/mq/user/search/sendBookSearch")void sendBookSearch (@RequestParam("msgContent") String msgContent) ; }2、Feign接口實(shí)現(xiàn)
@RestController public class UserSearchController implements UserSearchFeign {@Overridepublic void sendBookSearch(String msgContent) {} }3、接口配置
該配置文件在實(shí)現(xiàn)Feign接口的項(xiàng)目中配置就好,也可針對(duì)特定方法配置。
feign:hystrix:enabled: trueclient:config:feignName:connectTimeout: 60000readTimeout: 600004、Feign接口調(diào)用
@Resource private UserSearchFeign userSearchFeign ; userSearchFeign.sendBookSearch("");四、服務(wù)網(wǎng)關(guān)
1、網(wǎng)關(guān)組件配置
zuul:# 前綴,可以用來(lái)做版本控制prefix: /v1# 禁用默認(rèn)路由,執(zhí)行配置的路由ignored-services: "*"routes:# 配置 Token 服務(wù)pro6601:serviceId: mopsz-basis-tokenpath: /api/6601/**# 配置 UserClient 服務(wù)pro6102:serviceId: mopsz-user-clientpath: /api/6102/**- 配置FilterConfig進(jìn)行用戶Token認(rèn)證攔截;
- 配置FallBackConfig進(jìn)行服務(wù)降級(jí)響應(yīng)管理;
2、項(xiàng)目部署
在項(xiàng)目上線后,對(duì)外暴露一個(gè)網(wǎng)關(guān)服務(wù)端口,其他服務(wù)端口不對(duì)外暴露,所有的請(qǐng)求都必須通過(guò)網(wǎng)關(guān)攔截或者轉(zhuǎn)發(fā),這就是微服務(wù)提供服務(wù)的一種常見方式。
五、源代碼地址
GitHub·地址 https://github.com/cicadasmile/husky-spring-cloud GitEE·地址 https://gitee.com/cicadasmile/husky-spring-cloud總結(jié)
以上是生活随笔為你收集整理的微服务架构案例(05):SpringCloud 基础组件应用设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一级建造师考试通过了 !
- 下一篇: 浅谈JSP自定义标签实现过程