Eureka搭建項目實現負載均衡

Eureka就是一個管各個微服務之間調用的服務,之所以能夠實現負載均衡是因爲F版本里面集成了Ribbon

1、首先創建一個web項目然後集成Eureka Server,也是就服務註冊中心

  • yml配置:
  • server:
      port: 8081 #服務註冊中心端口號
    eureka:
      instance:
        hostname: 127.0.0.1 #服務註冊中心IP地址
      client:
        registerWithEureka: false #是否向服務註冊中心註冊自己
        fetchRegistry: false #是否檢索服務
        serviceUrl: #服務註冊中心的配置內容,指定服務註冊中心的位置
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

     

2、然後創建另一個項目,集成Eureka的client ,可以創建多個client以便互相調用對方的業務方法

  • yml配置文件
  • eureka:
      client:
        serviceUrl: #註冊中心的註冊地址
          defaultZone: http://127.0.0.1:8081/eureka/
    server:
      port: 8082 #服務端口號
    spring:
      application:
        name: service-provider #服務名稱--調用的時候根據名稱來調用該服務的方法

     

 3、至於則麼區別就在於spring.application.name:服務名稱,當然名稱可以重複,名稱重複就會在你請求這個服務的時候他會輪詢。

 

調用業務方法使用的是restTemplete ,不過使用前需要配置一下,將他實例化

  /**
     * 實例化RestTemplate
     * @return
     */
    @LoadBalanced//負載均衡
    @Bean
    public RestTemplate rest() {
        return new RestTemplate();
    }

然後controller

    /**
     * @param id
     * @return
     */
    @GetMapping(value = "/findUser")
    public User getUser(@RequestParam Integer id){
        Map<String,Object> data = new HashMap<>();
        //getForObject中的url http://+yml配置文件中的application的name(service-provider)然後加上對應的參數
        data = restTemplate.getForObject("http://service-provider/getUser?id="+id,Map.class);
        User user = new User();
        user.setId(Long.valueOf(data.get("id").toString()));
        user.setFrom(data.get("from").toString());
        user.setUserName(data.get("userName").toString());
        return user;
    }

然後給你們看下我兩個service-provider中的getUser 的Controller

 @GetMapping(value = "/getUser")
    public Map<String, Object> getUser(@RequestParam Integer id) {
        Map<String, Object> data = new HashMap<>();
        data.put("id", id);
        data.put("userName", "admin");
        data.put("from", "provider-A");
        return data;
    }
 @GetMapping(value = "/getUser")
    public Map<String, Object> getUser(@RequestParam Integer id) {
        Map<String, Object> data = new HashMap<>();
        data.put("id", id);
        data.put("userName", "admin");
        data.put("from", "provider-B");
        return data;
    }

然後反覆請求這個接口你會發現 from會輪迴切換如圖,也就實現了負載均衡:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章