eureka集群实现以及feign微服务之间负载均衡实践
一:eureka集群
编写eureka步骤
第一步、导入Eurka pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
第二步、项目启动类Applcation上添加注解
#开启Eurka注册中心服务
@EnableEurekaServer
第三步、在aplication.yml上配置Eureka注册信息
server:
port: 8761
eureka:
client:
# 表示是否将自己注册到Eureka Servcer。
register-with-eureka: false
# 表示是否从Eureka Server获取注册信息
fetchRegistry: false
serviceUrl:
# 设置Eureka Server交互的地址
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: eureka-server-1
第四步、启动项目,访问http://localhost:8761 可以访问到Eureka服务界面
第五步、作为一个注册中心,为了确保微服务能够正常的注册和发现,单机的eureka server肯定不能满足这样的需求,如果注册中心挂掉,那么线上的所有服务都会有影响,那么需要有一个高可用的eureka server来支撑。在eureka的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,服务注册中心也是,那么eureka server的高可用实际上是将自己作为服务注册到其他的注册中心,这样可以形成一组相互注册的服务注册中心,可以实现服务清单的同步,达到高可用的目的。
新建多一个项目,跟刚刚的项目一摸一样,只是配置文件不一样即可
注册中心节点之间相互注册即可实现高可用部署。
或者不用这么麻烦再新家一个新的项目,直接idea里面复制一个application启动类,然后写好启动参数
-Dserver.port=xxxx
具体看图
假如3个以上也一样,把其他的都注册到自己的server上面,用逗号隔开。客户端需要配置所有的Eureka server地址。
(客户端)
如此可以保证注册节点的高可用。
原理
在euerka 集群中如果某台服务器宕机,euerka没有zookeeper的选举leader规则过程,客户端请求会自动切换到新的euerka的节点上,当宕机的服务器从恢复后,euerka会从新将其纳入到euerka服务器集群中(实现高可用)
二:feign客户端负载均衡
同理,上面建立类两个eureka项目,只是端口不一样并且相互注册,那么我们直接在server2这里做一个复制application启动类,只是弄成端口不一样即可。最后新建一个service1做feign请求,即可实现每次调用都使用不同都server2。
每次刷新请求都是调用类不同端口的server2
最后分享项目
链接:https://pan.baidu.com/s/1HXunaiSarPmUF_jJ-5qEJw 密码:vx4z