9分布式微服务架构

分布式微服务架构不光需要从架构上的设计优化系统,还要在编码上优化达到最好的效果

中心化的设计

中心化的设计比较简单,分布式集群中的角色分为两种,管理者和被管理者。

在一个分布式或者集群中,管理者角色管理着其他处理实际业务的程序执行

中心化设计的有两个比较重要的问题1.管理者是否是高可用的 2.管理者是否能管理那么多处理业务的机器

关于第一个问题,现在很多新系统都开始使用自动选举的方式切换管理者,以提升系统的可用性

去中心化的设计

去中心化的设计,不是没有中心化的节点,而是中心化的节点是由集群的的节点进行选举出来的。

去中心化最大的一个问题是脑裂的问题。脑裂的问题一般是由于网络的问题造成两个集群不能通信,造成2个独立的集群。这个场景虽然发生的可能性很小,但是一旦发生会发生很多严重的后果。

集群和分布式的区别

集群部署的方式同一个业务或者存储以同样的方式部署多台,比如nginx代理多台应用服务时,每台应用服务按照nginx的配置方式去执行的情况。

分布式部署的方式是一个业务被拆分成多个子业务部署在不同的服务器上。

总结

判断中心化和去中心化区分的关键点是分布式系统中的管理节点是由管理节点控制的还是由集群中的节点选举控制的。集群和分布式的部署方式区分的关键是业务节点的业务是否一致。

这些只是概念上的区分,我们不用过于细究。很多实际的架构设计中很难有明显的区分,我们要去研究一个成熟的架构时还是需要去了解实际的架构和部署方式。概念性的东西了解即可。

如何防止脑裂的问题

1.仲裁的方式

如果在网络不可达的情况下,选举出2个leader,这个时候系统就会出问题,如果在leader选举出来时,我们加一把锁,锁定该leader已经被选举出来时的状态,其他leader再次被选举出来时候发现已经有leader时,则不能再成为leader.

2.fencing

当不能确定某个节点的状态时,通过fencing把对方干掉,确保共享资源被完全释放,前提是必须要有可靠的fence设备。但是fencing设备的安全本来就很难保证。

mysql的HA的问题

为什么要把这个问题拿出来聊呢?因为我们从上面的概念上来讲,脑裂问题是在分布式环境下leader选举时候会出现多个leader的问题,而很多大咖说mysql的HA属于脑裂的问题,会给很多人造成误导。

我在这里再想重申下,我们去看问题的时候要看问题的本质,具体造成的原因,不要人云亦云。很多所谓的大咖只不过是为了流量从网上生搬硬套的东西拿出来讲。我们去面对一个问题的时候还是需要具体去面对。

我们回到mysql 双主双从部署的问题上来。

mysql数据库通过binlog的方式互相同步两台数据库实例的数据,以达到高可用的服务。然后我们在部署在不同机器的ip通过keepalive做出来一个虚拟的ip,当一台机器由于网络原因或者机器的原因不可达时,我们的keeplive写入数据库的时候会把虚拟的ip切到另外一台数据中执行。

我们知道bonlog在同步的时候是有延时的,当切到另外一台机器时,上一台机器的binlog还未同步过来,我们往数据库中插入一条自增主键的数据时候,我们生成的id就会重复,这个时候就会造成很严重的问题。

我们分析mysql HA出现的具体问题,我们如何解决呢?

我们可以通过主键在代码中生成的策略就可以解决上面遇到的问题。这些都是实战中遇到问题并解决问题

相关推荐
羑悻的小杀马特13 小时前
深入 LangChain 内存向量存储(Memory Vector Stores):架构解析与优化
数据库·架构·langchain·向量存储
YJlio13 小时前
Windows Internals 10.5.3:ETW 架构详解,从事件产生到性能分析的完整链路
windows·笔记·python·stm32·嵌入式硬件·学习·架构
长河14 小时前
XXL-JOB 从本地快速上手到核心架构深度解析
分布式
知兀14 小时前
【微服务/nacos】Nacos注册中心原理;配置服务发现中间、配置中心
java·微服务·架构
juniperhan14 小时前
Flink 系列第22篇:Flink SQL 参数配置与性能调优指南:从 Checkpoint 到聚合优化
大数据·数据仓库·分布式·sql·flink
小张同学82414 小时前
-RAG检索增强生成让智能体拥有企业级专属知识库
开发语言·python·架构·pycharm
Ulyanov14 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:实时时钟与数据驱动 UI —— 从“事件回调”到“状态绑定”的范式跃迁
开发语言·python·qt·ui·架构·交互
钟智强14 小时前
DeepSeek-R1 V3.2 V4架构训练推理性能实测分析,企业私有化部署选型对照表
ai·架构·llm·deepseek
薪火铺子15 小时前
OAuth2 + JWT 微服务认证方案深度解析
java·运维·微服务
wapicn991 天前
微服务架构下的数据核验设计,API接入最佳实践
微服务·云原生·架构