SpringCloud微服務開發-Eureka叢集配置
阿新 • • 發佈:2019-01-11
SpringCloud微服務開發-Eureka叢集配置
Eureka叢集圖例
Eureka叢集配置例子如下:
以上圖為例,在我們的Eureka伺服器裡面會啟動兩個例項,這兩個例項會相互註冊。
然後服務提供者也會啟動兩個例項,這兩個例項都會註冊到我們伺服器的兩個例項,像圖中那樣一個服務提供者例項分別向兩個伺服器例項註冊;服務呼叫者也會註冊到兩個伺服器例項上面。
Eureka服務叢集及微服務註冊於發現工程截圖如下:
修改對映配置
找到C:\Windows\System32\drivers\etc路徑下的hosts檔案,
修改對映檔案新增配置項如下:
127.0.0.1 eureka8001.com
127.0.0.1 eureka8002.com
127.0.0.1 eureka8003.com
Eureka服務啟動類
分別在Eureka服務啟動類上加入Eureka的註解標籤@EnableEurekaServer:
@SpringBootApplication @EnableEurekaServer // EurekaServer伺服器端啟動類,接受其它微服務註冊進來 public class EurekaServer8001_App { public static void main(String[] args) { SpringApplication.run(EurekaServer8001_App.class, args); } }
EurekaServer的yml配置
springcloud-eureka8001的yml配置:
server: port: 8001 eureka: instance: hostname: eureka8001.com #eureka服務端的例項名稱 client: register-with-eureka: false #false表示不向註冊中心註冊自己。 fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務 service-url: #單機 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。 defaultZone: http://eureka8002.com:8002/eureka/,http://eureka8003.com:8003/eureka/
springcloud-eureka8002的yml配置:
server:
port: 8002
eureka:
instance:
hostname: eureka8002.com #eureka服務端的例項名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
service-url:
#單機 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
defaultZone: http://eureka8001.com:8001/eureka/,http://eureka8003.com:8003/eureka/
springcloud-eureka8003的yml配置:
server:
port: 8003
eureka:
instance:
hostname: eureka8003.com #eureka服務端的例項名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
service-url:
#單機 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
defaultZone: http://eureka8001.com:8001/eureka/,http://eureka8002.com:8002/eureka/
以上,Eureka的叢集已經配置完成,測試Eureka叢集效果:
分別執行以上三個EurekaServer的啟動程式,可以看到叢集效果如下:
將微服務註冊進Eureka叢集中
這裡以一個簡單的微服務例子舉例,編寫微服務啟動程式如下:
@SpringBootApplication
@EnableEurekaClient //本服務啟動後會自動註冊進eureka服務中
@EnableDiscoveryClient //提供服務發現,對外暴露自己。
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})//測試demo,不需要注入dataSource bean
public class Provider8081_App
{
public static void main(String[] args)
{
SpringApplication.run(Provider8081_App.class, args);
}
}
微服務入駐Eureka叢集的yml配置(關鍵點):
server:
port: 8081
spring:
application:
name: springcloud-provider8081
eureka:
client: #客戶端註冊進eureka服務列表內
service-url:
#defaultZone: http://localhost:8001/eureka
defaultZone: http://eureka8001.com:8001/eureka/,http://eureka8002.com:8002/eureka/,http://eureka8003.com:8003/eureka/ #入駐eureka叢集
instance:
instance-id: springcloud-provider8081
prefer-ip-address: true #訪問路徑可以顯示IP地址
info:
app.name: springcloud-provider8081
company.name: https://blog.csdn.net/yangwenxue_admin
build.artifactId: $project.artifactId$
build.version: $project.version$
微服務註冊到Eureka叢集中,測試結果如下:
微服務後臺提供了一個簡單的Rest服務請求,測試結果如下: