1 Eureka 单节点搭建
``sh
org.springframework.cloud spring-cloud-starter-netflix-eureka-server有的教程中还引入spring-boot-starter-web-其实不用。因为上面的依赖已经包含了它。在pom中点此依赖进去-一共点4次spring-cloud-netflix-eureka-server-发现web的依赖。
`
`sh
eureka: client: #是否将自己注册到Eureka Server,默认为true-由于当前就是server-故而设置成false-表明该服务不会向eureka注册自己的信息 register-with-eureka: false #是否从eureka server获取注册信息-由于单节点-不需要同步其他节点数据-用false fetch-registry: false #设置服务注册中心的URL-用于client和server端交流 service-url: defaultZone: http://root:root@eureka-7901:7901/eureka/
`
`sh
启动类上添加此注解标识该服务为配置中心@EnableEurekaServer
`
2 整体介绍
`sh
注册中心相当于买票乘车-只看有没有票(有没有服务)-有就去买票(获取注册列表)-然后乘车(调用)。不必关心有多少火车在运行。
`
Server是一个公共服务-为Client提供服务注册和发现的功能-维护注册到自身的Client的相关信息-同时提供接口给Client获取注册表中其他服务的信息-使得动态变化的Client能够进行服务间的相互调用。
Client将自己的服务信息通过一定的方式登记到Server上-并在正常范围内维护自己信息一致性-方便其他服务发现自己-同时可以通过Server获取到自己依赖的其他服务信息-完成服务调用-还内置了负载均衡器-用来进行基本的负载均衡。
`sh
https://github.com/Netflix/Eureka
`
3 注册中心和微服务间的关系

11.3.1 client功能
11.3.2 server注册中心功能
注册表提供 查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销)。
组件:Eureka , Consul , ZooKeeper-nacos等。
4 服务注册
例子:api-listen-order
`sh
org.springframework.cloud spring-cloud-starter-netflix-eureka-client
`
`sh
#注册中心eureka: client: #设置服务注册中心的URL service-url: defaultZone: http://root:root@localhost:7900/eureka/
`
ps:不想注册-设置成false即可-实例演示结果:注册中心没有实例信息。找控制台204信息也没有找到。
`sh
spring: cloud: service-registry: auto-registration: enabled: false
`
注册成功:
`sh
DiscoveryClient_API-LISTEN-ORDER/api-listen-order:30.136.133.9:port - registration status: 204
`
后面源码讲手动注册。
PS:
Eureka Server与Eureka Client之间的联系主要通过心跳的方式实现。心跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态-维护本服务实例在注册表中租约的有效性。
Eureka Client将定时从Eureka Server中拉取注册表中的信息-并将这些信息缓存到本地-用于服务发现。
5 Eureka高可用
高可用:可以通过运行多个Eureka server实例并相互注册的方式实现。Server节点之间会彼此增量地同步信息-从而确保节点中数据一致。
application.yml
参考:#高可用2个节点的yml
`sh
#高可用2个节点#应用名称及验证账号spring: application: name: eureka security: user: name: root password: rootlogging: level: root: debug ---spring: profiles: 7901server: port: 7901eureka: instance: hostname: eureka-7901 client: #设置服务注册中心的URL service-url: defaultZone: http://root:root@eureka-7902:7902/eureka/--- spring: profiles: 7902server: port: 7902eureka: instance: hostname: eureka-7902 client: #设置服务注册中心的URL service-url: defaultZone: http://root:root@eureka-7901:7901/eureka/
`
—将配置文件分成2段-每段指定spring.profiles。第一段没有指定-所以共用。
api-listen-order
`sh
eureka: client: #设置服务注册中心的URL service-url: defaultZone: http://root:root@eureka-7901:7901/eureka/,http://root:root@eureka-7902:7902/eureka/
`
写一个地址也行(但是server得互相注册)-EurekaServer会自动同步-但为了避免极端情况-还是写多个。
集群PS:
集群中各个se