一篇文章认识微服务中Eureka的原理和服务注册与发现

目录

1、认识Eureka

2、Eureka原理

2.1 和Dubbo架构对比:

2.2 三大角色

3、微服务常见的注册中心

3.1 Zookeeper

3.2 Eureka

3.3 Consul

3.4 Nacos

3.5 区别

Netflix 在设计Eureka 时,遵循的就是AP原则

CAP原则又称CAP定理,指的是在一个分布式系统中

  • 一致性(Consistency)

  • 可用性(Availability)

  • 分区容错性(Partition tolerance)

1、认识Eureka

CAP原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper。

2、Eureka原理

SpringCloud 封装了NetFlix公司开发的Eureka模块来实现服务注册和发现

Eureka采用了C-S的架构设计EurekaServer作为服务注册功能的服务器,他是服务注册中心而系统中的其他微服务。使用Eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员就可以通过EurekaServer来监控系统中各个微服务是否正常运行,SpringCloud的一些其他模块(比如Zuul)就可以通过EurekaServer来发现系统中的其他微服务,并执行相关的逻辑。

2.1 和Dubbo架构对比:

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

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

Eureka Client是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会向EurekaServer发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除掉(默认周期为90秒)。

2.2 三大角色

  • Eureka Server:提供服务的注册于发现

  • Service Provider:将自身服务注册到Eureka中,从而使消费方能够找到。

  • Service Consumer:服务消费方从Eureka中获取注册服务列表,从而找到消费服务

3、微服务常见的注册中心

3.1 Zookeeper

Zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说Zookeeper=文件系统+监听通知机制

3.2 Eureka

Eureka是在Java语言上,基于Restful Api开发的服务注册与发现组件,Springcloud Netflix中的重要组件。

3.3 Consul

Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用服务发布和注册服务软件,采用Raft算法保证服务的一致性,且支持健康检查。

3.4 Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与发现。

3.5 区别

我们通过一张表格大致了解Eureka、Consul、Zookeeper的异同点。

选择什么类型的服务注册与发现组件,可以根据自身项目要求决定。

组件名开发语言CAP一致性算法服务健康检查对外暴露接口
EurekaJavaAP可配支持HTTP
ConsulGoCPRaft支持HTTP/DNS
ZookeeperJavaCPPaxos支持客户端
NacosJavaAPRaft支持HTTP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM在线手机品牌商城----计算机毕业设计

项目介绍 该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录; 管理员角色包含以下功能: 管理员登录,用户管理,品牌管理,子品牌管理,商品管理,订单管理,留言板管理等功能。 用户角…

Eclipse先关的一些配置

启动配置设置 配置项详细说明: -Xms:初始堆内存大小,设定程序启动时占用内存大小,默认物理内存1/64 -Xms -XX:InitialHeapSiz-Xmx:最大堆内存,设定程序运行期间最大可占用的内存大小。如果程序运行需要…

博客摘录「 什么是QPS、TPS、吞吐量?- 高并发名词概念」2024年1月5日

1.什么是高并发? 高并发(High Concurrency)。通常是指系统在短时间内的大量操作。 高并发相关的常见指标有:QPS、TPS、吞吐量、并发数等。 2.QPS(Query Per Second) QPS每秒查询率,是指系统…

KK集团高管变更:陈世欣任总经理,涉无证放贷遭关注,还曾被处罚

近日,KK集团关联公司广东快客电子商务有限公司(下称“KK集团”)发生工商变更,其中郭惠波不再担任该公司总经理一职,由陈世欣接任。而在早前,陈世欣曾于2020年取代吴悦宁担任总经理职务,2021年7月…

上帝视角俯视工厂设计模式

引言 本篇聊聊设计模式中的简单工厂、工厂方法、抽象工厂设计模式,争取在看完这篇后不会再傻傻分不清以及能够应用在实际项目中 背景 以一个咱们都熟悉的场景举个例子,我们平时都会戴口罩,用来过滤一些普通病毒,大致的设计如下…

C++矩阵例题分析(3):螺旋矩阵

