Spring Cloud:Eureka叢集
阿新 • • 發佈:2020-09-04
一.兩臺Eureka
修改host檔案:
127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com
分別配置兩臺Eureka的yml
server: port: 7001 eureka: instance: hostname: eureka7001.com #eureka服務端的例項名稱 client: #false表示不向註冊中心註冊自己 register-with-eureka: false #false表示自己就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務 fetch-registry: false service-url: #設定eureka server互動的地址查詢服務和註冊服務都需要依賴這個地址 defaultZone: http://eureka7002.com:7002/eureka server: port: 7002 eureka: instance: hostname: eureka7002.com #eureka服務端的例項名稱 client: #false表示不向註冊中心註冊自己 register-with-eureka: false #false表示自己就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務 fetch-registry: false service-url: #設定eureka server互動的地址查詢服務和註冊服務都需要依賴這個地址 defaultZone: http://eureka7001.com:7001/eureka
訪問:兩臺Eureka分別可以訪問非自己本身的Eureka
二.服務註冊進Eureka叢集
yml配置:
server: port: 8001 spring: application: name: cloud-payment-service datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/db2020?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 1234 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.wj.springcloud.entities eureka: client: #是否將自己註冊到Eureka Server 預設為true register-with-eureka: true #是否從EurekaServer抓取已有的註冊資訊,預設為true,單節點無所謂,叢集必須設定true才能配合ribbon做負載均衡 fetch-registry: true service-url: #設定eureka server互動的地址查詢服務和註冊服務都需要依賴這個地址 #defaultZone: http://localhost:7001/eureka defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
服務啟動,顯示已經註冊
服務8002的叢集配置:
server: port: 8002 eureka: client: #是否將自己註冊到Eureka Server 預設為true register-with-eureka: true #是否從EurekaServer抓取已有的註冊資訊,預設為true,單節點無所謂,叢集必須設定true才能配合ribbon做負載均衡 fetch-registry: true service-url: #設定eureka server互動的地址查詢服務和註冊服務都需要依賴這個地址 #defaultZone: http://localhost:7001/eureka defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
消費者:
RestTemplate配置:
在Spring Cloud
微服務應用體系中,遠端呼叫都應負載均衡。我們在使用RestTemplate
作為遠端呼叫客戶端的時候,開啟負載均衡極其簡單:一個@LoadBalanced
註解就搞定了
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
controller呼叫
@Slf4j
@RestController
public class OrderController {
public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/create")
public CommonResult<Payment> create( Payment payment){
return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);
}
@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPayment(@PathVariable("id")Long id){
return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
}
}
拓撲圖: