Eureka 注册中心/服务发现框架

  • Eureka注册中心/服务发现框架
    • 如何使用构建 Eureka Server ?
      • 加入依赖(此处以Maven为例)
      • 创建Eureka Server 主运行类
      • 单机配置
      • 集群配置
      • Eureka Client 连接Eureka Server 集群配置
  • 示例源码下载:

Eureka注册中心/服务发现框架

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

如何使用构建 Eureka Server ?

加入依赖(此处以Maven为例)

<!-- 1. 继承 spring-boot-starter-parent ,如果是聚合工程可以写到父工程中-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent><!-- 2.加入Eureka 服务端依赖 -->
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
</dependencies>

创建Eureka Server 主运行类

package com.liang.cloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer // 加上启用Eureka服务注解(标记其为Eureka服务)
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class,args);}
}

Eureka Server 会带有一个Web主页,默认访问地址:http://localhost:8761/。

Eureka服务 没有后台存储,但是注册表中的所有服务实例都必须发送心跳信号以使其注册保持最新(因此可以在内存中完成)。客户端还具有Eureka注册的内存缓存(因此,对于每个对服务的请求,它们都不必进入注册表)。

默认情况下,每个Eureka服务端也是有Eureka客户端,并且需要(至少一个)服务URL来定位。如果您不提供该服务,则该服务将不断运行,所输出的错误日志,也许对你有所干扰(如果你端口不是8761并且配置了另外的serviceUrl则会不断产生这样的错误日志,如果按默认配置只会报一次这样的错误,随后待自身启动后便可连接自身成功)。

单机配置

application.yml(单个Eureka服务配置),如下:

server:port: 8761 # 端口
spring:application:name: eureka-server # 应用名称,会在Eureka中显示
eureka:client:register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是truefetch-registry: false # 是否拉取其它服务的信息,默认是trueservice-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

请注意serviceUrl,指向与本地实例相同的主机。

集群配置

application.yml(两个Eureka服务配置),如下

---
server:port: 6001
spring:profiles: eureka6001
eureka:instance:hostname: eureka6001.comclient:register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是truefetch-registry: false # 是否拉取其它服务的信息,默认是trueservice-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。defaultZone: http://eureka6002:6002/eureka---
server:port: 6002
spring:profiles: eureka6002
eureka:instance:hostname: eureka6002.comclient:register-with-eureka: false # 是否注册自己的信息到EurekaServer,默认是truefetch-registry: false # 是否拉取其它服务的信息,默认是trueservice-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。defaultZone: http://eureka6001:6001/eureka

在前面的示例中,我们有一个YAML文件,通过在不同的Spring配置文件中运行该服务器,可以在两个主机(eureka6001和eureka6002)上运行同一Eureka服务。您可以使用此配置通过操作/etc/hosts解析主机名来测试单个主机上的对等感知(在生产环境中这样做没有太大价值)。实际上,eureka.instance.hostname如果您在知道其主机名的计算机上运行(默认情况下,使用的是该机器的主机名)。

您可以将多个Eureka服务添加到集群,并且只要它们均通讯的连接,它们就可以在彼此之间同步注册。如果在物理上分开(在一个数据中心内或在多个数据中心之间),只要它们都直接相互连接,它们就可以在彼此之间同步注册。

Eureka Client 连接Eureka Server 集群配置

application.yml(两个Eureka服务连接地址都需要加进来,英文逗号分隔),如下

eureka:client:serviceUrl:defaultZone: http://eureka6001.com/eureka/,http://eureka6002.com

示例源码下载:

https://github.com/mwanlyc/springcloud_study/tree/master/liang-cloud

Eureka 注册中心/服务发现框架相关推荐

  1. 遗留非springboot传统项目接入eureka注册与服务发现

    2019独角兽企业重金招聘Python工程师标准>>> 推荐: jeesuite开发框架,免费开源.一站式解决方案. 最近规划自动化运维以及统一监控需求,鉴于目前公司内部大部分项目采 ...

  2. spring-cloud开发微服务笔记(二):高可用Eureka注册中心的搭建与RestTemplate和Fengin客户端调用微服务示例

    引言:这一篇博客是将上一篇spring-cloud-eureka-server的单机模式改为集群模式,体现eureka的高可用特性.生产环境无论是Eureka注册中心还是Client客户端大多是部署在 ...

  3. Eureka注册中心

    1 Spring Cloud Eureka是什么 Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 做了二次 ...

  4. spring cloud、gradle、父子项目、微服务框架搭建---搭建父子级多模块项目,并注册到Eureka注册中心(二)

    总目录 https://preparedata.blog.csdn.net/article/details/120062997 一.新建一个父级gradl模块 1.在桌面或新建文件里面,右键,打开ID ...

  5. spring cloud、gradle、父子项目、微服务框架搭建---搭建Eureka注册中心(一)

    总目录 https://preparedata.blog.csdn.net/article/details/120062997 一.新建一个父级gradl模块 1.在桌面或新建文件里面,右键,打开ID ...

  6. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  7. 改造微服务注册到eureka注册中心

    注册到Eureka 注册服务,就是在服务上添加Eureka的客户端依赖,客户端代码会自动把服务注册到EurekaServer中. 修改itcast-service-provider工程 在pom.xm ...

  8. 淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务

    2019独角兽企业重金招聘Python工程师标准>>> 继上一篇博文, 淘宝SOA框架dubbo学习(1) http://my.oschina.net/hanshubo/blog/3 ...

  9. 【微服务】Eureka注册中心

    文章目录 前置导入 Eureka的结构和作用 搭建eureka-server 创建eureka-server服务 引入eureka依赖 编写启动类 编写配置文件 启动服务 总结 服务注册 引入依赖 配 ...

最新文章

  1. html js文件域val,js实现文件上传表单域美化特效
  2. 物联网第一台设备是烤面包机?
  3. 基于GitBook框架搭建技术文档平台
  4. Opencv3.0.0安装包
  5. 53 - II. 0~n-1中缺失的数字
  6. linux终端下载notepad,在Linux系统上安装NotePad++的三种方法介绍
  7. 关于Android发送邮件
  8. 计算机c盘容易满怎么办,C盘快满了怎么办 如何清理C盘垃圾?
  9. 计算机网络自顶向下-第 8 版
  10. WizTree v4.03 最快的磁盘空间分析工具中文便携版
  11. 【黑马程序员】新的开始
  12. vue+ele 使用及demo
  13. x64dbg修改后保存到exe
  14. 人工智能的快速发展,对我们的不利影响有哪些?
  15. Maven:你还在手动导包吗?带你了解Maven的前世今生(尚硅谷详细笔记)
  16. 常见文件类型的图标介绍
  17. 程序员如何拨开云雾拿到高薪
  18. 30个最佳免费的CSS HTML登录表单模板
  19. MySQL记录删除后竟能按中间被删除的主键加回去,磁盘空间被重用!
  20. 数学建模比赛科普知识

热门文章

  1. 总结一下在使用某里云服务器的过程中出现过的一些问题
  2. spring boot项目 中止运行 最常用的几种方法
  3. 2021-2027年中国智能马桶盖行业市场研究及前瞻分析报告
  4. 使用python建立简单的树机构
  5. 【C#】数组的最大最小值
  6. ERROR: epmd error for host 192: badarg (unknown POSIX error)
  7. 华为托起小康股份、北汽蓝谷、长安汽车股价
  8. 2021年大数据Flink(八):Flink入门案例
  9. Django 模板4.1
  10. android app 内置图标icon 的标准,(目前是2019年)