一、审题 时间限制:1000ms 内存限制:256MB 各平台平均AC率:14.89% 题目描述 输出一个n*n大小的螺旋矩阵。 螺旋矩阵的样子: 输入描述 共一行,一个正整数n,表示矩阵变长的长度…

NGUI基础-Widget

目录 Widget是什么 Widget组件包含的属性 Pivot Depth Size snap Aspect Free Based on Width Based on Height Widget是什么 在Unity UI系统中,"Widget"是指UI元素的基类,它为UI元素提供了位置、大小和锚点等基本属性。通过使用&qu…

LeetCode 2:两数相加

一、题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个…

C-浮点数类型表示

文章目录 尽管最近有些小小的迷茫,但是刷题不能马虎啊!最近在做790. 数的三次方根1,所以回顾一下C语言中是如何表示浮点数类型的。 以下是ChatGPT的回复: Elaborate on floating point types in C, such as tails and exponents…

QT上位机开发(网络程序界面开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主,随着网络的发展,越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

java练习题之List(ArrayList)集合练习

List集合 习题: 1:完成以下填空: List 接口的特点是元素 有序 (有|无)顺序, 可重复 (可以|不可以)重复; 2:(List)关于List 集合描述正确的是(…

python的getattr和getattribute调用

1 python的getattr和getattribute调用 python类的属性包括类属性、实例属性, 类属性:直接在类顶层赋值,或通过类名.属性名值赋值; 实例属性:通过self赋值,或通过实例名.属性名值赋值; 类实例…

肠道炎症与年龄和阿尔茨海默病病理学相关:一项人类队列研究

谷禾健康 ​阿尔茨海默 研究表明,慢性低水平的炎症(“炎症衰老”)可能是年龄相关疾病的一个介导因素,而肠道微生物通过破坏肠道屏障可能会促进炎症。 虽然老化和阿尔茨海默病(AD)与肠道微生物群组成的改变有…

Mybatis缓存实现方式

文章目录 装饰器模式Cache 接口及核心实现Cache 接口装饰器1. BlockingCache2. FifoCache3. LruCache4. SoftCache5. WeakCache 小结 缓存是优化数据库性能的常用手段之一,我们在实践中经常使用的是 Memcached、Redis 等外部缓存组件,很多持久化框架提供…

SQLAlchemy快速入门

安装依赖 pip install sqlalchemy pip install pymysql创建数据库和表 # 创建数据库 drop database if exists sqlalchemy_demo; create database sqlalchemy_demo character set utf8mb4; use sqlalchemy_demo;# 创建表 drop table if exists user; create table user (id …

ClickHouse基础介绍

目录 前言 1、什么是clickhouse 2、OLAP场景的关键特征 3、列式存储更适合于OLAP场景的原因 4、clickhouse的独特功能 5、clickhouse的缺点 6、性能 6.1、单个大查询的吞吐量 6.2、处理短查询的延迟时间 6.3、处理大量短查询的吞吐量 6.4、数据的写入性能 前言 11月…

Keras实现seq2seq

概述 Seq2Seq是一种深度学习模型,主要用于处理序列到序列的转换问题,如机器翻译、对话生成等。该模型主要由两个循环神经网络(RNN)组成,一个是编码器(Encoder),另一个是解码器…

C++——list容器放入赋值,交换与大小操作

1. list 赋值和交换 功能描述: 给list容器进行赋值,以及交换list容器 函数原型: 1.assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身 2.assign(n, elem); //将n个elem拷贝赋值给本身 3.list& operator(const list &lst);//重载等…

Dart调用JS对10000条定位数据滤波

使用Dart调用JS,还是为了练习跨语言调用; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里,我这里是简单的做一下数据过滤; 首先生成一些随机定位数据,在实际开发中可以使用真实数据; // 随机定…

git 常用命令 提交commit

提交一个commit git status test.txt 查看 指定文件test.txt 的状态 git add test.txt 添加 指定文件test.txt 到暂存区 git commit test.txt -m "commit msg" 提交 指定文件test.txtgit status …