學習SpringCloud(2)註冊中心Eureka

Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是springcloud體系中最重要最核心的組件之一。spring

上圖簡要描述了Eureka的基本架構,由3個角色組成:springboot

  • 一、Eureka Server

提供服務註冊和發現bash

  • 二、Service Provider

服務提供方 將自身服務註冊到Eureka,從而使服務消費方可以找到架構

  • 三、Service Consumer

服務消費方 從Eureka獲取註冊服務列表,從而可以消費服務app

項目實踐ide

新建三個springboot項目 測試

建立成功以後,修改一下配置文件,刪除以前的application.properties 文件,使用application.ymlfetch

註冊中心:ui

spring:
  application:
    name: spring-cloud-eureka-server
server:
  port: 8910
eureka:
# instance:
# hostname: peer1
  client:
    #registerWithEureka 和 fetchRegistry 設置爲false,代表本身屬於服務中心主體
    registerWithEureka: false #是否將本身註冊到eureka server,構建集羣環境時,需將本身註冊到集羣中,默認爲true
    fetchRegistry: false #是否從eureka server獲取註冊信息,構建集羣環境時,需同步其餘eureka server節點,默認爲true
    serviceUrl:
      defaultZone: http://127.0.0.1:${server.port}/eureka/
複製代碼

啓動類加上註解:spa

@EnableEurekaServer
複製代碼

生產者:

spring:
  application:
    name: spring-cloud-eureka-pro
server:
  port: 8911
eureka:
# instance:
# hostname: peer2
  client:
    #registerWithEureka 和 fetchRegistry 設置爲false,代表本身屬於服務中心主體
    registerWithEureka: true #是否將本身註冊到eureka server,構建集羣環境時,需將本身註冊到集羣中,默認爲true
    fetchRegistry: true #是否從eureka server獲取註冊信息,構建集羣環境時,需同步其餘eureka server節點,默認爲true
    serviceUrl:
      defaultZone: http://127.0.0.1:8910/eureka/
複製代碼

啓動類加上註解:

@EnableEurekaClient

複製代碼

測試接口:

@RestController
public class TestController {

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String home(@RequestParam String name)
    {
        return "hi " + name + ",i am from port:" + port;
    }
}

複製代碼

消費者:

spring:
  application:
    name: spring-cloud-eureka-cus
server:
  port: 8912
eureka:
# instance:
# hostname: peer3
  client:
    #registerWithEureka 和 fetchRegistry 設置爲false,代表本身屬於服務中心主體
    registerWithEureka: true #是否將本身註冊到eureka server,構建集羣環境時,需將本身註冊到集羣中,默認爲true
    fetchRegistry: true #是否從eureka server獲取註冊信息,構建集羣環境時,需同步其餘eureka server節點,默認爲true
    serviceUrl:
      defaultZone: http://127.0.0.1:8910/eureka/
複製代碼

啓動類加上註解:

@EnableDiscoveryClient

複製代碼

service:

@Service
public class TestService {
    @Autowired
    RestTemplate restTemplate;

    public String hiService(String name)
    {
        return restTemplate.getForObject("http://spring-cloud-eureka-pro/hi?name=" + name, String.class);
    }
}


複製代碼

controller:

@RestController
public class TestController {
    @Autowired
    TestService testService;

    @RequestMapping(value = "/hi")
    public String hi(@RequestParam String name) {
        return testService.hiService(name);
    }
}

複製代碼

啓動三個項目,訪問http://127.0.0.1:8910/,查看註冊的實例

直接訪問生產者的測試方法

訪問消費者

經過端口能夠看到消費者訪問的是生產的接口

相關文章
相關標籤/搜索