1. 程式人生 > 其它 >Spring cloud 使用-eureka作為註冊中心

Spring cloud 使用-eureka作為註冊中心

Spring cloud

Spring Cloud 為開發者提供了工具來快速構建分散式系統中的一些常見模式(例如配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、一次性令牌、全域性鎖、領導選舉、分散式 會話,叢集狀態)。 分散式系統的協調導致了樣板模式,使用 Spring Cloud 開發人員可以快速建立實現這些模式的服務和應用程式。 它們在任何分散式環境中都能很好地工作,包括開發人員自己的膝上型電腦、裸機資料中心和 Cloud Foundry 等託管平臺。Spring cloud官網

使用 eureka 作為服務註冊中心

eureka 模組

  <dependencies>
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
  </dependencies>

eureka啟動類

@SpringBootApplication
@EnableEurekaServer
public class EruekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EruekaApplication.class);
    }
}

配置properties.yml

server:
  port: 8761
eureka:
  instance:
    hostname: 127.0.0.1
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enable-self-preservation: false
spring:
  application:
    name: erueka

eureka的具體文件可以通過Spring Cloud Netflix查閱

服務提供者

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

配置 properties.yml

server:
  port: 18081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_consumer?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: consumerservice
mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
logging:
  level:
    cn.geoary: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

啟動類,注意這裡添加了@EnableEurekaClient註解

@MapperScan("cn.geoary.mapper")
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class);
    }
}

提供者提供了一個get請求 http://127.0.0.1:18080/consumer/{id} 的請求方法,用來通過主鍵查詢患者資訊。

服務消費者

消費者的配置與提供者類似,現在只把區別展示下。
呼叫請求方式,通過RestTemplate,注意,這個需要添加註解@LoadBalanced

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

呼叫程式碼段:

private final String CONSUMER_SERVICE = "consumerservice";

String url = "http://" + CONSUMER_SERVICE + "/consumer/" + consumerId;
// String url = "http://127.0.0.1:18081/consumer/" + consumerId;
TConsumer tConsumer = restTemplate.getForObject(url, TConsumer.class);

這樣我們就把之前需要通過寫死的ip:port去呼叫請求的方式調成了 通過微服務名的方式來呼叫了。
通過 eureka 控制檯可以檢視註冊的微服務,也就是這裡的CONSUMERSERVICEDRUGSETVICE了。