文档章节

为何使用消息系统

商者
 商者
发布于 2016/04/05 12:19
字数 906
阅读 43
收藏 2
  • 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
  • 冗余有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。
  • 扩展性 因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。
  • 灵活性 & 峰值处理能力 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
  • 可恢复性 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
  • 顺序保证  在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka能保证一个Partition内的消息的有序性。
  • 缓冲  在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行———写入队列的处理会尽可能的快速。该缓冲有助于控制和优化数据流经过系统的速度。
  • 用于数据流  在一个分布式系统里,要得到一个关于用户操作会用多长时间及其原因的总体印象,是个巨大的挑战。消息系列通过消息被处理的频率,来方便的辅助确定那些表现不佳的处理过程或领域,这些地方的数据流都不够优化
  • 异步通信  很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

参考&引用:http://blog.iron.io/2012/12/top-10-uses-for-message-queue.html?spref=tw

本文转载自:

商者

商者

粉丝 42
博文 142
码字总数 43255
作品 0
海淀
架构师
私信 提问
apache kafka技术分享系列(目录索引)

目录索引: Kafka使用场景 1.为何使用消息系统 2.我们为何需要搭建ApacheKafka分布式系统 3.消息队列中点对点与发布订阅区别 kafka开发与管理: 1)apachekafka消息服务 2)kafak安装与使用 ...

dannyhe
2015/09/06
453
1
PHP中发起异步请求

最近OpenSNS在改版,小编作为V3的主力开发人员,就遇到了这样一个问题。 在后台新增系统公告后,要给网站所有用户发送一条公告消息。作为自认为有一些经验的开发者,小编立马考虑了一个问题,...

钟良
2016/07/12
66
0
netlink机制-总结

1.为何我认为netlink要比procfs和sysfs更好? 答曰:基于文件系统的方案好处在于文件系统是“设置即所见”,缺点也正在于这种所见即所得的特性 ,由于文件系统的管理目前是基于用户的,就算为...

晨曦之光
2012/04/10
222
0
诺基亚 Android 手机界面曝光:类似 WP8

诺基亚Android手机界面类似Windows Phone 8 北京时间1月17日早间消息,近期市场有传闻称,诺基亚将推出Android手机。目前尚不清楚这款手机是面向新兴市场还是喜欢Android系统的Windows用户,...

oschina
2014/01/17
8.7K
46
神经信息处理系统大会本周举行 机器学习等人工智能热门话题受关注

(原标题:神经信息处理系统大会本周举行 机器学习等人工智能热门话题受关注) 中国证券网讯(记者 王宙洁)人工智能(AI)领域学术盛会——第31届神经信息处理系统大会(NIPS 2017)于4日至...

上海证券报·中国证券网
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

G1 垃圾收集器介绍-转

https://www.cnblogs.com/ASPNET2008/p/6496481.html

Java搬砖工程师
7分钟前
0
0
超高性能 key-value 数据库 Redis-基础数据结构

Redis的魅力 缓存大致可以分为两类:1.一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库);2.另一种 就是缓存组件,比如Memached,Redis;Redis(remote dictiona...

须臾之余
18分钟前
1
0
Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。 一. 选择合适的解决方法 1....

小谜弟
24分钟前
2
0
为 git 添加多个公秘钥

如果想为主机配置多个git设置,设置多个git公、秘钥,只需在生成密钥时指定密钥保持的文件即可,保证保存密钥的文件不同即可。 示例: ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f...

niithub
25分钟前
0
0
walle-web 2.0安装流水

一、环境安装 VMware Workstation,centos7.6 64位,lnmp1.5 二、安装lnmp1.5 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1......

我心中有猛狗
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部