首页IT科技分布式理论基础是什么内容(《分布式技术原理与算法解析》学习笔记Day09)

分布式理论基础是什么内容(《分布式技术原理与算法解析》学习笔记Day09)

时间2025-06-20 08:56:36分类IT科技浏览3597
导读:非集中式结构...

非集中式结构

什么是非集中式结构?

在非集中式结构中            ,服务的执行和数据的存储被分散到不同的服务器集群                ,服务器集群之间通过消息传递进行通信和协调      ,非集中式结构没有中央服务器和节点服务器之分         ,所有的服务器地位都是平等的           。

非集中式结构解决了集中式结构中面临的单点瓶颈和单点故障问题                ,提升了系统的并发度         ,比较适合大规模集群的管理                  。

本文集中描述三种典型的非集中式架构系统:

Akka集群 Redis集群 Cassandra集群

Akka集群

Akka是一个开发库和运行环境      ,用于构建可扩展            、弹性的                、快速响应的应用程序     。

Akka基于Actor模型实现                ,Actor模型是一个封装了状态和行为的对象            ,它接收消息并基于该消息执行计算        。Actor之间通信的唯一机制就是消息传递   ,每个Actor都有自己的MailBox                  。

Actor发送的Mail信息会存储在接收方的MailBox中                ,接受党按照mail到达的先后顺序              ,从MailBox中提取mail消息,并进行相应的计算处理        。

Actor模型采用异步消息调用机制              ,具有非阻塞      、高性能等特点                ,可以用于处理并发问题     。Akka集群充分利用了Actor模型的优势   ,提供了一个非集中式架构的集群管理模块            ,用来构建可扩展         、弹性的分布式应用程序                  。

Akka集群中的节点分为Leader节点和非Leader节点                ,和非Leader节点相比      ,Leader节点只是增加了负责节点的加入和移出集群的功能           。

对于数据同步         ,Akka集群采用的是谁的时间戳最新                ,就以谁为准的原则  。Akka集群采用了Gossip协议         ,该协议是最终一致性协议      ,它的原理是每个节点周期性的从自己维护的集群节点列表中                ,随机选择k个节点            ,将自己存储的数据信息发给着k个节点   ,接收到该信息的节点采用前面讲的共识原则                ,对收到的数据和本地数据进行合并              ,这样迭代几个周期后,集群中所有节点上的数据信息就一致了                 。

Akka集群在创建时              ,节点被分为三种类型:

种子节点                ,使用静态配置文件方式或者系统运行时指定方式   ,可以生成种子节点            ,种子节点是普通节点加入集群的联系点                ,可以自动接收新加入集群的节点的信息              。 首种子节点      ,首种子节点是配置文件中的第一个种子节点         ,其功能是集群第一次启动时                ,首种子节点启动起来         ,集群才能组建成功      ,保证集群第一次创建时只有一个集群。 普通节点                ,可以向种子节点或集群中的任意节点发送Join消息            ,请求加入集群              。

Akka集群的每个节点启动后   ,读取配置文件获取种子节点列表                ,开始组建集群:

如果本节点是首种子节点              ,则把自己加入到集群列表,即以自己为中心构建集群                 。 如果本节点为种子节点              ,则向首种子节点请求加入集群                ,当首种子节点回复同意消息后   ,可以加入集群            ,否则不可加入集群  。 如果本节点为普通节点                ,则可以向任一种子节点请求加入集群      ,收到同意后         ,则加入集群                ,否则不可加入集群           。

Redis集群

Redis是一个开源的                、包含多种数据结构的高性能Key-value数据库         ,主要有以下特征:

支持多种数据结构                  。 支持数据的持久化和备份     。 基于内存运行      ,具有极高的性能        。

Redis集群中不存在中央节点                ,每个节点都可以和其他节点通信            ,所有节点都负责存储数据         、记录集群的状态   ,客户端可以访问或者连接到任一节点上                  。

Redis集群中每个节点都存在主备                ,也就是说每台服务器上都运行两个Redis服务              ,分别是主备,主故障后              ,备升主        。

在数据的分片存储方面                ,Redis集群引入了           ”哈希槽“的概念   ,集群中内置了16384个哈希槽            ,每个节点负责一部分哈希槽                ,当客户端要存储一个数据或对象时      ,Redis先对key进行CRC16校验         ,然后进行16384取模                ,来决定哈希槽的编号         ,从而确定存储到哪个节点上     。

Cassandra集群

Cassandra集群的架构是基于一致性哈希的完全P2P结构      ,没有Master的概念                ,所有节点都是同样的角色            ,彻底避免了因为单点问题导致的系统不稳定                  。Cassandra集群节点间的状态同步   ,也是通过Gossip协议来进行P2P通信的           。

Cassandra集群中每个节点都代表一个哈希值                ,每次客户端可以向集群中的任意一个节点请求数据              ,接收到请求的节点将key值进行哈希操作,找出一致性哈希环上是哪个节点存储该数据u              ,然后将请求转发到相应节点上                ,并将查询结果反馈返回给客户端  。

下面是关于三种不同的非集中式架构系统的详细比较                 。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win10更改鼠标指针大小(Windows 10如何调整鼠标指针大小)