Spring Cloud是目前用於開發微服務的主流框架之一,咱們都知道在微服務架構中最爲基礎、核心的模塊,就是服務註冊與發現。git
在Spring Cloud裏咱們可使用它的Eureka模塊來實現服務註冊與發現,Spring Cloud Eureka是基於Netflix Eureka作了二次封裝,它主要負責完成各個微服務實例的自動化註冊和發現功能。算法
Eureka包含兩個組件:Eureka Server和Eureka Clientspring
Eureka Server提供服務註冊服務,各個節點啓動後,會在EurekaServer中進行註冊,這樣EurekaServer中的服務註冊表中將會存儲全部可用服務節點的信息,服務節點的信息能夠在界面中直觀的看到架構
EurekaClient是一個Java客戶端,用於簡化Eureka Server的交互,客戶端同時也具有一個內置的、使用輪詢(round-robin)負載算法的負載均衡器。在應用啓動後,將會向Eureka Server發送心跳(默認週期爲30秒)。若是Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,EurekaServer將會從服務註冊表中把這個服務節點移除(默認90秒) app
一、單點部署 若是是idea,能夠直接直接new project >> springinitializr >> cloud discovery 按着步驟操做,就能夠搭建一個單點eureka server負載均衡
二、集羣部署 通常生產環境都是三個或以上節點,集羣中的每一個節點也是把本身當一個提供者相互註冊 application.yml配置以下框架
server: port: 8761 spring: application: name: eureka profiles: active: dev security: basic: enabled: false # 啓用身份認證 user: name: lipeng # 定義用戶名 password: lipeng. # 定義密碼 --- spring: profiles: prd-1 eureka: instance: hostname: register1 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.166 server: #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題 enable-self-preservation: false eviction-interval-timer-in-ms: 5000 --- spring: profiles: prd-2 eureka: instance: hostname: register2 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.171 server: #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題 enable-self-preservation: false eviction-interval-timer-in-ms: 5000 --- spring: profiles: prd-3 eureka: instance: hostname: register3 client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ instance: prefer-ip-address: true ip-address: 200.200.0.167 server: #配置屬性,但因爲 Eureka 自我保護模式以及心跳週期長的緣由,常常會遇到 Eureka Server 不剔除已關停的節點的問題 enable-self-preservation: false eviction-interval-timer-in-ms: 5000
打包後部署時在啓動命令中增長 --spring.profile.active=prd-1/prd-2/prd-3 啓動後以下:
這樣纔算部署成功,若是上面兩個節點是在unavailable-replicas中則是沒有成功的。ide
通常是不建議在k8s中使用eureka,不過有時候若是須要的話,則部署時最好填寫域名。設置該變量就行 微服務
這個就比較簡單了,網上有不少例子 pom依賴fetch
<!--註冊中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
增長註解 yml配置
spring: profiles: dev eureka: instance: prefer-ip-address: true lease-renewal-interval-in-seconds: 5 lease-expiration-duration-in-seconds: 20 hostname: ${spring.application.name} client: serviceUrl: defaultZone: http://lipeng:lipeng.@200.200.0.166:8761/eureka/,http://lipeng:lipeng.@200.200.0.167:8761/eureka/,http://lipeng:lipeng.@200.200.0.171:8761/eureka/ registry-fetch-interval-seconds: 10
實際上defaultZone只須要配置一個節點,其餘節點也會自動同步。 啓動服務就能夠看到
詳細代碼見:https://gitee.com/lpxs/lp-springcloud.git,上面的是配置中心的部署demo。