![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式相关
小屋子大侠
这个作者很懒,什么都没留下…
展开
-
Flume原理初探:基本执行原理概述
FlumeFlume是一款在数据收集领域使用较多的一个apache的开源工具,是一款分布式、可靠和高可用的系统,能够高效的从不同的源中收集、聚合上传大量的日志数据到结构化的存储模块中,Flume的使用不仅限于日志数据聚合, 由于数据源是可定制的,因此Flume可用于传输大量事件数据,包括但不限于网络流量数据,社交媒体生成的数据,电子邮件消息以及几乎所有可能的数据源。在实际的应用场景中Flume再...原创 2020-03-16 20:39:17 · 647 阅读 · 0 评论 -
租约-代码实践
租约本文主要根据租约的基本原理,采用go语言实践一下,租约的基本流程。租约设计概述用例模型租约的主要机制就是为了保证在分布式环境下使得各个客户端使用的数据保持强一致性,每个客户端在查询服务器数据的时候,都在服务端存在一个租约信息,如果服务端还有租约没有到期,则客户端提交的数据修改阻塞到所有的租约过期菜可进行操作。基本的用例场景描述分为如下几种。客户端查询数据用例用例名称客户端...原创 2019-12-06 17:06:42 · 210 阅读 · 0 评论 -
chubby分布式锁服务概述
分布式锁与chubby分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。Chubby是一种面向松耦合的分布式系统的锁服务,通常用于为一个由适度规模的大量小型计算机构成的的松耦合的分布式系统提供高可用的分布式锁服务。锁服务的目的是允许它的客户端进程同步彼此的操作,并对当前所处环境的基本状态信息达成一致。因此,Chubby的主要设计目标是为一个由适度大规模的客户端进程组成的分布式场景提供高可...原创 2019-12-03 11:34:53 · 3879 阅读 · 0 评论 -
租约-分布式缓存一致性的高效容错机制
租约租约被提议为一种基于时间的机制,可提供对分布式系统中缓存数据的有效一致访问。非拜占庭式故障会影响性能,而不是正确性,并通过短期租约将其影响降到最低。 缓存引入了确保缓存数据与其主要存储位置之间一致性的问题。一致的意思是,除了高速缓存的性能优势外,行为等同于仅存在单个(未缓存)数据副本。对于大型缓存,维持一致性所需的流量可能是缓存性能的主要因素。分布式系统可能会遇到部分故障:主机可能崩溃或消息...原创 2019-11-30 22:01:50 · 784 阅读 · 0 评论 -
分布式任务调度系统V1
分布式任务调度系统V1目标初步目标实现,实现任务的下发分配,分布式任务执行,支持任务分片(在代码上支持),任务执行记录。任务调度系统构思基于C/S架构实现,基于长连接来管理实现,当前版本的逻辑架构图如下;注册等注册等注册等下发任务等下发任务等下发任务等客户端A服务端客户端B客户端C系统主要是通过自有协议进行通信,采用单个长连接来进行数据交互,Server端主要参考早期版本tornado的...原创 2019-11-11 20:18:09 · 329 阅读 · 0 评论 -
两阶段提交实际项目V1
项目介绍两阶段提交项目主要是实际用代码演示复现一下,两阶段提交的执行过程,仅供学习参考。本次主要分析的版本为V1版本,主要实现的流程包括服务端的基础架构编写,客户端的基础架构编写,完成事务提交的过程。两阶段项目的用例模型客户端注册用例名称客户端启动注册主要参与者客户端涉及关注点客户端:希望将自己注册到服务器端,从而能够向服务端提交事务数据或者接受其他客户端的提...原创 2019-11-01 22:17:19 · 261 阅读 · 0 评论 -
两阶段提交(Two-Phase Commit)
两阶段提交两阶段提交是一种同步协议,是计算机网络尤其是在数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务处理过程中保持原子性和一致性而设计的一种算法。两阶段提交的执行过程在两阶段提交过程中,主要分为了两种角色协调者(coordinator)和参与者(participants),协调者主要就是起到协调参与者是否需要提交事务或者中止事务,参与者主要就是接受协调者的响应并回复协调者是否...原创 2019-10-22 18:40:30 · 6280 阅读 · 0 评论 -
Zookeeper源码分析:主从角色关系流程概述
参考资料<<从PAXOS到ZOOKEEPER分布式一致性原理与实践>>zookeeper-3.0.0主从关系概述在概述了主从角色的初始化流程之后,本文主要来梳理分析一下Zookeeper服务端的逻辑关系,包括选举的情况的分析,客户端数据与服务端的数据交互等情况。Zookeeper主从的运行流程运行时的主要的主从逻辑关系如图所示。无论是leader还是fo...原创 2019-10-17 14:35:45 · 355 阅读 · 0 评论 -
Zookeeper源码分析:Follower角色初始化
参考资料<<从PAXOS到ZOOKEEPER分布式一致性原理与实践>>zookeeper-3.0.0Follower角色初始化本文主要简述一下Follower角色初始化的流程是什么样子。Follower角色初始化流程case FOLLOWING: try { LOG.info("FOLLO...原创 2019-10-14 16:22:54 · 307 阅读 · 0 评论 -
Zookeeper源码分析:Leader角色初始化
参考资料<<从PAXOS到ZOOKEEPER分布式一致性原理与实践>>zookeeper-3.0.0Leader角色初始化在上文的选举完成之后,每个zk实例都会根据选举结果进入对应的角色,本文主要就是讲述Leader的初始化相关内容。Leader初始化流程case LEADING: LOG.info("LEADING"); ...原创 2019-10-12 14:32:30 · 310 阅读 · 0 评论 -
Zookeeper源码分析:选举流程
参考资料<<从PAXOS到ZOOKEEPER分布式一致性原理与实践>>zookeeper-3.0.0Zookeeper选举模式针对zookeeper-3.0.0版本,选举模式可以分为三种模式,主要分为快速认证选举,快速选举和直接UDP选举这三个算法。通过选举来确定启动服务的角色是leader还是follower。Zookeeper集群规定至少是两台服务器,并且建议...原创 2019-10-07 11:31:21 · 195 阅读 · 0 评论 -
Zookeeper源码分析:集群模式启动概述
参考资料<<从PAXOS到ZOOKEEPER分布式一致性原理与实践>>zookeeper-3.0.0Zookeeper概述Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务。致力于提供一个高性能、高可用,具有严格的顺序访问控制能力(写操作严格顺序)的分布式协调服务。Zookeeper集群启动集群启动方法与配置文件查看目录bin下的zkServ...原创 2019-09-30 10:42:55 · 216 阅读 · 0 评论 -
leveldb源码分析:数据合并落盘
数据的合并落盘本文主要来梳理一下,leveldb数据是怎样从内存写入文件这么一个过程的。在前文的描述中,在数据库的Open过程中,在数据的Get过程中或者Write数据的时候等情况下都可能会触发到leveldb数据合并并写入本地文件的操作即MaybeScheduleCompaction函数的调用,本文就分析一下该函数的执行流程。MaybeScheduleCompaction函数的执行过程vo...原创 2019-09-22 15:38:00 · 917 阅读 · 0 评论 -
leveldb源码分析:数据查询
leveldb数据查询查询的示例代码如下:string res;status = db->Get(ReadOptions(), "KeyNameExample", &res);本文就先分析一下数据的获取流程。db->Get获取数据主要就是调用db的Get方法来查找数据;Status DBImpl::Get(const ReadOptions& optio...原创 2019-09-21 15:41:02 · 744 阅读 · 0 评论 -
leveldb源码分析:数据插入续(跳表)
leveldb数据的插入-跳表本文主要是接着上一篇文章,继续深入探索Write函数调用插入之后的流程。status = WriteBatchInternal::InsertInto(updates, mem_); InsertInto插入数据函数namespace {class MemTableInserter : public WriteBatch::Handler { ...原创 2019-09-19 19:42:31 · 320 阅读 · 0 评论 -
leveldb源码分析:数据插入与删除(Put与Delete)
Status DBImpl::Write(const WriteOptions& options, WriteBatch* updates) {Writer w(&mutex_); // 初始化一个Writerw.batch = updates; ...原创 2019-09-14 11:16:31 · 1432 阅读 · 0 评论 -
leveldb源码分析:Open启动流程
leveldb概述Leveldb 是一个持久化的KV存储系统,主要将大部分数据存储在磁盘上,在存储数据的过程中,根据记录的key值有序存储,当然使用者也可以自定义Key大小比较函数,一个leveldb数据库类似与一个操作系统文件夹,所有的有关数据库内容都存储在该文件夹下面,并提供Put,Delete和Get等方法去更改或查询该数据库,并且提供原子更新,同步写(因为leveldb默认情况下是异步写...原创 2019-09-02 15:47:07 · 729 阅读 · 0 评论 -
Bigtable:结构化数据的分布式存储系统
相关说明Bigtable是一个用于管理结构化数据的分布式存储系统,其设计目的是为了通过数千个服务器管理大规模数据。谷歌许多的项目例如,web索引、谷歌地球和谷歌金融都使用了Bigtable来存储大规模数据。这些应用对Bigtable提出了非常不同的要求,包括数据大小(从URL到网页到卫星图像)和延迟要求(从后端批量处理到实时数据服务)。尽管有这些不同的需求,但Bigtable还是为这些谷歌产品提...原创 2019-09-02 14:15:27 · 2065 阅读 · 0 评论