服务注册中心:Eureka的基本使用
1 服务中心作用
- 用于监控权限,浏览管控,来进行服务器的调度协调
- 类似病人看医生,需要去前台挂号,前台负责分配哪些病人访问哪些医生,进行协调
2. 基础知识
2.1 服务治理
- 在传统的rpc远程调用框架中,管理每个服务和服务之间依赖关系比较复杂,所以诞生了服务治理
- 服务治理,用于管理服务与服务之间的关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
2.2 服务注册
- Eureka作为服务注册的服务器,它是服务注册的中心
- 系统中的其他微服务,使用Eurka的客户端连接到Eurka Server并维持心跳连接,这样维护人员就可以通过Eureka Server来监控微服务是否正常运行
2.3 Eurka组件
Eureka Server:提供服务注册服务
- EurkaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到
Eureka Client:通过注册中心进行访问
- 一个Java客户端,用于简化Eureka Server的交互
- 启动后,会向Eureka Server发送信条(默认周期30秒)。如果Eureka Server在多个心跳周期内没有接收到某个检点的心跳,Eureka Server会从服务注册表中把这个服务器节点移除(默认90秒)
3 单机构建Eureka
3.1 安装Eureka Server
(1)创建maven项目
cloud-eureka-server7001
(2)引入依赖
1 | <!-- Eureka Server --> |
- (3)配置yaml
1 | server: |
- (4)启动类
1 |
|
- (5)运行,访问http://localhost:7001即可
- 注意:若运行报错,可能是端口被占用,可以重启IDEA或改端口
3.2 服务器安装Eureka Client
- (1)引入依赖
1 | <!-- eureka client --> |
- (2)修改yaml
1 | eureka: |
- (3)主启动类
1 |
|
- (4)启动
- 将eureka server 和 eureka client都启动,进入
http://localhost:7001
- 将eureka server 和 eureka client都启动,进入
3.3 客户端安装eureka client
- 方法步骤和服务器的一样,只需要主要yaml配置文件中
server.application.name
是该客户端的名字
- 运行结果:
4 集群构建Eureka
集群用来解决eureka发生故障时,仍能继续工作,而不是整个系统瘫痪
4.1 Eureka集群原理
- 一句话概括:
互相注册、互相守望
4.2 Eureka Server集群搭建
- (1)创建一个与端口7001一摸一样的服务器,端口7002
- (2)修改本机的映射
- 由于我们只有一台机器,所有只能用不同的端口号来映射同一个地址
- 去
C:Windows\System32\drivers\etc
的hosts
文件 - 添加
127.0.0.1 eurka7001.com
和127.0.0.1 eureka7002.com
- (3)修改yaml文件
1 | # eureka7001 |
- (4)启动效果
4.3 服务器和客户端注册到集群
- 操作非常简单:只需要修改yaml中的eureka server的地址即可
1 | eureka: |
5 服务器集群搭建
不仅ekure server需要集群,服务器也要进行集群,避免服务器挂了,整个服务都瘫痪
- (1)创建一份与
payment8001
的服务器payment8002
- (2)修改Controller
- 为了知道我们访问链接时,是哪个端口提供服务
1 |
|
- (3)运行测试
- (4)客户端开启负载均衡
1 | //修改OrderController |
1 | //修改ApplicationContextConfig |
6 actuator微服务信息完善
- 通过修改yaml配置文件可以优化以上问题
1
2
3
4eureka:
instance:
instance-id: payment8002 # eureka中服务名称
prefer-ip-address: true # 访问路径是否可以显示IP地址
7 服务Discovery
- 服务的discovery可以显示服务器的一些信息
1 | //修改PaymentController来演示 |
8 Eureka自我保护理论知识
8.1 自我保护理论
- 当Eureka出现一下红字时,证明处理了自我保护中
- 出现原因:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存,避免因为网络延迟导致无法接受到心跳,导致错误删除服务
8.2 关闭自我保护
1 | # 服务端修改yaml |
- 关闭后会出现以下提示