1. 程式人生 > >SpringCloud(二)Eureka叢集與Feign

SpringCloud(二)Eureka叢集與Feign

兩個Eureka

上一篇是兩個服務像一個Eureka註冊,如果Eureka宕掉了就不好了,現在來搭建兩個Eureka,兩個服務分別像其註冊。兩個Eureka都用本機來模擬,用兩個埠號來表示。
首先修改C:\Windows\System32\drivers\etc的hosts檔案,在最下面新增127.0.0.1 node1 node2,然後將dis-manager工程的application.properties一個變成兩個

server.port=8888

eureka.instance.hostname=node1
# 不向註冊中心註冊自己
eureka.client.register-with-eureka=false

# 不需要檢索服務
eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://node2:${server.port}/eureka/
server.port=9999

eureka.instance.hostname=node2
# 不向註冊中心註冊自己
eureka.client.register-with-eureka=false

# 不需要檢索服務
eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://node1:${server.port}/eureka/

接下來使用mvn clean package命令將整個工程打成jar包,並且切換到jar包的位置使用java -jar dis-manager-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1

分別啟動兩個Eureka,就可以了。
哦對了,服務註冊的時候需要將兩個Eureka都註冊一下。

eureka.client.serviceUrl.defaultZone=http://node1:8888/eureka/,http://node2:9999/eureka/

使用Feign宣告式呼叫

因為Feign相較ribbon更加簡單優雅,我們公司都是用的Feign,由於我們是在order服務中呼叫user服務,所以在order服務中設定。具體只需要三個步驟:

1.引入依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

將order服務的主類添加註解@EnableFeignClients

2.在order服務中建立被呼叫user服務的介面

@FeignClient(name = "dis-user")
public interface UserFeign {

    @RequestMapping("/user/getUser")
    User getUser();

}

3.在order服務的controller裡呼叫

@Autowired
private UserFeign userFeign;

Logger logger = LoggerFactory.getLogger(OrderController.class);

@RequestMapping("/getOrderByFeign")
public Order getOrderByFeign() {
    User user = userFeign.getUser();
    Order order = new Order(1001, "酸牛奶", user);
    logger.info(order.toString());
    return order;
}

程式碼比較簡單,都放在Github上了https://github.com/Bihanghang/Dis-SpringBoot,有問題希望一起探討。