16 | InfluxDB企业版一致性实现剖析:他山之石,可以攻玉
16 | InfluxDB企业版一致性实现剖析:他山之石,可以攻玉
讲述:于航
时长14:34大小13.34M
什么是时序数据库?
如何实现 META 节点一致性?
如何实现 DATA 节点一致性?
自定义副本数
Hinted-handoff
反熵
Quorum NWR
内容小结
课堂思考
赞 10
提建议
精选留言(27)
- Geek_3894f92020-03-18课后思考题,答案是QNWR,Wn,R1。wn是因为对写入的时间要求不高,r1是因为可以读取任意一节点,读性能好。
作者回复: 加一颗星:)。
共 2 条评论21 - Michael Tesla2020-04-06我觉得思考题的场景特点是:读多写少,读的性能要求高,数据要保证强一致性。 如果使用 Raft 算法 保证强一致性,那么读写操作都应该在领导者节点上进行。这样的话,读的性能相当于单机,不是很理想。 应该采用 Quorum NWR 技术,设置 W = N,R = 1。每次都要写入全部节点,写操作的性能会比较差。但是,因为写操作比较少,所以这个缺点可以忍受。而读操作只需要读任意一个节点就能返回最新的数据,性能非常高。展开
作者回复: 加一颗星:),这是个解决办法,与这个办法“类似”的二阶段提交协议,也是个办法。
共 3 条评论15 - 阿卡牛2020-03-25这个实战太企业了,新手完全无从下门,有没有些入门的课程
作者回复: 主要感觉哪方面学习起来比较困难呢?能具体说说吗? 看到了反馈,我补充下,其实,技术是一点一点学习的,关键要找到一个点,在深度上进行突破,然后再在广度上扩展开来了,比如,可以先聚焦在实战篇的分布式KV系统,将代码玩起了,吃透分布式系统的架构和开发方法,多玩代码,少想理论。代码玩出了感觉后,聚焦和吃透Raft算法。最后,再聚焦和吃透其他理论。
共 5 条评论8 - Kvicii.Y2020-03-301.META节点是Raft算法实现,那是不是存在这如果节点过多消息同步慢的问题呢?存在的话如何解决呢?(只能减少Raft节点?) 2.思考题使用quorum nwr可以达到最终一致性,这里说的强一致是最终一致的意思吗?
作者回复: 1. 不推荐节点数过多,一般推荐3个节点,也就是能容错一个节点故障,就可以了。 2. 通过反熵,可以实现最终一致性。通过quorum nwr,可以让业务按需选择一致性级别,比如说,可以是强一致性,也可以是最终一致性。
4 - 每天晒白牙2020-03-18感觉自己对这些知识理解的还是不够,更不能进行实战应用,还得好好学学。 对于思考题,首先要求强一致性,读多写少,那是不是可以像 META 节点一样,采用 Raft 算法实现强一致性。但这样对性能可能就有影响了,不过这个 KV 系统是读多写少,应该也可以 然后就是从性能考虑,可以在 AP 系统中实现强一致性。根据文中提示,可以采用 Quorun NWR 实现展开
作者回复: 加一颗星:),如果直接使用Raft集群,读性能满足不了,可以增加几台内存缓存服务器,来提升读性能。
共 2 条评论3 - Following U2020-07-12hello,讲师好,influxdb 企业版你这边的分布式版本的github 地址吗?
作者回复: https://github.com/freetsdb/freetsdb,现在是Alpha版,还在准备中。项目中一些有意思的技术点和设计,我也会在第一时间和大家分享同步:)。
3 - 夜空中最亮的星2020-03-18喜欢案例,让案例来的更猛烈些吧
作者回复: 好的,也期待你的更多反馈:)。
2 - Heaven2020-08-21读多写少啊,只需要保证在每次都必须要写入到每一个节点上就可以了,然后读的时候直接去读,自然是最新的
作者回复: 加一颗星:)
1 - hanazawakana2020-06-26hinted-handoff是直接邮寄的一种实现方式吗
作者回复: 加一颗星:),可以这么理解,只是“直接邮寄”背后的思想普适、常见,所以,“直接邮寄”很少被提及了。
1 - Dylan2020-04-09可以在AP模型中,引入QNWR
作者回复: 加一颗星:)
1 - 885912020-04-021、存储系统,数据肯定要冗余 2、可以使用WNR 模型 1、写不多 ,全写 2、读多,一个读
作者回复: 加一颗星:)
1 - 欧阳2020-03-30除了quorum NWR。kfk的分区是不是也是一种思路
作者回复: 加一颗星:),目标不同,quorum NWR实现的是自定义一致性级别,kfk分区是为了实现水平扩展、负载均衡,提升读写性能。
共 2 条评论2 - 姜川2020-03-26老师,raft要实现强一致是不是就需要收到所有节点的ACK才可以,半数以上那种只能是最终一致性吧,因为会有短暂的不一致发生
作者回复: 加一颗星:),不需要,在领导者节点上执行读操作,可以实现强一致性:)
2 - pedro2020-03-18前面的十几讲都在为这一讲做铺垫,快更新,看看后面的实战部分😃
作者回复: 加一颗星:),理论的实战总结:)。
1 - 核桃2022-01-09这里关于InfluxDB的副本机制,因为这里的数据是监控数据的话,其实没必要实现主副本那种,但是在其他场景中,例如分布式文件系统里面,就需要了,因为修复数据的难度更大了. 当然这里关于副本数据传输,有一个优化点的,使用两个缓存队列来实现. 第一队列就是正常接受到数据的时候正常串行发送. 如果节点发送Data数据到其他节点上失败了,那么在简单重试后还是失败,就应该放到第二缓存队列中. 在第二队列的任务都是那些有问题的需要不断重试的,这时候可以上报到Meta集群里面了.进行其他的处理. 总的来说,因为本人是做分布式文件系统的,这里真的有很多很多相似的地方,但是文件系统需要考虑修复和数据重平衡等很多很多问题.展开
- nomoshen2020-10-19关于最后的堆砌开源软件这个观点我其实有点不能认同;的确在influxdb场景上的存储不断的优化是值得鼓励,并且觉得这就是它的门槛和优势;但是在一些时序场景上加入内存数据库、消息队列、流式引擎来解决时序场景上的一些难点我觉得也是可以的;
作者回复: 加一颗星:),在大数据、海量数据场景,除了设备成本高昂(比如某团队采用类似方案的系统,一年的设备成本,80个Million),效果也不好,多个团队、多个系统,能证明这点,而这个点也是当前的痛点,大家着力解决的。
- 要努力的兵长2020-09-11它使用 Raft 算法实现 META 节点的一致性(一般推荐 3 节点的集群配置) ------------ Raft算法 来实现强一致性??? Raft算法不是只可 最终一致性吗?
作者回复: 加一颗星:),限制读操作只能在领导者节点上执行,可以实现强一致性。实现的是最终一致性还是强一致性,取决于读操作能否在非领导者节点上执行。
- hanazawakana2020-06-01请问这个Quorum NWR是influxdb enterprise才有的吗?influxdb 1.0版本和2.0版本没有吗?
作者回复: 加一颗星:),企业版是分布式系统,支持的。而开源版是单机,不支持的,因为即使实现了,也没有意义。
- 竹马彦四郎的好朋友影...2020-05-06"因为查询时就会出现访问节点数过多而延迟大的问题。" 这句话感觉是不是想表达的是如果AP系统包含节点过多,因为要达到最终一致性,会导致同步时间比较长,所以读到最新数据延迟长~
作者回复: 加一颗星:),查询涉及到不同节点的多个分片时,通讯多,延迟大,比如,如果10节点集群,统计一天的时序记录的count,涉及到了20个分片,分别在10个节点上,这时就可能出现因通讯多而延迟大的问题。
- 竹马彦四郎的好朋友影...2020-05-06我觉得这是老师对前面的知识的一个串讲~ 感觉很好~ 赞!
作者回复: 加一颗星:),实战总结,技术的最终目的,是实战,在实战中才能更好的理解技术,而不会陷入“白马非马”等形而上的争论和纠结中。