Eureka的高可用实战:服务提供者、服务消费者集群之间的调用方式

Eureka的高可用以及服务提供者、服务消费者集群之间的调用方式


  • 1.为什么要进行Eureka的集群

  • 2.搭建eureka集群

  • 3.服务提供者注册到高可用eureka上

  • 4.服务提供者集群状态

  • 5.服务消费者消费

  • 6.综上

上文我们讲了服务提供者和服务消费者在eureka上进行服务注册和服务之间进行调用,这节来讲eureka的集群模式和服务消费者和服务提供者之间集群间的调用。

1.为什么要进行Eureka的集群


还是借用这一张图来说明吧:

在这个图中,展示的是eureka集群的工作流程,而之所以进行eureka集群的搭建,在于在我们平时的生产环境中,很难保证单节点的eureka服务能提供百分百不间断的服务,如果eureka无响应了,整个项目应用都会出现问题,因此要保证eureka随时都能提供服务的情况下,最好的方式就是采用eureka的集群模式,也就是搭建eureka的高可用,在eureka的集群模式下,多个eureka server之间可以同步注册服务,因此,在一个eureka宕掉的情况下,仍然可以提供服务注册和服务发现的能力,从而达到注册中心的高可用。

2. 搭建eureka集群


搭建eureka集群不建立新的工程还是使用之前的模块:

  • mircroservice-eureka

更改配置文件application.yml,为:

spring:
  profiles: eureka1
server:
  port: 8001
eureka:
  instance:
    hostname: eureka
  client:
    serviceUrl:
      defaultZone: http://eureka2:8002/eureka/

---
spring:
  profiles: eureka2
server:
  port: 8002
eureka:
  instance:
    hostname: eureka2
  client:
    serviceUrl:
      defaultZone: http://eureka1:8001/eureka/

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
client:
    serviceUrl:
      defaultZone: http://eureka1:8001/eureka/
   
   
  • 1
  • 2
  • 3

这一行配置主要起到的作用是将当前的eureka注册到端口为8001的这一个eureka上去。

在etc/hosts中配置eureka1和eureka2,如下:

127.0.0.1 eureka1
127.0.0.1 eureka2
   
   
  • 1
  • 2

对maven工程编译打包之后,运行命令:

java -jar microservice-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=eureka1
java -jar microservice-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=eureka2
   
   
  • 1
  • 2

打开浏览器,输入http://eureka1:8001,如下图: 

如上图,高可用的eureka已经搭建成了,在这就不再另外打开另一个eureka查看了。

3.服务提供者注册到高可用eureka上


当eureka为高可用服务之后,

服务提供者、服务消费者的注册也不能再是一个节点上,要同时注册到所有的注册中心之上,配置要做以下修改:

eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka1:8001/eureka/,http://eureka2:8002/eureka/
  instance:
    preferIpAddress: true
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.服务提供者集群状态


我们的服务提供者仍然不变,是microservice-provider-user,但是配置文件需要做一些修改, 
两个实例在同一台物理机上需要端口不一样,因此第一个实例端口为

server:
  port: 8011
   
   
  • 1
  • 2

第二个为:

server:
  port: 8013
   
   
  • 1
  • 2

现在分别启动两个服务提供者实例,观察服务注册中心,服务启动完成后,将有以下服务被注册到注册中心: 

两个端口不同的microservice-provider-user服务被注册上来。

5.服务消费者消费


在服务提供者以多个节点的方式提供服务后,服务消费者则不需要也启动多个实例,直接启动一个就行了,但是在注册服务中心上,需要同服务提供者一样,注册到多个eureka上,配置与上相同,就不再贴出来了,我们之前在服务消费者中使用了Ribbon负载均衡,那么在两个服务提供者提供服务的时候,我们请求两次接口,两次请求会分别打到两个实例上,启动microservice-consumer-user,打开浏览器,观察注册中心情况,如下: 

两个服务提供者,一个服务消费者,两个服务中心。

现在在浏览器上进行请求:

http://localhost:8012/consumer/1
   
   
  • 1

观察请求两次后,控制台输出,浏览器响应如之前一样,正常输出,如下: 

观察两个服务提供者控制台,服务提供者1: 

有一次请求打过来了。

观察服务提供者2: 

同样,也有一次相同的请求打进来。

6.综上


  • 注册中心在起两个节点的时候,instance名字应该是一样的,要不然web界面上就会显示为unknown

  • 在上面两个控制台上,输出的时候应该将哪个实例提供的服务也打出来,要不然会出现两个控制台一模一样无法区分的情况。

  • 原文章:http://blog.csdn.net/u012734441/article/details/60569400

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值