分布式技术
文章平均质量分 71
分布式框架
BBinChina
果然白痴
展开
-
分布式技术 之 Write-Ahead Log 预写式日志
分布式领域,我们经常会讲到预写式日志(Write-ahead logging,缩写 WAL),其主要方式是将所有修改在提交之前都先写入log日志中。举个例子说明:当我们的设备接收到请求进行操作时,突然断电了。在重启恢复时,我们需要确认操作是成功了,还是部分成功,甚至失败了。我们可以通过检测log,判断计划执行操作的内容与实际上执行操作的内容进行比较,通过比较程序来觉得是否应用,还是回滚等补救措施。WAL 是关系数据库系统中用于提供原子性和持久性(ACID属性中的两个)的一系列技术,比如PostgreSQ原创 2021-05-12 01:45:56 · 914 阅读 · 4 评论 -
分布式技术之 单线程消息队列 SingularUpdateQueue
原文场景高并发开发技术中经常会使用到多线程、线程池等技术,那我们为啥还搞个单线程消息队列呢?不直接怼多线程搞?不同的模式适用于不同的场景,当使用多线程的开发模式时,适用于CPU密集型作业,比如使用多线程提高任务并发处理能力,而当应用WAL 机制写log文件时,需要解决的问题是如何将状态更新指令顺序的迅速地写入文件,如果采用多线程,反而需要对文件进行锁来保证写入的顺序。为了写文件时不阻塞工作线程,通常我们采用消息队列来缓冲写入log文件的指令,再通过线程异步消费来写入文件。解决思路实现同步队列单线原创 2021-05-18 00:37:22 · 607 阅读 · 0 评论 -
check point 机制 - Low-Water Mark 低水位线
场景讲到WAL时,为解决单一文件追加日志过大时,我们提出了两种方案,分别是segment log、low-water mark。segment log是将大文件分成多段的小文件,但是对我们磁盘来说,小文件也是不停地在积攒的,所以需要使用low-water mark技术来标记那部分内容可以丢弃,一种check point机制。思路创建线程或者进程来独立执行任务,该任务不停的检测可以丢弃的文件,并删除磁盘上的文件,释放我们的硬件资源。使用singleThreadedExecuter来执行我们短周期任务原创 2021-05-16 22:54:35 · 444 阅读 · 0 评论 -
Segmented Log 分段日志
Martin Flower Segmented Log我的使用场景:在自研分布式流批存储系统时,元数据居于commit log的方式导致日志过大时,采用了分段日志的处理方式,下文内容翻译至马丁的文章,同时结合了自己遇到的问题。Segmented Log 分段日志的思路是将原本单一的commit log切分成多个固定大小的小文件,我采用的是64M大小块,太大的话影响重启后读取,太小又造成频繁IO。在什么时候切分文件呢? 基于commit log 思路,我们需要在写日记之前进行文件大小判断进行切分,这个原创 2021-05-13 01:12:06 · 258 阅读 · 1 评论