1. 程式人生 > 實用技巧 >Spring Cloud:Eureka叢集

Spring Cloud:Eureka叢集

一.兩臺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);
    }
}

拓撲圖: