利用 IDEA 对分布式 IoTDB 进行调试 前言在单机数据库中,寻找 bug 相对较为简单。因为一旦可以复现 bug,那我们可以利用 IDE 在服务端打断点一步步执行并跟踪查看堆栈信息来判断代码出错的位置从而最终找到问题。 在分布式数据库中,找 bug 就变得相对困难了。一方面是因为分布式数据库较难利用 IDE 打断点,其往往通过打 log 的方式来记录错误情况,另一方面是一条客户端请求过来后往往伴随着若干并行和跨节点的 rpc,因此如果通 2021-04-07 #IoTDB #开发工具配置
一致性模型与共识算法 前言有关一致性模型和共识算法的一致性模型这两个问题,最近阅读了一些优质博客,学到了一些新的东西,同时感觉一些定义比较混乱,特此记录一下自己的理解。 一致性模型一致性问题是分布式领域最为基础也是最重要的问题,具体来历可以参考此 博客。 一般来讲,分布式系统中的一致性按照对一致性要求的不同,主要分为强一致性,弱一致性这两大类,前者是基于 safety 的概念,后者是基于 liveness 的概念。 强 2021-04-02 #分布式系统理论 #共识算法
FLP 不可能定理介绍 前言FLP 不可能定理与 CAP,BASE 定理等一样,都是分布式系统的基本理论,因此我们有必要了解该理论。 本博客摘抄了此 博客 中对 FLP 不可能定理的部分描述。 定义1985 年,Fisher、Lynch、Paterson 三位科学家就发表了关于分布式一致性问题的不可能定理:在完全异步的分布式网络中,故障容错问题无法被解决。( We have shown that a natural an 2021-03-28 #分布式系统理论
Time, Clocks, and the Ordering of Events in a Distributed System 论文阅读 背景这篇论文是 Leslie Lamport 于 1978 年发表的,并在 2007 年被选入 SOSP 的名人堂,被誉为第一篇真正的”分布式系统”论文,该论文曾一度成为计算机科学史上被引用最多的论文(截止 2022 年 3 月 6 日已达到 13071 次)。论文的作者 Lamport 享有分布式计算原理之父的美誉,并且因其对分布式系统研究作出的卓越贡献,于 2013 年被授予了图灵奖。 这篇论 2021-03-21 #分布式系统理论 #论文阅读
VM-FT 论文阅读 背景本论文主要介绍了一个用于提供容错虚拟机 (fault-tolerant virtual machine) 的企业级商业系统,该系统包含了两台位于不同物理机的虚拟机,其中一台为 primary,另一台为 backup,backup 备份了 primary 的所有执行。当 primary 出现故障时,backup 可以上线接管 primary 的工作,以此来提供容错。 内容论文内容可以参考此 博客 2021-03-13 #分布式系统理论 #论文阅读
GFS 论文阅读 相关背景单机文件系统我们见得已经很多,像 xfs,ext4 等等都已经是很出名的单机文件系统。然而,单机文件系统的容量始终是有限的,随着数据量的不断增大,就算对单机不断的 scale up 也会逐渐达到上限。因此,支持 scale out 的分布式文件系统是技术的必然。作为世界上数据量可能最多的公司,Google 在 21 世纪初就已经遇到了这个挑战,随之其开发了 GFS 这个创时代的分布式文件系 2021-03-07 #分布式存储 #论文阅读 #Google
数据库系统调优时有关操作系统的知识与测试监控 前言在测试数据库的性能时,往往需要通过从网卡,CPU,内存,磁盘,代码等方面出发进行性能调优,这期间可能会纵向扩展机器以获得更好的性能。然而,在不同的硬件机器上测试时,有时的结果可能与预期相差较多,单从软件方面进行猜想可能并不靠谱。因此,需要对机器硬件进行一定的了解和对应的测试,这样就能够在调优分析时利用底层的硬件信息来支撑瓶颈分析,从而更可能做出正确的判断。本篇博客将从网卡,CPU,内存,磁盘出 2021-01-27 #测试 #操作系统
开源协议解读 前言越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机。然而一旦开源,如何为代码选择开源许可证就是一个非常重要的问题。 相信很多人和我一样,在 Github 创建 repo 时对可以选择的多种 license 很迷糊,不知道该选哪个好,因此本篇博客就简单介绍一下常见的 license 和他们之间的区别,以做记录和学习。 什么是许可协议关于 2021-01-24 #开源
Twitter 内存缓存系统分析论文阅读 背景基于一个物理现实:内存操作比磁盘操作快若干个数量级。现代网站服务广泛使用了类似 redis ,memcached 的内存缓存系统。其思想很简单:尽管海量数据最终都需要落盘持久化,但如果能够将一些常用的数据在内存中缓存以供读请求直接获取,则不仅能够降低请求时延,还能够提升系统吞吐量,而且也能够减少底层数据管理系统比如关系型数据库的负载。 内存缓存系统的大规模商用激发了业界对其的研究,现有的研究主 2020-12-17 #分布式存储 #论文阅读
Spark 论文阅读 背景在 Apache Spark 广泛使用以前,业界主要使用 MapReduce 和 Dryad 这样的集群计算框架来对大数据进行分布式处理。这类计算框架,最大的优点旨在帮助程序员专注业务编程,而非花精力分发计算任务和实现程序容错。 MapReduce 虽然对利用集群中的计算资源做了各类抽象,但还没有实现对集群内存的抽象封装。这样对那些需要重复利用中间结果集的应用就很不友好,比如机器学习和图算法, 2020-11-26 #论文阅读 #分布式计算