SpringCloud註冊中心高可用搭建
Spring Cloud的註冊中心可以由Eureka、Consul、Zookeeper、ETCD等來實現,這裡推薦使用Spring Cloud Eureka來實現註冊中心,它基於Netfilix的Eureka做了二次封裝,完成分散式服務中服務治理的功能,微服務系統中的服務註冊與發現都通過這個註冊中心來進行管理。
引入Eureka Server依賴
之前的文章基礎上加入Spring Cloud的依賴,現在再加入註冊中心Eureka Server的依賴。
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies>
新增啟動類,開啟Eureka Server功能
在包根目錄下加入啟動類:
@EnableEurekaServer @SpringBootApplication public class RegisterApplication { public static void main(String[] args) { new SpringApplicationBuilder(RegisterApplication.class).bannerMode(Banner.Mode.LOG) .run(args); } }
@EnableEurekaServer
註解即開啟註冊中心伺服器的功能。
新增Eureka配置
在application.yml中加入如下配置:
spring: application: name: register-center profiles: active: register-center1 eureka: instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} lease-expiration-duration-in-seconds: ${lease-expiration-duration-in-seconds} lease-renewal-interval-in-seconds: ${lease-renewal-interval-in-seconds} server: enable-self-preservation: ${enable-self-preservation} eviction-interval-timer-in-ms: ${eviction-interval-timer-in-ms} client: register-with-eureka: true fetch-registry: true serviceUrl: defaultZone: ${register-center.urls} --- spring: profiles: register-center1 server: port: ${register-center1.server.port} --- spring: profiles: register-center2 server: port: ${register-center2.server.port}
- 這裡做了兩臺註冊中心的高可用配置register-center1,register-center2,也可以做多臺,既然是高可用,每個註冊中心都向別的註冊中心註冊自己。
- Maven filter配置
- ${}裡面的配置由maven resource filter來打包進行控制,不同的環境使用不同的配置檔案。
如filter-dev.properties的配置參考如下:
#url register-center1.server.ip=192.168.1.22 register-center2.server.ip=192.168.1.23 register-center.urls=http://${register-center1.server.ip}:${register-center1.server.port}/eureka/,http://${register-center2.server.ip}:${register-center2.server.port}/eureka/ #port register-center1.server.port=7001 register-center2.server.port=7002 #config enable-self-preservation=false eviction-interval-timer-in-ms=5000 lease-expiration-duration-in-seconds=20 lease-renewal-interval-in-seconds=6
Spring Cloud配置詳解
Spring Boot的配置參考Spring Boot系列文章,這裡只對Spring Cloud用到的配置解釋。
spring.application.name
:配置應用名稱,在註冊中心中顯示的服務註冊名稱。
spring.cloud.client.ipAddress
:獲取客戶端的IP地址。
eureka.instance.prefer-ip-address
:配置為true為喜歡IP,即連線註冊中心使用IP地址形式,也可以使用HOSTNAME,但生產環境不推薦。
eureka.instance.instance-id
:配置在註冊中心註冊的唯一例項ID。
eureka.instance.lease-expiration-duration-in-seconds
:指示eureka伺服器在接收到最後一個心跳之後等待的時間(秒),然後才能從此檢視中刪除此例項,並禁止此例項的流量。將此值設定得太長可能意味著流量可以路由到例項,即使例項不存在。設定此值太小可能意味著,由於臨時網路故障,例項可能會被取消流量。此值將設定為至少高於lease-renewal-interval-in-seconds中指定的值。
eureka.instance.lease-renewal-interval-in-seconds
:指示eureka客戶端需要向eureka伺服器傳送心跳以指示它仍然存在的頻率(以秒為單位)。如果在lease-expiration-duration-in-seconds中指定的時間段內未收到心跳線,則eureka伺服器將從其檢視中刪除該例項,因此不允許此例項的流量。請注意,如果該例項實現HealthCheckCallback,然後決定使其本身不可用,則該例項仍然可能無法訪問流量。
eureka.server.enable-self-preservation
:配置註冊中心是否開啟服務的自我保護功能。
eureka.server.eviction-interval-timer-in-ms
:配置註冊中心清理無效節點的時間間隔,預設60000毫秒,即60秒。
eureka.client.register-with-eureka
:配置為true指示此例項將其資訊註冊到eureka伺服器以供其他人發現。在某些情況下,您不希望發現例項,而您只想發現其他例項配置為false。
eureka.client.fetch-registry
:指示該客戶端是否應從eureka伺服器獲取eureka登錄檔資訊。。
eureka.client.serviceUrl.defaultZone
:Eureka伺服器地址。
啟動註冊中心
這樣一個兩個註冊心的Eureka Server就搭好了,啟動的時候使用不同的Profile來指定不同的埠。
spring-boot:run -Drun.profiles=register-center1 -P dev spring-boot:run -Drun.profiles=register-center2 -P dev
相關文章
- SpringCloud學習系列之一 ----- 搭建一個高可用的註冊中心(Eureka)SpringGCCloud
- SpringCloud實踐(三) 高可用的Eureka註冊中心SpringGCCloud
- SpringCloud之服務註冊SpringGCCloud
- SpringCloud整合Consul註冊中心SpringGCCloud
- springcloud(二):註冊中心EurekaSpringGCCloud
- 如何在SpringCloud2023中快速整合註冊中心SpringGCCloud
- SpringCloud用zookeeper做註冊中心SpringGCCloud
- Spring Cloud:使用Eureka叢集搭建高可用服務註冊中心SpringCloud
- SpringCloud入門(三)Eureka 註冊中心SpringGCCloud
- springcloud-註冊中心和配置中心SpringGCCloud
- 《springcloud 一》搭建註冊中心,服務提供者,服務消費者SpringGCCloud
- SpringCloud入門(六)Nacos註冊中心(下)SpringGCCloud
- SpringCloud入門(五)Nacos註冊中心(上)SpringGCCloud
- SpringCloud之使用Zookeeper作為註冊中心SpringGCCloud
- 三. SpringCloud服務註冊與發現SpringGCCloud
- SpringCloud——Eureka-微服務的註冊中心SpringGCCloud微服務
- springcloud之服務註冊與發現SpringGCCloud
- 【SpringCloud】consul註冊中心註冊的服務為內網(區域網)IPSpringGCCloud內網
- 業餘草 SpringCloud教程 | 第十篇: 高可用的服務註冊中心(Finchley版本)SpringGCCloud
- SpringCloud之Sentinel高可用流量框架簡單搭建SpringGCCloud框架
- SpringCloud-Alibaba之Nacos服務註冊中心SpringGCCloud
- SpringCloud(3)---Eureka服務註冊與發現SpringGCCloud
- SpringCloud Alibaba Nacos註冊中心原始碼淺析SpringGCCloud原始碼
- SpringCloud服務的註冊與發現(Eureka)SpringGCCloud
- 今天好多人 phpstrom 編譯器註冊碼失效了,最新可用註冊碼PHP編譯
- Spring Cloud 系列(二)Eureka 高可用註冊中心SpringCloud
- Eureka服務註冊不可用問題
- 普通springcloud eureka 和 spring cloud Alibaba nacos 註冊中心SpringGCCloud
- 跟我學SpringCloud | 第二篇:註冊中心EurekaSpringGCCloud
- 微服務SpringCloud之服務註冊與發現微服務SpringGCCloud
- [SpringCloud教程]3. Eureka服務註冊中心整合SpringGCCloud
- SpringCloud-微服務的註冊與發現EurekaSpringGCCloud微服務
- 註冊新加坡公司可用於本地運營,也可用離岸業務
- SpringCloud分散式微服務雲架構 第十篇: 高可用的服務註冊中心(Finchley版本)SpringGCCloud分散式微服務架構
- (15) SpringCloud-使用Eureka叢集搭建實現高可用SpringGCCloud
- (13) SpringCloud-使用Eureka叢集搭建實現高可用SpringGCCloud
- 【SpringCloud】3.OpenFeign——服務註冊與負載均衡SpringGCCloud負載
- 微服務實戰系列(四)-註冊中心springcloud alibaba nacos微服務SpringGCCloud