前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Eureka服务注册中心

Eureka服务注册中心

作者头像
小忽悠
发布2018-09-04 16:21:49
1.2K0
发布2018-09-04 16:21:49
举报
文章被收录于专栏:JAVA同学会JAVA同学会

Eureka服务注册中心

  最近在研究Spring Cloud,发现其中的组件实在是太多了,真的是头大,只能一块一块看,像盲人摸象一样。要想很短时间内掌握Spring Cloud是不可能的,小编就学习一块就在这里分享一块,有什么不对的地方,大家一起指正。

一、简介

  服务发现是基于微服务架构中的一个重要原则。Eureka既是服务端也是客户端。Eureka服务端可以部署成为高可用,每一个服务器都会复制注册的服务状态到其他服务器。

二、搭建Eureka Server

  搭建项目我们使用Spring Boot。在pom.xml中引入spring-cloud-starter-netflix-eureka-server。如下:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

  然后在启动类中加上注解

代码语言:javascript
复制
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
	}
}

  服务端有一个管理主页,如图:

三、高可用、区域和地区

  Eureka server没有后端的存储,但是注册表里的每一个服务实例都发送心跳保持注册表里的服务是最新的(这些都是在内存中做的)。Eureka client也有一份在内存中的Eureka注册缓存(每一个请求不必每次都去注册表里找服务)。默认的,每一个Eureka server也是一个Eureka client,并且需要一个服务的url定位对等体。如果不提供这个服务url,服务仍然可以运行和工作,但是你的日志中会有大量的对等体不能注册的log。

四、单机模式

  客户端与服务端和心跳使得单独的Eureka server对故障有容错性。在单机模式下,你可能更喜欢关闭客户端行为,因此不会继续尝试注册其对等体。

  application.properties的示例如下:

代码语言:javascript
复制
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

  serviceUrl指向了相同的主机。

五、同伴意识

  Eureka可以运行多个实例,来保证高可靠和高可用,让他们彼此注册。这是默认的行为,所以你需要做的只是为对方添加一个有效的serviceUrl。例如:

代码语言:javascript
复制
---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/

---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/

  上面的例子中,我们可以把一段代码运行到两个实例上,可以通过spring.profiles.active来区分不同的配置。你也可以在一个系统中添加多个同伴(peer),只要他们彼此之间至少有一个边彼此连接,他们之前就能同步注册中心。如果同伴间放在不同的数据中心,有可能出现脑裂现象。

  说实话,多个实例到底怎么彼此连接,小编也没有看懂,官网上只给出了两个实例的例子,多实例还要下去实验。

六、更喜欢ip地址

  Eureka 更喜欢ip地址的服务,而不是主机名(hostname)。可以设置eureka.instance.preferIpAddress=true,当应用用Eureka注册时,它将使用ip地址。

  小编只做了一个单机模式的例子,GitHub地址为:https://github.com/bigbugliu/spring-cloud-eureka-server。多实例的配置,大家一起做实验吧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档