数据库 – 消息系统中的表排队[封闭]

前端之家收集整理的这篇文章主要介绍了数据库 – 消息系统中的表排队[封闭]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在实际生产环境中遇到了消息传递系统的良好和不利的一面,我必须承认,组织良好的表或表格模式每次都可以在任何其他形式的消息队列中跳动,因为:

>数据永久存储在表上.我已经看到这么多的java(jms)应用程序丢失或消失消息的方式来捕获未捕获的异常或其他错误.
队列往往填满.相反,Db存储几乎是无限的.
>表易于访问,而您必须使用esotic乐器从队列中读取.

你对每种方法有什么看法?

解决方法

每次敲打这个词完全取决于你的要求是什么.当然,它不会每个人都打败每个人.

如果您正在构建一个已经使用数据库的单一系统,则您的性能吞吐量要求不高,您不必与任何其他团队或系统进行通信,那么您可能是对的.

对于简单,低通量,大多数单线程的东西,数据库是消息队列的完美替代品.

消息队列发光的地方在何处

>您想要一个高性能,高度并发和可扩展的负载平衡器,因此您可以在许多服务器/进程中同时处理数以万计的消息(使用数据库表,您将很幸运处理几百秒,并处理多线程很难,因为一个进程会倾向于锁定消息队列表)
>您需要使用不同的数据库在不同系统之间进行通信(因此,不必向不同团队的其他人员传递对系统数据库的写访问权限)

对于具有单个数据库的简单系统,团队和相当适度的性能要求 – 一定要使用数据库.使用正确的工具等等

然而,在大型组织中,消息队列闪耀的地方有很多系统需要彼此通信(因此您不希望商业数据库成为故障的中心点或版本地狱的地方),或者当您有高性能要求.

性能方面,消息队列将始终击败数据库表,因为消息队列是专为该作业设计的,并且不依赖于悲观的表锁(这是队列的数据库实现所必需的)进行负载平衡)和good message queues will perform eager loading of messages to queues to avoid the network overhead of a database.

同样,您绝对不会使用数据库来对Web服务器之间的HTTP请求进行负载平衡,因为它太慢了 – 如果您对不使用数据库负载平衡器有很高的性能要求.

猜你在找的MsSQL相关文章