持久消息传递的缺点

总览

持久消息传递可以非常快,甚至与非持久消息传递一样快。

持久消息传递的局限性

持久的消息传递取决于您的主内存大小和硬盘驱动器的速度。 如果您有HDD,则该速度可低至20 MB / s,最高可至60 MB / s。 RAID组HDD可以支持100到300 MB / s。 SATA SSD可以支持100到500 MB / s之间的速度,而PCI SSD可以支持高达1.5 GB / s的速度。

案例分析

假设您有8 GB的内存,每秒写入两百万条100字节的消息,以及一个支持25 MB / s的HDD。 这可以按突发速度很好地工作,但是您可以达到磁盘缓存已满的程度。 根据您的操作系统,这可能在主内存大小的20%到80%之间。 以我的经验,即使您有足够的可用内存,Windows也趋向于接近20%,而Linux往往允许在30%的内存中进行未提交的写入。

假设您每秒写200万条100字节消息或200 MB / s,并且有1600 MB的磁盘缓存。 写入速率和生成速率之间的速度差为175 MB / s,因此仅用9秒即可填满缓存。 此时,您的性能下降到磁盘的写入速度(每秒25 MB)。 每条消息为100字节,您现在每秒写入250,000条消息,或者慢8倍。

解决办法是什么?

  • 将您的突发次数控制在磁盘缓存范围之内,例如,在上述情况下,这大约是一千八百万条消息。
  • 增加您的内存量。 虽然内存价格便宜,您可以以150英镑的价格购买32 GB,但所有这些都包括您可以支持的微脉冲持续时间。
  • 提高驱动器速度。 使用SSD,您可以支持更高的带宽。 SATA SSD驱动器支持高达500 MB /秒的速度,这比Chronicle通常可以序列化消息的速度要高,即绰绰有余。 这样做的缺点是减少了您可以编写的消息总数。 500 MB SSD可以存储50亿条100字节消息。 6×4 TB RAID-5集可以支持超过200 MB / s的传输速率,足以满足上述案例研究的需要,并且可以存储2000亿条消息。

结论

如果看到任何持久的消息传递解决方案在负载下突然变慢,则需要查看缓冲区的大小和磁盘子系统的吞吐量。

参考:来自Vantage Java博客的JCG合作伙伴 Peter Lawrey提供的持久消息的不利方面。

翻译自: https://www.javacodegeeks.com/2013/02/a-down-side-of-durable-messaging.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值