微服务之服务治理——Eureka

CAP原则:

Consistency(一致性): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

Availability(可用性): 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

**Partition tolerance(分区容忍性):**一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域,数据就散布在了这些不连通的区域中,这就叫分区。当一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了,这时分区就是无法容忍的。提高分区容忍性的办法就是把数据项复制到多个节点上,容忍性就提高了。然而,要把数据复制到多个节点,就会带来一致性的问题,而要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题.

CA:满足一致性和可用性,舍弃分区容错性 。但是这也就意味着你的系统不再是分布式的了,因为涉及分布式的架构模式就是把功能分开,部署到不同的机器上或容器上。

CP:满足一致性和分区容错性,舍弃可用性 。如果系统可以允许有一段时间的访问失效,就可以采用该模式了。比如执行购买车票操作,如果系统出现故障导致了集群中节点之间出现了数据一致性问题,那么后续再执行购买操作的时候系统就会提示异常无法访问了,直到数据一致性问题被修复解决。

AP:满足可用性和分区容错性,舍弃一致性。这也就是意味着如果系统因为某些异常,导致出现了数据不一致的情况,但是只要集群中还存在健康的服务,整体系统就可以一直提供对外的服务能力。

对于分布式微服务系统来说, 一般会保证P, 然后在A和C中做抉择.后面就演变出了BASE理论.

BASE: Basically Available (基本可用)、Soft state (软状态)和Eventually consistent (最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果,核心思想就是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency).

Eureka 是Netflix的核心模块之一。它是一个基于Rest的服务注册中心 ,用于定位服务,以实现云端中间层服务发现和故障转移。Eureka采用了C-S的设计架构(Eureka Server和Eureka Client),符合AP原则.

相关推荐
从琳开始98934 分钟前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
西瓜拿铁好喝1 小时前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
学长毕设1 小时前
基于SpringBoot的校园礼服租赁系统的设计与实现
java·spring boot·后端
明天也要努力学习1 小时前
深入理解 JVM 垃圾回收(GC)
java·jvm
golang学习记1 小时前
IDEA 断点调试技巧:拖拽
java·ide·intellij-idea
Sayai1 小时前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算
计算机毕设定制辅导-无忧学长2 小时前
《基于物品协同过滤的闲置书换购微信小程序设计开发》
java·vue.js·spring boot·微信小程序·uniapp·闲置书换购微信小程序·物品协同过滤算法
Best_Liu~2 小时前
SpringBoot全局日期格式化
java·spring boot·后端
少年的范儿2 小时前
IntelliJ IDEA 配置 JDK 21 与 Maven 教程(Windows):开发环境配置与验证
java·jdk·maven·intellij idea
RuoyiOffice2 小时前
SpringBoot3 + openGauss:RuoYi Office 登录、流程发布与用印填报适配实战
java·数据库·spring boot·opengauss·信创