1.架構圖
2.構建服務註冊中心(單點)
1.添加依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
2.配置
eureka.environment=beta 指定eureka所在的環境
3.啓動
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
2.構建服務註冊中心(高可用)
EurekaServer的高可用實際上就是將自己作爲服務向其他服務註冊中心註冊自己,這樣就可以形成組互相註冊的
服務注冊中心,以實現服務清單的互相同步,達到高可用的效果。
配置如下
服務註冊中心1
server.port=1111
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://localhost:1112/eureka/(如果有多個則用逗號隔開)
服務註冊中心2
server.port=1112
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
3.註冊服務提供者
1.添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2. 配置
server.port=9527
spring.application.name=mem-favorite
#只提供服務,不消費服務,則不需要拉取服務中心信息
eureka.client.fetch-registry=false
#每隔多久向服務註冊中心續約默認30秒
eureka.instance.lease-renewal-interval-in-seconds=30
#最後續約時間離現在超過多少秒,表示服務失效默認90秒
eureka.instance.lease-expiration-duration-in-seconds=90
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/
3.啓動
@SpringBootApplication
@EnableEurekaClient
public class FavoriteBootApplication {
public static void main(String[] args) {
SpringApplication.run(FavoriteBootApplication.class, args);
}
}
4.服務發現與消費
1.添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
2. 配置
server.port=8088
spring.application.name=mem-web
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/
3.啓動
@SpringBootApplication
@EnableEurekaClient
public class MemWebBootApplication {
@Bean
@Qualifier("loadBalancedRestTemplate")
@LoadBalanced //開啓客戶端負載均衡
public RestTemplate loadBalancedRestTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(MemWebBootApplication.class, args);
}
}
4.通過服務名調用服務
String response= restTemplate.getForObject("http://mem-favorite/Favorite/rest/v1/xxxxx",String.class);
5.配置總結
1.服務註冊中心
eureka.server.eviction-interval-timer-in-ms=1000 每隔多少毫秒去檢測超時沒有續約的服務,並剔除默
認90秒。
eureka.server.enable-self-preservation= true運行期間統計心跳失敗的比例在15分鐘之內低於80%則將
當前的實例註冊信息保護起來,讓這些實例不會過期。默認是true
2.服務提供者
服務註冊
eureka.client.register-with-eureka=true註冊到服務中心默認true
服務續約
eureka.instance.lease-renewal-interval-in-seconds=30每隔多少秒請求服務中心進行續約默認30秒
eureka.instance.lease-expiration-duration-in-seconds=90服務過期時間默認90秒
3.服務消費者
獲取服務
eureka.client.fetch-registry=true默認true
eureka.client.registry-fetch-interval-seconds=30每隔多少秒請求服務中心的服務列表