一,原理
????????在實(shí)際生產(chǎn)環(huán)境中,為了防止微服務(wù)模塊由于單個(gè)服務(wù)節(jié)點(diǎn)阻塞掛掉而導(dǎo)致整體服務(wù)雪崩,微服務(wù)模塊需要部署多個(gè)服務(wù)節(jié)點(diǎn),而當(dāng)其他微服務(wù)模塊代碼在調(diào)用某服務(wù)模塊時(shí),需要寫入被調(diào)用的服務(wù)節(jié)點(diǎn)的ip和端口,但多個(gè)服務(wù)節(jié)點(diǎn)的ip端口不一致,如何寫入我們需要的服務(wù)節(jié)點(diǎn)的ip端口?ip地址和端口也必須去查看被調(diào)用的服務(wù)模塊代碼才能知道,也不知道被調(diào)用的模塊的各個(gè)服務(wù)節(jié)點(diǎn)是否還暢通,這時(shí)需要注冊(cè)中心來(lái)處理微服務(wù)模塊之間調(diào)用關(guān)系。
? ? ??
問(wèn)題1:order-service如何得知user-service實(shí)例地址?
獲取地址信息的流程如下:
-
user-service服務(wù)實(shí)例啟動(dòng)后,將自己的信息注冊(cè)到eureka-server(Eureka服務(wù)端)。這個(gè)叫服務(wù)注冊(cè)
-
eureka-server保存服務(wù)名稱到服務(wù)實(shí)例地址列表的映射關(guān)系
-
order-service根據(jù)服務(wù)名稱,拉取實(shí)例地址列表。這個(gè)叫服務(wù)發(fā)現(xiàn)或服務(wù)拉取
問(wèn)題2:order-service如何從多個(gè)user-service實(shí)例中選擇具體的實(shí)例?
-
order-service從實(shí)例列表中利用負(fù)載均衡算法選中一個(gè)實(shí)例地址
-
向該實(shí)例地址發(fā)起遠(yuǎn)程調(diào)用
問(wèn)題3:order-service如何得知某個(gè)user-service實(shí)例是否依然健康,是不是已經(jīng)宕機(jī)?
-
user-service會(huì)每隔一段時(shí)間(默認(rèn)30秒)向eureka-server發(fā)起請(qǐng)求,報(bào)告自己狀態(tài),稱為心跳
-
當(dāng)超過(guò)一定時(shí)間沒(méi)有發(fā)送心跳時(shí),eureka-server會(huì)認(rèn)為微服務(wù)實(shí)例故障,將該實(shí)例從服務(wù)列表中剔除
-
order-service拉取服務(wù)時(shí),就能將故障實(shí)例排除了
????????
二,nacos配置
Nacos是SpringCloudAlibaba的組件,而SpringCloudAlibaba也遵循SpringCloud中定義的服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)規(guī)范。因此使用Nacos和使用Eureka對(duì)于微服務(wù)來(lái)說(shuō),并沒(méi)有太大區(qū)別。
主要差異在于:
-
依賴不同
-
服務(wù)地址不同
1)引入依賴
在cloud-demo父工程的pom文件中的<dependencyManagement>
中引入SpringCloudAlibaba的依賴:
<dependency> ? ?<groupId>com.alibaba.cloud</groupId> ? ?<artifactId>spring-cloud-alibaba-dependencies</artifactId> ? ?<version>2.2.6.RELEASE</version> ? ?<type>pom</type> ? ?<scope>import</scope> </dependency>
然后在user-service和order-service中的pom文件中引入nacos-discovery依賴:
<dependency> ? ?<groupId>com.alibaba.cloud</groupId> ? ?<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
注意:不要忘了注釋掉eureka的依賴。
2)配置nacos地址
在user-service和order-service的application.yml中添加nacos地址:
spring: cloud: ? nacos: ? ? discovery: ? ? ? server-addr: localhost:8848
注意:不要忘了注釋掉eureka的地址
3)重啟
重啟微服務(wù)后,登錄nacos管理頁(yè)面,可以看到微服務(wù)信息。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-769919.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-769919.html
到了這里,關(guān)于Eureka注冊(cè)中心實(shí)現(xiàn)原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!