您好,登錄后才能下訂單哦!
這篇文章主要介紹“SpringCloud Eureka服務注冊中心應用入門實例分析”,在日常操作中,相信很多人在SpringCloud Eureka服務注冊中心應用入門實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringCloud Eureka服務注冊中心應用入門實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
分布式節點中的服務宕機或者重啟不影響客戶端使用
分布式節點中的服務宕機重啟不影響業務服務內部通信
如果在某個分布式系統中想要解決上述問題,那么這篇文章就是精華之處。
回顧一下以前的常用手段:
單節點運行,其他節點備用,無法無縫連接,內網通信無法保證
多節點運行,nginx轉發,這種時候需要加探測,內網通信需要先走到nginx
多節點運行,再運行gateway做靜態轉發,宕機節點無法過濾
那么服務注冊與發現就油然而生。
Eureka是什么?
Eureka是springcloud的核心模塊之一,它是一個基于RestFul的服務,用于實現中間層服務發現和故障轉移,Eureka對于微服務來說是非常重要的。
有了Eureka后,在服務中通信只需要使用對應的服務表示,不再需要再配置文件中配一堆地址了,功能類似于dubbo的注冊中心zookeeper。
Eureka原理
Eureka采用C/S的架構設計,所有的客戶端都往服務端注冊,在客戶端中都與Eureka服務端保持心跳連接,在內網通信中可以直接使用服務名來調用其他服務,例如zuul、gatewway、內網RPC通信。
Eureka基于心跳的形式保持連接,在客戶端啟動后,默認每30s往服務端發送心跳,如果服務端在默認90s(三個周期)后沒有接收客戶端的心跳,則會將這個客戶端移除。
基于springboot2.6.8,spring-cloud-dependencies2021.0.3
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.8</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
eureka服務端依賴
<!--注冊中心eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
yml配置
server:
port: 7510eureka:
instance:
hostname: localhost
#顯示真實IP 顯示DS replicas副本集
prefer-ip-address: true
client:
# false表示自己端就是注冊中心,不需要去檢索服務
fetch-registry: false
# false表示不向注冊中心注冊自己,因為自己本身就是注冊中心
register-with-eureka: false
#其他服務的注冊地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
#關閉自我保護
enable-self-preservation: false
#啟用主動失效,并且每次主動檢測客戶端 間隔為3s 默認60s
#解決失聯服務沒被移除的問題
eviction-interval-timer-in-ms: 3000
Java代碼
啟動類添加注解
@SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
獲取當前已注冊的服務信息
List<Application> applications = EurekaServerContextHolder.getInstance().getServerContext().getRegistry().getSortedApplications(); applications.forEach(application -> { application.getInstances().forEach(info -> { //c.e.e.controller.EurekaTestController : ORDER-SERVICE -- localhost:order-service:7530 log.info("{} -- {}", info.getAppName(), info.getInstanceId()); }); });
<!--注冊中心eureka client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server:
port: 7530eureka:
client:
service-url:
#服務端注冊地址
defaultZone: http://127.0.0.1:7510/eureka/
instance:
#控制臺status顯示真實ip 需要配合prefer-ip-address
# instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
#顯示真實IP
prefer-ip-address: true
#每3秒發送心跳,證明存活
lease-renewal-interval-in-seconds: 3
#告知服務端超過5秒未收到當前服務心跳視為掛掉
lease-expiration-duration-in-seconds: 5spring:
application:
name: order-service
jackson:
default-property-inclusion: non_null
time-zone: Asia/Shanghai
cloud:
inetutils:
#指定取網段的網卡 未開始真實ip時默認就是localhost
preferred-networks: 192.168.0
preferred-networks和prefer-ip-address
均配置時,如下圖所示
都不配置時,如下圖所示,此時內網ip是不通的
啟動類上加@EnableEurekaClient
注解
訪問http://127.0.0.1:7510/
,注意不是服務注冊地址
同一個服務不同端口,一個客戶端打開了instance-id
配置,顯示的是真實IP。一個未打開顯示的是localhost
PS:目前這個配置已在線上跑過,未發現其他問題!
到此,關于“SpringCloud Eureka服務注冊中心應用入門實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。