Eureka的高可用以及服务提供者、服务消费者集群之间的调用方式
2017-03-06 08:45
645 查看
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/
client: serviceUrl: defaultZone: http://eureka1:8001/eureka/[/code]
这一行配置主要起到的作用是将当前的eureka注册到端口为8001的这一个eureka上去。
在etc/hosts中配置eureka1和eureka2,如下:127.0.0.1 eureka1 127.0.0.1 eureka2
对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
打开浏览器,输入http://eureka1:8001,如下图:
如上图,高可用的eureka已经搭建成了,在这就不再另外打开另一个eureka查看了。3.服务提供者注册到高可用eureka上
当eureka为高可用服务之后,服务提供者、服务消费者的注册也不能再是一个节点上,要同时注册到所有的注册中心之上,配置要做以下修改:eureka:
client: serviceUrl: defaultZone: http://eureka1:8001/eureka/,http://eureka2:8002/eureka/ instance:
preferIpAddress: true4.服务提供者集群状态
我们的服务提供者仍然不变,是microservice-provider-user,但是配置文件需要做一些修改,
两个实例在同一台物理机上需要端口不一样,因此第一个实例端口为server: port: 8011
第二个为:server: port: 8013
现在分别启动两个服务提供者实例,观察服务注册中心,服务启动完成后,将有以下服务被注册到注册中心:
两个端口不同的microservice-provider-user服务被注册上来。5.服务消费者消费
在服务提供者以多个节点的方式提供服务后,服务消费者则不需要也启动多个实例,直接启动一个就行了,但是在注册服务中心上,需要同服务提供者一样,注册到多个eureka上,配置与上相同,就不再贴出来了,我们之前在服务消费者中使用了Ribbon负载均衡,那么在两个服务提供者提供服务的时候,我们请求两次接口,两次请求会分别打到两个实例上,启动microservice-consumer-user,打开浏览器,观察注册中心情况,如下:
两个服务提供者,一个服务消费者,两个服务中心。
现在在浏览器上进行请求:http://localhost:8012/consumer/1
观察请求两次后,控制台输出,浏览器响应如之前一样,正常输出,如下:
观察两个服务提供者控制台,服务提供者1:
有一次请求打过来了。
观察服务提供者2:
同样,也有一次相同的请求打进来。6.综上
注册中心在起两个节点的时候,instance名字应该是一样的,要不然web界面上就会显示为unknown。
在上面两个控制台上,输出的时候应该将哪个实例提供的服务也打出来,要不然会出现两个控制台一模一样无法区分的情况。
下一期讲fegin在服务中的应用。
相关文章推荐
- Eureka的高可用以及服务提供者、服务消费者集群之间的调用方式
- Eureka的高可用实战:服务提供者、服务消费者集群之间的调用方式
- spring cloud中微服务之间的调用以及eureka的自我保护机制详解
- spring mvc的图片上传以及删除功能【封装可用】,另附加在controller中调用的方式
- 简单理解laravel框架中的服务容器,服务提供者以及怎样调用服务
- 3.springcloud中使用Ribbon和Feign调用服务以及服务的高可用
- Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
- Spring Cloud(三)服务提供者 Eureka + 服务消费者(rest + Ribbon)
- 高可用集群之heartbeat配置,实现web服务的高可用以及Mariadb高可用 推荐
- 微服务~Eureka实现的服务注册与发现及服务之间的调用
- springcloud-eureka搭建高可用服务注册集群
- SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证
- springcloud实战之3 高可用服务注册中心(eureka集群)
- Dubbo中服务消费者和服务提供者之间的请求和响应过程
- 【Spring Cloud】三、Eureka Consumer 服务注册中心消费者调用服务
- Silverlight与WCF之间的通信(4)silverlight以net.tcp方式调用console上寄宿的wcf服务
- Dubbo 服务提供者启动成功后,消费者调用服务失败
- 使用注解方式实现Dubbo搭建,解决消费者调用接口出现空指针异常以及事务等问题
- Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
- Spring Cloud(三)服务提供者 Eureka + 服务消费者(rest + Ribbon)