Eureka服务注册中心

Eureka服务注册中心

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

一、简介

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

二、搭建Eureka Server

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

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

  然后在启动类中加上注解

@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的示例如下:

server:
  port: 8761

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

  serviceUrl指向了相同的主机。

五、同伴意识

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

---
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。多实例的配置,大家一起做实验吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏dalaoyang

分布式配置

分布式配置:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。 在生产环境,由于配置繁多,造成...

3597
来自专栏iOS开发随笔

Mac 下安装Python3.5出现“python3-3.5.0 already installed, it's just not linked”错误

1083
来自专栏问天丶天问

【Spring框架】配置解析(一)

1924
来自专栏静默虚空的博客

[Spring]01_环境配置

1.1 Spring jar包下载 (1)进入官网http://repo.spring.io (2)在资源库界面点击Artifacts标签,然后点击libs-...

1879
来自专栏颇忒脱的技术博客

利用VisualVm和JMX远程监控Java进程

在前一篇文章里我们发现通过jstatd + VisualVm的方式,不能获得Java进程的CPU、线程、MBean信息,这时JMX就要登场了。

1731
来自专栏闵开慧

xampp安装版彻底卸载

xampp安装版卸载比较麻烦,如果其卸载不完全则后面的版本无法正常安装,今天用了一个晚上来研究此软件,总结经验如下: (1)卸载该软件要用其自带...

3.4K5
来自专栏CaiRui

Python flask虚拟环境安装

1、安装virtualenv ? 2、在当前路径下创建文件夹,启动虚拟环境 ? 3、在使用虚拟环境前需激活,前面出现(env说明在虚拟环境中)。虚拟环境中默认安...

23910
来自专栏吴伟祥

如何彻底卸载MySQL 原

卸载了重新安装MYSQL,这一卸载出了问题,导致安装的时候安装不上,在网上找了一个多小时也没解决。    重装系统永远是个好办法,但有谁喜欢这么做呀:( ...

1231
来自专栏LeoXu的博客

Tapestry 教程(二)依赖、工具以及插件

在我们深入代码之前,首先必须整好开发环境。你应该已经有了一些,或者因为各种原因,在你的开发机上全都已经有了。

932
来自专栏JAVA同学会

Spring Cloud 服务的注册与发现(Eureka)

Eureka Server是服务的注册中心,这是分布式服务的基础,我们看看这一部分如何搭建。

1484

扫码关注云+社区