作家
登录

分布式系统的核心——日志

作者: 来源: 2017-12-05 10:44:37 阅读 我要评论

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了

什么是日记?

日记就是按照时光次序追加的、完全有序的记录序列,其实就是一种特别的文件格局,文件是一个字节数组,而这里日记是一个记录数据,只是相对于文件来说,这琅绫强笔记录都是按照时光的相对次序分列的,可以说日记是最简单的一种存储模型,攫取一般都是大年夜左到右,例如消息队列,一般是线性写入log文件,花费者次序大年夜offset开端攫取。

因为日记本身固有的特点,记录大年夜左向右开端次序插入,也就意味着左边的记录相较于右边的记录“更老”, 也就是说我们可以不消依附于体系时钟,这个特点对于分布式体系来说相当重要。

日记的应用

1.topic/日记分片,本质上topic写入的消息就是日记的记录,那么跟着写入的数量越多,单机会慢慢的成为瓶颈,这个时刻我们可以将单个topic分为多个子topic,并将每个topic分派到不合的机械上,经由过程这种方法,对于那些消息量极大年夜的topic就可以经由过程加机械解决,而对于一些消息量较少的可以分到到同一台机械或一向行分区

日记在数据库中的应用

日记是什么时刻出现已经无大年夜得知,可能是概念上来讲太简单。在数据库范畴每日记更多的是用于在体系crash的时刻同步数据以及索引等,例如MySQL中的redo log,redo log是一种基于磁盘的数据构造,用于在体系挂掉落的时刻包管数据的┞俘确性、完全性,也叫预写日记,例如在一个事物的履行过程中,起首会写redo log,然后才会应用实际的更改,如许当体系crash后恢复时就可以或许根据redo log进行重放大年夜而恢复数据(在初始化的过程中,这个时刻不会还没有客户端的连接)。日记也可以用于数据库主大年夜之间的同步,因为本质上,数据库所有的操作记录都已经写入到了日记中,我们只要将日记同步到slave,并在slave重放就可以或许实现主大年夜同步,这里也可以实现很多其他须要的组件,我们可以经由过程订阅redo log 大年夜而拿到数据库所有的变革,大年夜而实现个性化的营业逻辑,例如审计、缓存同步等等。

日记在分布式体系中的应用

分布式体系办事本质上就是关于状况的变革,这里可以懂得为状况机,两个自力的过程(不依附于外部情况,例如体系时钟、外部接口等)给定一致的输入将会产生一致的输出场最终保持一致的状况,而日记因为其固有的次序性并不依附体系时钟,正好可以用来解决变革有序性的问题。

我们应用这个特点实现解决分布式体系中碰到的很多问题。例如RocketMQ中的备节点,主broker接收客户端的请求,并记录日记,然后及时同步到salve中,slave在本地重放,当master挂掉落的时刻,slave可以持续处理请求,例如拒绝写请求并持续处理读请求。日记中不仅仅可以记录数据,也可以直接记录操作,例如SQL语句。

日记是解决一致性问题的关键数据构造,日记就像是操作序列,每一笔记录代表一条指令,例如应用广泛的Paxos、Raft协定,都是基于日记构建起来的一致性协定。

日记在Message Queue中的应用

日记可以很便利的用于处理数据之间的流入流出,每一个数据源都可以产生本身的日记,这里数据源可以来自各个方面,例如某个事宜流(页面点击、缓存刷新提示、数据库binlog变革),我们可以将日记集中存储到一个集群中,订阅┞愤可以根据offset来攫取日记的每笔记录,根据每笔记录中的数据、操作应用本身的变革。

这里的日记可以懂得为消息队列,消息队列可以起到异步解耦、限流的感化。为什么说解耦呢?因为对于花费者、临盆者来说,两个角色的职责都很清楚,就负责临盆消息、花费消息,而不消关怀下流、上游是谁,不管是来数据库的变革日记、某个事宜也好,对于某一方来说我根本不须要关怀,我只须要存眷本身感兴趣的日记以及日记中的每笔记录。

我们知道数据库的QPS是必定的,而上层应用一般可以横向扩容,这个时刻如不雅到了双11这种请求忽然的场景,数据库会吃不消,那么我们就可以惹人消息队列,将每个队数据库的操作写到日记中,由别的一个应用专门负责花费这些日记记录并应用到数据库中,并且就算数据库挂了,当恢复的时刻也可以大年夜前次消息的地位持续处理(RocketMQ和Kafka都支撑Exactly>

分布式体系中可横向扩大是一个相当重要的特点,加机械能解决的问题都不是问题。那么若何实现一个可以或许实现横向扩大的消息队列呢? 假如我们有一个单机的消息队列,跟着topic数量标上升,IO、CPU、带宽等都邑逐渐成为瓶颈,机能会慢慢降低,那么这里若何进行机能优化呢?


  推荐阅读

  爬虫技术的门道,这篇文章总结的最全

CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 Web是一个开放的平台,这也奠定了Web大年夜90年代初出生直至今日将近30年来蓬勃的成长。然而,正所谓成也萧何败也萧何,开放的>>>详细阅读


本文标题:分布式系统的核心——日志

地址:http://www.17bianji.com/lsqh/39461.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)