Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用-服务提供和消费

由于 Eureka 注册中心只是在内存中保存服务注册实例,并且没有将服务注册实例进行同步,因此我们需要对服务提供和消费进行调整,需要指定服务提供和消费的注册、服务发现的具体Eureka 注册中心配置,由于配置了Eureka 注册中心高可用,因此也必须配置多个 Eureka 注册中心。

服务提供配置

在之前的服务提供项目中进行改造,我们需要调整 src/main/resources 目录中的 application.yml 配置文件,调整后配置如下:

#配置应用名称

spring:

application:

name:helloworld-provider

#服务端口

server:

#设置eureka服务注册中心的地址,如果多个以逗号分割

eureka:

client:

service-url:

#defaultZone表示默认的区域的eureka服务地址,多个使用逗号分割

defaultZone:http://eurekaserver01:9000/eureka/,http://eurekaserver02:9000/eureka/

在 defaultZone 属性中,配置了Eureka 注册中心的多个地址,这表示服务提供者需要向多个 Eureka 注册中心进行注册,为了更好的测试一个服务部署多个位置,我们调整一下 REST 服务代码,如下:

@RestController

public class HelloWorldController{

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

private int port;

@RequestMapping(method=RequestMethod.GET,name="speak")

public String speak(@RequestParam(value="body",required=false)Stringbody){

if(body==null||body.equals("")){

return"helloworldport:"+port;

}

return"speak"+body+"port:"+port;

}

}

服务消费配置

在之前的服务提供项目中进行改造,我们需要调整 src/main/resources 目录中的 application.yml 配置文件,调整后配置如下:

#配置应用名称

spring:

application:

name:service-invoker

#配置服务端口

server:

#eureka基本配置

eureka:

instance:

#配置应用名称,优先级低于spring.applicaton.name

appname:service-invoker

client:

#配置服务注册中心地址

service-url:

defaultZone:http://eurekaserver01:9000/eureka/,http://eurekaserver02:9000/eureka/

在 defaultZone 属性中,配置了Eureka 注册中心的多个地址,这表示服务消费需要向多个 Eureka 注册中心进行注册和发现服务

测试验证

  • 启动多个服务

    我们在一台机器使用不同端口号来启动多个服务验证,启动多个终端,执行示例如下:

    $> java -jar service-provider-1.0.jar --server.port=8086

    $> java -jar service-provider-1.0.jar --server.port=8080

  • 启动服务消费

    直接启动消费项目,并访问 http://localhost:8088/speak ,能够看到具体返回了访问的服务端口号,多刷新几次可以看到分别访问了 8086 和 8080 端口,表示 Eureka 客户端在请求服务时,通过 Eureka 注册中心发现服务并且使用使用了负载均衡调用

查看注册中心

访问地址 http://192.168.2.214:9000http://192.168.2.215:9000 可以看到,DS Replicas 中有另一台Eureka 注册中心,在 instance currently registered with Eureka 中显示了注册的所有服务,其中可以看到 HELLOWORLD-PROVIDER 服务有2个有效的服务

Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用-服务提供和消费

上一篇:Python类的特点 (2) :类属性与实例属性的关系


下一篇:IntelliJ IDEA常见问题及解决方法