在任何分布式架构中,都需要找到机器所在的物理地址,这个过程称为服务发现。
服务发现的优点:
- 可以快速对环境中运行的服务实例数量进行水平伸缩
- 将服务的物理位置抽象,由于服务消费者不知道实际服务实例的物理位置,因此可以从可用服务池中添加或移除服务实例
- 有助于提高应用的弹性。当服务实例不可用时,可从内部可用服务列表移除该实例。
服务发现架构
- 微服务通过服务发现代理进行注册
- 通过服务发现代理来查找各个微服务实例的物理位置,通常服务消费者也会在本地缓存它请求的服务实例的物理地址
- 服务发现节点共享微服务实例的健康信息
- 微服务向服务发现代理发送心跳包,如果微服务不可用,则服务发现节点将移除对应实例IP
本文使用Spring Cloud和Netflix的Eureka服务发现引擎来实现服务发现模式。
客户端负载均衡,使用Spring Cloud和Netflix的Ribbon库
本文源码可在此找到:https://github.com/Alexaccele/SpringCloudDemo
本文测试模块介绍
构建Eureka服务——服务代理
添加maven依赖
除了引入spring cloud以外,主要引入如下依赖,以支持Eureka库
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
配置文件
server:
port: 8761 #Eureka服务端口
eureka:
c