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

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

时间2025-09-19 04:56:05分类IT科技浏览5020
导读:非集中式结构...

非集中式结构

什么是非集中式结构?

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

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

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

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
瀑布流式页面布局代码(JS实现瀑布流页面布局)