乱七八糟的整理,建议全屏,否则排版可能会很奇怪~~
介绍:
服务注册是一个可记录当前服务实例的网络信息数据库,是服务发现机制的核心。服务注册提供查询和管理API,使用查询API获得可用的服务实例,使用管理API实现注册和注销(解决多个服务(集群)之间硬编码调用的不便,动态分配vip(Virtual IP))
Eureka是一个RESTful风格的服务,是一个用于服务发现和注册的基础组件,是搭建Spring Cloud微服务的前提之一,它屏蔽了Server和client的交互细节,使得开发者将精力放到业务上,是Netflix开源的组件。包括server和client两部分
Server:
服务注册表:记录各个微服务信息,例如服务名称,ip,端口等
(注册表提供 查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销))
服务注册与发现:注册:将微服务信息注册到注册中心。发现:查询可用微服务列表及其网络地址
服务检查:定时检测已注册的服务,如发现某实例长时间无法访问,就从注册表中移除
Client:
注册:每个微服务启动时,将自己的网络地址等信息注册到注册中心,注册中心会存储(内存中)这些信息
获取服务注册表:服务消费者从注册中心,查询服务提供者的网络地址,并使用该地址调用服务提供者,为了避免每次都查注册表信息,所以client会定时去server拉取注册表信息到缓存到client本地
心跳:各个微服务与注册中心通过某种机制(心跳)通信,若注册中心长时间和服务间没有通信,就会注销该实例
调用:实际的服务调用,通过注册表,解析服务名和具体地址的对应关系,找到具体服务的地址,进行实际调用
Eureka高可用:
Eureka可通过运行多个Eureka server实例并相互注册的方式实现。Server节点之间会彼此增量地同步信息,从而确保节点中数据一致
集群(高可用)Eureka搭建:(基于Spring Boot版本2.3.1.RELEASE)
pom文件引入Jar:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--版本管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Server1的application.properties配置文件:
#不向其他Erueaka注册
#eureka.client.register-with-eureka=false
#不向自己注册
#eureka.client.fetch-registry=false
#rueala客户端默认注册地址
#erueala客户端默认注册地址
eureka.client.service-url.defaultZone=http://eureka2.com:8082/eureka/,http://eureka3.com:8083/eureka/
#服务端口号
server.port=8081
#ServerName
spring.application.name=Eureka-Server
#hostname,值为域名或者ip,在本机为了模拟不同的端口为不同的服务器,改hosts映射域名
eureka.instance.hostname=eureka1.com
Server2的application.properties配置文件:
#erueala客户端默认注册地址
eureka.client.service-url.defaultZone=http://eureka1.com:8081/eureka/,http://eureka3.com:8083/eureka/
#服务端口号
server.port=8082
#ServerName
spring.application.name=Eureka-Server
#hostname,值为域名或者ip,在本机为了模拟不同的端口为不同的服务器,改hosts映射域名
eureka.instance.hostname=eureka2.com
Server3的application.properties配置文件:
#erueala客户端默认注册地址
eureka.client.service-url.defaultZone=http://eureka1.com:8081/eureka/,http://eureka2.com:8082/eureka/
#服务端口号
server.port=8083
#ServerName
spring.application.name=Eureka-Server
#hostname,值为域名或者ip,在本机为了模拟不同的端口为不同的服务器,改hosts映射域名
eureka.instance.hostname=eureka3.com
添加本机hosts映射:
127.0.0.1 eureka1.com
127.0.0.1 eureka2.com
127.0.0.1 eureka3.com
启动成功:
GitHub的Demo地址:https://github.com/llhere/EurekaConlony.git