Spring Cloud Eureka是spring cloud的核心組件,負責服務治理功能,起到中心樞紐做用,其它組件都依賴eureka來獲取服務,而後再根據項目需求實現本身的業務,eureka在整個微服務架構中的位置絕對是核心地位。web
(一) 版本說明spring
a) Spring boot 2.0.6.RELEASEdocker
b) Spring cloud Finchley.SR2瀏覽器
c) Java version 1.8架構
(二) 項目設置app
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>2.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
spring: profiles: active: test-1001 application: name: discover-services eureka: datacenter: ctm instance: environment: dev server: client: management: endpoints: web.exposure.include: "*" endpoint: health: show-details: ALWAYS --- server: port: 1001 eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 60000 renewal-percent-threshold: 0.85 client: service-url: defaultZone: http://${eureka.instance.hostname}:1002/eureka/,http://${eureka.instance.hostname}:1003/eureka/ register-with-eureka: true fetch-registry: true healthcheck: enabled: true instance: hostname: ${eureka.instance.ip-address} prefer-ip-address: true ip-address: 192.168.1.129 lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 instance-id: ${eureka.instance.ip-address}:${server.port} spring: profiles: test-1001 --- server: port: 1002 eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 60000 renewal-percent-threshold: 0.85 instance: hostname: ${eureka.instance.ip-address} prefer-ip-address: true ip-address: 192.168.1.129 lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 instance-id: ${eureka.instance.ip-address}:${server.port} client: service-url: defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1003/eureka/ register-with-eureka: true fetch-registry: true healthcheck: enabled: true spring: profiles: test-1002 --- server: port: 1003 eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 60000 renewal-percent-threshold: 0.85 instance: hostname: ${eureka.instance.ip-address} prefer-ip-address: true ip-address: 192.168.1.129 lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 instance-id: ${eureka.instance.ip-address}:${server.port} client: service-url: defaultZone: http://${eureka.instance.hostname}:1001/eureka/,http://${eureka.instance.hostname}:1002/eureka/ register-with-eureka: true fetch-registry: true healthcheck: enabled: true spring: profiles: test-1003
a) spring.profiles.active 設置當前使用的配置項,通常多配置場景下使用,這裏爲了eureka高可用,設置了3個實例,在運行實例的時候,能夠動態設置。spring-boot
b) spring.application.name 項目名稱微服務
c) server.port 運行端口號fetch
d) eureka.server.enable-self-preservation 是否啓用自我保護功能,該功能默認是啓用,但爲了快速的響應服務的上下線,通常在開發環境把自我保護功能禁用url
e) client.client.service-url.defaultZone 服務註冊中心地址,這裏是交叉設置3個服務自理實例
f) client.instance.lease-renewal-interval-in-seconds 發送心跳的頻率
g) client.instance.lease-expiration-duration-in-seconds 失效間隔,這個主要是判斷客戶端還活着,通常設置爲client.instance.lease-renewal-interval-in-seconds的3倍。
h) 其它參數說明能夠參考官方說明,須要說明的是spring cloud 每次版本迭代都有配置參數的變動,最好是參考相對應的版本參數說明
(三) 項目運行
修改/etc/hosts 文件,添加以下設置
127.0.0.1 server1
127.0.0.1 server2
127.0.0.1 server3
sudo docker run --name discoverservice-1001 -d -p 1001:1001 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server2:1002/eureka/,http://server3:1003/eureka/ --eureka.instance.hostname=server1 --eureka.instance.ip-address=server1 --spring.profiles.active=dev-1001 -Xms128m -Xmx512m" discoverservice/discoverservice sudo docker run --link discoverservice-1001:server1 --name discoverservice-1002 -d -p 1002:1002 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server3:1003/eureka/ --eureka.instance.hostname=server2 --eureka.instance.ip-address=server2 --spring.profiles.active=dev-1002 -Xms128m -Xmx512m" discoverservice/discoverservice sudo docker run --link discoverservice-1002:server2 --link discoverservice-1001:server1 --name discoverservice-1003 -d -p 1003:1003 -e ACTIVE=" --eureka.client.service-url.defaultZone=http://server1:1001/eureka/,http://server2:1002/eureka/ --eureka.instance.hostname=server3 --eureka.instance.ip-address=server3 --spring.profiles.active=dev-1003 -Xms128m -Xmx512m" discoverservice/discoverservice
我這裏是docker運行,運行後,能夠查看運行效果
a) 能夠看到3個服務都在運行,其實你能夠訪問3個端口的任何一個,均可以看到該效果,同時該界面也顯示了一些環境信息,好比有效內存、已經運行的時長 等等。
b) 關於docker鏡像生成、docker 私有倉庫請翻閱我之前的文章。
這樣spring cloud eureka服務自理就介紹完了,若是在開發中遇到問題,也能夠留言共同探討共同進步。