的设计原理决定对于一个 同一个 中不能有多于 个数的
同时消费否则将意味着某些 将无法得到消息&
0
发送到 中的消息将会按照它接收的顺序追加到日志中
!对于消费者而言它们消费消息的顺序和日志中消息顺序一致&
+如果 的**为 1那么允许 1. 个 实例失效&
二、使用场景
、
对于一些常规的消息系统 是个不错的选择'" 和容错可以
使 具有良好的扩展性和性能优势&不过到目前为止我们应该很清楚认识到 并
没有提供 中的*事务性**消息传输担保消息确认机制**消息分组*等企业级特
性' 只能使用作为*常规*的消息系统在一定程度上尚未确保消息的发送与接收绝对
可靠比如消息重发消息发送丢失等
!、23
可以作为*网站活性跟踪*的最佳工具'可以将网页"用户操作等信息发送到
中&并实时监控或者离线统计分析等
+、45
的特性决定它非常适合作为*日志收集中心*' 可以将操作日志*批
量**异步*的发送到 集群中而不是保存在本地或者 ,6 中' 可以批量提交消息"
压缩消息等这对 端而言几乎感觉不到性能的开支&此时 端可以使
7 等其他系统化的存储和分析系统&
三、设计原理
的设计初衷是希望作为一个统一的信息收集平台能够实时的收集反馈信息并需
要能够支撑较大的数据量且具备良好的容错能力&
、持久性
使用文件存储消息这就直接决定 在性能上严重依赖文件系统的本身特性&
且无论任何 ) 下对文件系统本身的优化几乎没有可能&文件缓存"直接内存映射等是常用
的手段&因为 是对日志文件进行 操作因此磁盘检索的开支是较小的'同时为
了减少磁盘写入的次数 会将消息暂时 # 起来当消息的个数或尺寸达到一定
阀值时再 87 到磁盘这样减少了磁盘 () 调用的次数&
!、性能
需要考虑的影响性能点很多除磁盘 () 之外我们还需要考虑网络 ()这直接关系到
的吞吐量问题& 并没有提供太多高超的技巧'对于 端可以将消息
# 起来当消息的条数达到一定阀值时批量发送给 '对于 端也是一
样批量 7 多条消息&不过消息量的大小可以通过配置文件来指定&对于 端
似乎有个 9 系统调用可以潜在的提升网络 () 的性能%将文件的数据映射到系统内存
中 直接读取相应的内存区域即可而无需进程再次 3 和交换&其实对于
"" 三者而言: 的开支应该都不大因此启用消息压缩机制是
一个良好的策略'压缩需要消耗少量的 : 资源不过对于 而言网络 () 更应该需要
考虑&可以将任何在网络上传输的消息都经过压缩& 支持 "3 等多种压缩方
式&