最近項(xiàng)目使用到了spring boot 與spring cloud搭建的微服務(wù), 現(xiàn)在簡(jiǎn)單的記錄一下怎么去管理這么微服務(wù)的技術(shù),簡(jiǎn)單的使用,有新的見解會(huì)持續(xù)更新
spring cloud eureka :? ? ? ?
一 : 定義 :
? ? ? ? 服務(wù)治理是微服務(wù)架構(gòu)最核心基礎(chǔ)的模塊, 用來實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊(cè)和發(fā)現(xiàn).簡(jiǎn)單的說就是一個(gè)注冊(cè)中心, 獲取服務(wù)提供者的服務(wù), 向消費(fèi)者提供服務(wù)
二 : 服務(wù)注冊(cè) :
? ? ? ? 在服務(wù)治理框架中,通常都會(huì)構(gòu)建一個(gè)注冊(cè)中心酌予,每個(gè)服務(wù)單元向注冊(cè)中心登記自己提供的服務(wù)奖慌,包括服務(wù)的主機(jī)與端口號(hào)抛虫、服務(wù)版本號(hào)简僧、通訊協(xié)議等一些附加信息。注冊(cè)中心按照服務(wù)名分類組織服務(wù)清單岛马,同時(shí)還需要以心跳檢測(cè)的方式去監(jiān)測(cè)清單中的服務(wù)是否可用阅茶,若不可用需要從服務(wù)清單中剔除谅海,以達(dá)到排除故障服務(wù)的效果。
三 : 服務(wù)發(fā)現(xiàn) :
????????在服務(wù)治理框架下扭吁,服務(wù)間的調(diào)用不再通過指定具體的實(shí)例地址來實(shí)現(xiàn),而是通過服務(wù)名發(fā)起請(qǐng)求調(diào)用實(shí)現(xiàn)蝌诡。服務(wù)調(diào)用方通過服務(wù)名從服務(wù)注冊(cè)中心的服務(wù)清單中獲取服務(wù)實(shí)例的列表清單,通過指定的負(fù)載均衡策略取出一個(gè)服務(wù)實(shí)例位置來進(jìn)行服務(wù)調(diào)用浦旱。
四 : 項(xiàng)目中的實(shí)際使用 :
1. 注冊(cè)服務(wù) :?
① : 項(xiàng)目描述
? ? ? ? 本項(xiàng)目是一個(gè)spring boot管理的微服務(wù), 有多個(gè)子模塊, 暫且稱為 A - G , 多模塊開發(fā)難免會(huì)從在模塊與模塊之間的接口調(diào)用, 本項(xiàng)目中就使用spring cloud eureka來管理這些服務(wù)的注冊(cè)和調(diào)用 .
② : spring boot pom.xml 配置
<dependency>
????????<groupId>org.springframework.cloud</groupId>
? ? ? ? <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
????????<groupId>org.springframework.cloud</groupId>
????????<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
③ : service-eureka 模塊配置
③ : 模塊服務(wù)的注冊(cè)和調(diào)用 :
? ? ? ? 啟動(dòng)項(xiàng)使用?@EnableFeignClients 注解可以實(shí)現(xiàn)調(diào)用其他模塊接口的功能 , 既可以在注冊(cè)中心獲取其他模塊注冊(cè)上的接口信息
配置文件中的service-url 指的是service-eureka的地址, 保證我們模塊可以注冊(cè)到eureka上
④ : 啟動(dòng)eureka?
? ? ? ? 本項(xiàng)目使用的是Jenkins自動(dòng)構(gòu)建, 后面會(huì)寫一篇Jenkins的使用
⑤ : 啟動(dòng)其他模塊,注冊(cè)到eureka上
注意 : 有時(shí)候這里會(huì)出現(xiàn)EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.提示,這是在出現(xiàn)一個(gè)服務(wù)我們注冊(cè)多次的提示語 , 這屬于一種心跳檢測(cè) , 我們可以去強(qiáng)行關(guān)閉
在eureka的yml文件上添加 eureka.server.enableSelfPreservation=false
2. 模塊之間的服務(wù)調(diào)用 :
① : 新建一個(gè)rpc接口信息類?
? ? ? ? 使用注解@FeignClient(value ="需要調(diào)用模塊名")
client類中的接口信息就是value 值對(duì)應(yīng)的模塊在eureka上注冊(cè)是服務(wù) , 我們?cè)谑褂玫氖褂弥苯幼詣?dòng)注入這個(gè)client, 調(diào)用接口即可
五 : 添加eureka注冊(cè)中心的訪問權(quán)限 :
? ? ? ? 為了防止第三方人員訪問注冊(cè)中新的服務(wù),我們添加權(quán)限的管理
? ? ? ? 1.? 注冊(cè)中心添加依賴
????????<!-- 添加注冊(cè)中心權(quán)限依賴 -->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.springframework.boot</groupId>
? ? ? ? ? ? <artifactId>spring-boot-starter-security</artifactId>
? ? ? ? </dependency>
? ? ? ? ?2.?在注冊(cè)中心服務(wù)添加bootstrop.yml文件甥捺,內(nèi)容如下
????????????security:
? ????????????? basic:
? ? ????????????? enabled: true
? ????????????? user:
? ? ? ????????????name: <span style="color:#009900;">admin</span>
? ? ? ????????????password: <span style="color:#009900;">admin</span>
? ? ? ? 3.在需要注冊(cè)的客戶端服務(wù)application.properties文件中配置注冊(cè)中心地址中加入訪問的用戶名和密碼
????????????????eureka.client.serviceUrl.defaultZone=http://admin:admin@${eureka.instance.hostname}:7070/eureka/