1. 程式人生 > >SpringCloud微服務開發-Eureka叢集配置

SpringCloud微服務開發-Eureka叢集配置

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服務請求,測試結果如下: