SpringCloud - Eureka 服务注册与发现,Eureka集群,Eureka vs ZooKeeper

回到顶部(go to top)

1. 什么是Eureka

Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka包含两个组件:Eureka Server和Eureka Client

  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

  • Eureka Client是一个java客户端,用于简化与Eureka Server的交互。

 

来看一个具体的例子,如下图所示:

  • 服务提供者(库存服务、仓储服务、积分服务)都有一个Eureka Client组件,这个组件专门负责将这个服务的信息注册到Eureka Server中。说白了,就是告诉Eureka Server,自己在哪台机器上,监听着哪个端口。而Eureka Server是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号
  • 服务消费者(订单服务)也有一个Eureka Client组件,这个Eureka Client组件会找Eureka Server问一下:库存服务在哪台机器啊?监听着哪个端口啊?仓储服务呢?积分服务呢?然后就可以把这些相关信息从Eureka Server的注册表中拉取到自己本地缓存起来。

参考文章:https://juejin.cn/post/6844903705553174541?utm_source=tuicool&utm_medium=referral%3Futm_source%3Dtuicool&utm_medium=referral

 

 

 

 

回到顶部(go to top)

2. Eureka原理

C/S架构 (Client/Server)

在注册中心eureka server注册的各个微服务实例,各个微服务每隔30s就要发送一个heartbeat证明自己还活着。

如果注册中心eureka server在90s内没有接收到某个微服务实例的heartbeat,就会从注册中心移除。

如果注册中心短时间内失去过多服务,会进入“自我保护机制”,不再删除服务,详见第6节。

 

 

 

 

 

 

回到顶部(go to top)

3. 编写eurake-server注册中心

3.1 导入spring-cloud-starter-eurake-server依赖

 

 

3.2 在application.yml,配置eureka

 

 

3.3 开启eureka @EnableEurekaServer

 

 

3.4 eureka server UI界面

 

 

 

————————————————

3.4.1 修改eureka服务信息

“eureka服务提供者”的相关配置,会修改eureka server UI界面

 

3.4.2 

 

 

 

 

 

 

 

 

 

回到顶部(go to top)

4. euraka服务提供者

4.1 导入spring-cloud-starter-eureka依赖

 

 

4.2 在application.yml,配置eureka

 

 

4.3 开启eureka @EnableEurekaClient

 

 

 

 

 

 

 

回到顶部(go to top)

5. euraka服务消费者

5.1 导入spring-cloud-starter-netflix-eureka-server依赖

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

 

5.2 在application.yml,配置eureka

复制代码
server:
  port: 8082 #服务端口
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/
spring:
  application:
    name: user-service-consumer
复制代码

 

5.3 开启eureka @EnableDiscoveryClient

复制代码
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudUserConsumerApplication {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudUserConsumerApplication.class, args);
    }

}
复制代码

 

回到顶部(go to top)

补充:服务调用实战

1-启动服务中心并注册服务

代码编写之后,按顺序启动spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先访问注册中心http://localhost:9001/,出现下图说明注册中心和两个服务以及注册成功。以下是注册中心运行截图:

 

2-服务调用

打开postman访问http://localhost:8082/consumer/getUser?id=2,出现下图后说明服务已经调用成功。


postman调用截图

 到此SpringCloud实现服务间调用功能已经全部实现

 

回到顶部(go to top)

6. euraka自我保护机制

 

 

 

回到顶部(go to top)

7. eureka server集群环境配置

为什么要配置集群?答案:一个eureka server挂了,其他两个能正常使用

7.1 集群环境配置原理

 

7.2 eureka server 互相挂载

 

 

 

7.3 微服务注册到集群

其实就是三个地方都发布

 

效果图: 

 

回到顶部(go to top)

8. CAP原则

  

CAP原则的核心:

一个分布式系统,不可能同时很好的满足CAP三个需求。
由于数据出错是不能忍受的,因此P原则始终包括。Eureka选择了AP,Zookeeper选择了CP

 

补充知识:

 

  

 

回到顶部(go to top)

9. 【重点】Eureka vs ZooKeeper, Eureka好在哪里?

 

 

 

 

 

 

 

 

posted on   frank_cui  阅读(171)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示