加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮南站长网 (https://www.0554zz.cn/)- 管理运维、图像技术、智能营销、专属主机、5G!
当前位置: 首页 > 站长资讯 > 评论 > 正文

交通运输部回应自动驾驶

发布时间:2021-02-06 12:00:28 所属栏目:评论 来源:互联网
导读:本文要介绍的是 2019 年 SOSP 期刊中的论文 KVell: the Design and Implementation of a Fast Persistent Key-Value Store[^1],该论文实现的 KVell 是为现代 SSD 开发的键值存储系统,与使用 LSM 树(Log-structured merge-tree)或者 B 树的主流键值存储不同

本文要介绍的是 2019 年 SOSP 期刊中的论文 —— KVell: the Design and Implementation of a Fast Persistent Key-Value Store[^1],该论文实现的 KVell 是为现代 SSD 开发的键值存储系统,与使用 LSM 树(Log-structured merge-tree)或者 B 树的主流键值存储不同,KVell 为了充分利用新设备的性能并降低 CPU 的开销使用了完全不同的设计。

作为软件工程师,我们直接与硬件打交道的概率其实很少,大多数时间都会通过操作系统以和 POSIX 间接操作不同的硬件。虽然看起来过去 10 年磁盘等存储硬件的演变与更新非常缓慢,但是实际上:

  • 磁盘远比 10 年前要快得多;
  • 磁盘的随机和顺序 I/O 性能差距变小;

产消息

既然引入了MQ这个组件,必然意味着同时存在消息的生产者和消费者,这也是典型的订阅模式。在消息数据的整个生命周期中,会依次经过生产者=》MQ=》消费者,三个主要部分。在生产者角度,消息的可靠投递是首要的任务,由于网络的不可靠性,所以消息理论上是不可能100%都投递成功的,针对这种情况,一般的解决方案就是消息重传。

当然重传机制并非无限制的重传,可以根据业务制定具体的重传策略,比如:可以设置最大重传次数为10次,而重传的时间间隔依次增加。这种方案虽然简单,但是带来的副作用就是消息重复投递的问题。

为什么需要幂等性消费

幂等是一个数学上的概念理论,它的意思是多次执行同一个操作和执行一次操作,最终得到的结果是相同的。

举一个业务不恰当但是很准确的栗子:你的女朋友出轨一次和出轨多次,对于你来说,结果其实是一样的:你被绿了。所以出轨一次和出轨多次的结果对于你来说是相同的。

对于MQ来说,退一万步讲,就算MQ的消息无重复投递的问题,在消费端的业务中,那些对于消息消费敏感的业务,我们在设计程序架构的时候也要把消息的幂等性消费考虑在其中,比如:用户购买商品赠送红包或者积分的业务场景,这样的场景对于消息的重复消费很敏感,如果程序处理不当,出现重复给用户送红包的情况,估计程序员又要背锅来祭天了。

幂等性其实很好做

任何业务场景接口的幂等性设计,都要找出幂等性产生的数据标识。

MQ消息的重复性问题,从消息的整个流转过程来看,大体上可以在两个方向来解决:

  • 消息产生的时候避免投递重复性消息,既:消息生产者来保证消息唯一性
  • MQ本身提供重复消息的过滤功能
  • 消息被消费的时候避免被重复消费

灵魂拷问

  • MQ消息的消费为什么有时候要求幂等性?
  • 你们都说可以用版本号来解决幂等性消费?
  • 什么才是消息幂等性消费的根本性问题?

随着系统的复杂性不断增加,多数系统都会引入MQ来进行解耦,其实从引入MQ的初衷来说,多数系统是为了解耦多个模块带来的复杂性,而有些“架构师”却说的:为了解决性能问题。。。当然我不排除MQ有流量削峰的作用,我只是说大部分系统引入MQ最初的初衷应该是系统解耦。

当一个大的单体系统逐渐被拆分为多个小系统,也就是所谓的微服务拆分之后,无论是微服务之间的通信,还是分布式事务,几乎都需要MQ的支持,这也充分体现了分布式系统中MQ的重要性。这个时候整个系统间的交互就类似于下图所示


(编辑:淮南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读