服务注册与服务发现
Spring Cloud中默认支持三种
-
Eureka
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。CAP理论中的AP。
-
Consul
Consul是一个高可用的分布式服务注册中心,由HashiCorp公司推出,Golang实现的开源共享的服务工具。CAP理论中的AC。
-
Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。CAP理论中的CP。
关于CAP理论,在文章末尾添加。
关于服务注册选型,参考文章:分布式架构之服务注册中心选型。这里面讲了Eureka,Consul,Zookeeper,ETCD特点区别。
而我之前做的项目中,是使用的Spring Cloud Alibaba Nacos,后续更新。
本篇主要讲解如何使用Eureka作为注册中心。
Eureka介绍
Eureka包含两个组件。Eureka Server,Eureka Client。其他的不多废话了,直接上码,边操作边补充。
创建Eureka Server
-
使用Idea中的Spring Initializr快速创建Spring Boot 项目
-
勾选自己需要的依赖。建议勾选,这样文件中会自动添加这些依赖。这里需用到Eureka Server。
-
点击finish。
-
在配置文件中添加配置
-
启动类添加核心注解
-
补充
-
在浏览器访问的页面中我们看到,provider-server也作为服务,注册到了Eureka中,如何关闭配置文件中添加,。
这个 错,可以忽略掉,在补充1中也提到过,provider-server也作为服务,注册到了Eureka中。在启动Eureka-server中,provider-server的启动是要比Eureka启动的要快。才会出现了Connection refused: connect。当添加了补充1的配置至配置文件中后,重启项目也不再有这个 错。
-
完整yml配置
-
创建Eureka Client
-
使用Idea中的Spring Initializr快速创建Spring Boot 项目
-
勾选自己需要的依赖。这里需用到Eureka Discovery Client。注意:这里必须要选中web选项中的Spring Web 选项。(刚在第一次创建时没有选择Spring Web,启动时 错,注册失败)
-
业务接口该怎么写还是怎么写。
-
补充
- eureka-client启动后将会向eureka-server发送心跳默认周期为30秒。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
- 关于Eureka的自我保护机制,是否需要关闭,每个人的说法也不一样,如何关闭eureka-server项目的配置文件中添加去关闭。不要在client中去设置。
-
启动测试
-
先启动eureka-server。在该项目中新增了关闭自我保护配置。打开浏览器访问。
搜了一下问题,发现pom文件中忘了引入引入后重新启动,会发现注册成功的日志。
-
创建高可用Eureka
这里偷了个懒,直接去百度里面搜了张图。= =
创建eureka-server。上面有步骤。这里投机,创建一个项目,使用3份配置文件,使用不同环境来模拟了。
在Idea中添加:
验证
分别打开三个eureka-server的URL,访问。
CAP理论
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。– 百度百科
- 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
- 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
- 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了 络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足 。
Eureka名词
搜了一下名词解释:
- register:服务注册,向Eureka进行注册等级
- Renew:服务续约 ,30秒/次 心跳包检查,90秒未收到 则剔除服务
- Fetch Registried:获得服务注册列表 ,获取其他微服务地址
- Cancel:服务下线,某个微服务通知注册中心下线
- Eviction:服务剔除,90秒未续约,从注册服务列表删除
这里只是讲如何使用,等后续如果真正在项目中,使用,出现问题等再补充。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92163 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!