服务注册与发现
1. Eureka 单节点搭建
l
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
有的教程中还引⼊spring-boot-starter-web,其实不⽤。因为上⾯的依赖已经包含了它。在pom中点此依赖进去,⼀共点4次spring-cloud-netflix-eureka-server,发现w l
eureka:
client:
#是否将⾃⼰注册到Eureka Server,默认为true,由于当前就是server,故⽽设置成false,表明该服务不会向eureka注册⾃⼰的信息
register-with-eureka: false
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,⽤false
fetch-registry: false
#设置服务注册中⼼的URL,⽤于client和server端交流
service-url:
defaultZone: localhost:7901/eureka/
3.启动类上添加@EnableEurekaServer注解标识该服务为配置中⼼
2.简单说明
1. 背景:在传统应⽤中,组件之间的调⽤,通过有规范的约束的接⼝来实现,从⽽实现不同模块间良好的协作。但是被拆分成微服务
后,每个微服务实例的⽹络地址都可能动态变化,数量也会变化,使得原来硬编码的地址失去了作⽤。需要⼀个中⼼化的组件来进⾏
服务的登记和管理。
2. 概念:实现服务治理,即管理所有的服务信息和状态。(注册中⼼相当于买票乘车,只看有没有票(有没有服务),有就去买票(获
取注册列表),然后乘车(调⽤)。不必关⼼有多少⽕车在运⾏)
3. 注册中⼼好处:不⽤关⼼有多少提供⽅。
4. 注册中⼼有哪些:Eureka,Nacos,Consul,Zookeeper等。
5. 服务注册与发现包括两部分,⼀个是服务器端,另⼀个是客户端。
Server是⼀个公共服务,为Client提供服务注册和发现的功能,维护注册到⾃⾝的Client的相关信息,同时提供接⼝给Client获取注册表中其他服务的信息,使得动态变化的Client能够进⾏服务间的相互调⽤。
Client将⾃⼰的服务信息通过⼀定的⽅式登记到Server上,并在正常范围内维护⾃⼰信息⼀致性,⽅便其他服务发现⾃⼰,同时可以
通过Server获取到⾃⼰依赖的其他服务信息,完成服务调⽤,还内置了负载均衡器,⽤来进⾏基本的负载均衡。
6. 这⾥Spring Cloud是⽤Eureka作为服务注册中⼼。
7. Eureka:是⼀个RESTful风格的服务,是⼀个⽤于服务发现和注册的基础组件,是搭建Spring Cloud微服务的前提之⼀,它屏蔽了
Server和client的交互细节,使得开发者将精⼒放到业务上。
8. serverA从serverB同步信息,则serverB是serverA的peer。
9. 上⾯例⼦中如果service-url为空,且register-with-eureka,fetch-registry为true,则会报错,Cannot execute request on any
known server,因为server同时也是⼀个client,他会尝试注册⾃⼰,所以要有⼀个注册中⼼url去注册。
10.
3.注册中⼼和微服务间的关系
1.client功能
1. 注册:每个微服务启动时,将⾃⼰的⽹络地址等信息注册到注册中⼼,注册中⼼会存储(内存中)这些信息。
2. 获取服务注册表:服务消费者从注册中⼼,查询服务提供者的⽹络地址,并使⽤该地址调⽤服务提供者,为了避免每次都查注册表信
息,所以client会定时去server拉取注册表信息到缓存到client本地。
3. ⼼跳:各个微服务与注册中⼼通过某种机制(⼼跳)通信,若注册中⼼长时间和服务间没有通信,就会注销该实例。
4. 调⽤:实际的服务调⽤,通过注册表,解析服务名和具体地址的对应关系,到具体服务的地址,进⾏实际调⽤。
2.server注册中⼼功能
1. 服务注册表:记录各个微服务信息,例如服务名称,ip,端⼝等。
注册表提供 查询API(查询可⽤的微服务实例)和管理API(⽤于服务的注册和注销)。
2. 服务注册与发现:注册:将微服务信息注册到注册中⼼。发现:查询可⽤微服务列表及其⽹络地址。
3. 服务检查:定时检测已注册的服务,如发现某实例长时间⽆法访问,就从注册表中移除。
组件:Eureka , Consul , ZooKeeper,nacos等。
4.服务注册
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
#注册中⼼
eureka:
client:
#设置服务注册中⼼的URL
service-url:
defaultZone: root:root@localhost:7900/eureka/
ps:不想注册,设置成false即可,实例演⽰结果:注册中⼼没有实例信息。控制台204信息也没有到。
spring:
cloud:
service-registry:
auto-registration:
enabled: false
注册成功:
DiscoveryClient_API-LISTEN-ORDER/api-listen-order:30.136.133.9:port - registration status: 204
Eureka Server与Eureka Client之间的联系主要通过⼼跳的⽅式实现。⼼跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态,维护本服务实例在注册表中租约的有效性。
Eureka Client将定时从Eureka Server中拉取注册表中的信息,并将这些信息缓存到本地,⽤于服务发现。
5.Eureka⾼可⽤
⾼可⽤:可以通过运⾏多个Eureka server实例并相互注册的⽅式实现。Server节点之间会彼此增量地同步信息,从⽽确保节点中数据⼀致。
1. 注册中⼼改造
参考:#⾼可⽤2个节点的yml
#⾼可⽤2个节点
#应⽤名称及验证账号
spring:
application:
name: eureka
security:
user:
name: root
password: root
logging:
level:
root: debug
---
spring:
profiles: 7901
server:
port: 7901
eureka:
instance:
hostname: eureka-7901
client:
#设置服务注册中⼼的URL
service-url:
defaultZone: localhost:7902/eureka/
---
spring:
profiles: 7902
server:
port: 7902
eureka:
微服务注册中心有哪些
instance:
hostname: eureka-7902
client:
#设置服务注册中⼼的URL
service-url:
defaultZone: localhost:7901/eureka/
---将配置⽂件分成2段,每段指定spring.profiles。第⼀段没有指定,所以共⽤。
2.服务注册改造
eureka:
client:
#设置服务注册中⼼的URL
service-url:
defaultZone: localhost:7901/eureka/,root:root@eureka-7902:7902/eureka/
写⼀个地址也⾏(但是server得互相注册),EurekaServer会⾃动同步,但为了避免极端情况,还是写多个。
集PS:
集中各个server会从其他server同步注册表信息。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。