欢迎光临散文网 会员登陆 & 注册

SpringCloud之Eureka微服务注册中心

2021-05-19 16:49 作者:自学Python的小姐姐呀  | 我要投稿

一、 Eureka简介

1、Eureka是什么?

    Eureka是由Netflix公司推出的服务注册和发现工具。现已被Spring Cloud集成,提供了开箱即用的支持。(直接在项目中直接集成,快捷使用)

2、Eureka角色

    Eureka中分为两个角色:Eureka Server(Eureka服务)和Eureka Client(Eureka客户端)。

    无论是服务端还是客户端其本质都是一个Java项目,在Spring Cloud中主要通过启动类上添加@EnableEurekaServer和@EnableEurekaClient(可以省略)来区分当前应用程序是服务端还是客户端。

    Eureka Server可以理解成之前我们讲解的Zookeeper注册中心,只是现在使用的是Java项目实现的(Spring Cloud内嵌Eureka)。

    Eureka Client 可以理解成所有需要注册到Eureka Server中的项目。为什么需要向注册中心中注册呢?因为注册后别人才能通过注册中心获取到项目信息和项目所在服务器信息,通过这些信息调用这个项目。Spring Cloud中每个项目调用的信息都存储在了注册中心中(Eureka)。

注意:在这里,Spring Cloud中没有Provider和Consumer说法。如果A项目访问B项目,称A项目为Application Client,称B项目为Application Service。同时可能存在C访问A的情况,这是C项目是Application Client,A项目是Application Service。发现A项目又是Application Service又是Application Client,主要看针对哪个业务场景。无论是Applicatin Service还是Application Client都是Eureka Client。

二、 Eureka和Zookeeper对比(面试)

    在Spring Cloud Netfilx中可以使用Eureka作为注册中心,但是也可以通过配置的方式使用Zookeeper作为配置中心,既然都支持,就需要知道两者的区别。

1、CAP理论(分布式一致性定理)

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP

C(一致性Consistency):在分布式系统中,是否立即达到数据同步的效果(平时多说的强一致性)。在分布式系统一定最终会一致的。如果请求时,整个分布式系统同步后才返回结果,叫做强一致性(满足一致性)。如果先返回结果,在一定时间后才实现一致性就叫做弱一致性。

A(可用性Availability):在分布式系统中,其中一些节点出现问题,整个整体是否还可用。

P(分区容错性):在分布式系统中,是否可以在有限的时间内达到数据一致的效果,如果因为网络等问题最终没有达到一致性,这时称为出现分区错误。

2、Zookeeper 保证 CP

    在Zookeeper集群中,Zookeeper的数据保证的是一致性的。当Leader出现问题时,整个Zookeeper不可用,需要花费30~120s来进行重新选择Leader,当Leader选举成功以后才能进行访问整个Zookeeper集群。

    通过这点也可以看出Zookeeper是强一致性的,集群所有节点必须能通信,才能用集群。虽然这样集群数据安全了,但是可用性大大降低了。而作为注册中心来说可用性是很重要的。

3、Eureka 保证AP

    Eureka发现了Zookeeper的问题,所以它舍弃了Zookeeper中强一致性,而保证了可用性。

    在Eureka集群中所有的节点都是保存完整的信息的,当Eureka Client向Eureka中注册信息时,如果发现节点不可用,会自动切换到另一台Eureka Sever,也就是说整个集群中即使只有一个Eureka可用,那么整个集群也是可用的。

    同时Eureka的自我保护机制也是实现可用性非常重要的体现。

4、ZooKeeper和Eureka对比(最完整的对比)

三、第一个Eureka Server

    搭建Eureka Server时就相当于在安装Eureka软件(在Spring Cloud学习的一种全新方式,替换了之前需要安装对应软件的问题)。


1、导入依赖

    添加Spring Boot 依赖和Spring Cloud集成的Eureka Server依赖。

    所有依赖的版本都是最新版。

2、编写配置文件

    在application.yml中添加一下内容,不添加会报错。

    此处要求tomcat端口和Eureka Server的端口是相同的。Eureka Server 默认端口是8761所以此处配置为8761.如果此处希望配置为8082等非8761端口,需要打开注释。


3、在启动类中添加注解

    在启动类中添加@EnableEurekaServer注解,表示当前项目为Eureka Server


4、访问

在浏览器地址栏输入:http://localhost:8761/

四、Eureka 服务管理平台介绍

1、Eureka Server服务管理平台访问预览

2、System Status

    系统状态展示

3、DS Replicas

    注册中心集群列表

4、Instances currently registered with Eureka

    已在注册中心中注册的服务列表

5、General Info

    当前注册中心相关信息展示

6、Instance Info

    当前注册中心实例信息展示


关于Eureka工具的更多内容可以到视频中学习哦~



SpringCloud之Eureka微服务注册中心的评论 (共 条)

分享到微博请遵守国家法律