我对像RabbitMQ这样的消息代理系统还不熟悉,我们可以使用它来创建任务/消息队列,用于类似Celery这样的调度系统。
现在有一个问题:
我可以在PostgreSQL中创建一个表,该表可以附加新任务,并由类似Celery的消费程序使用。
那么,为什么要设置一个全新的技术,如RabbitMQ呢?
现在,我相信扩展性不能是答案,因为我们的数据库像PostgreSQL一样可以在分布式环境中工作。
我在Google上查找了数据库对特定问题的影响,发现以下问题:
- 轮询使数据库忙碌且性能低下
- 锁定表->再次性能低下
- 数百万行的任务->同样,轮询性能低下
那么,RabbitMQ或其他类似的消息代理如何解决这些问题呢?
另外,我发现它遵循AMQP
协议。这有什么好处?
可以将Redis用作消息代理吗?我发现它比RabbitMQ更类似于Memcached。
请解释一下!
celery
的调度系统——我从这个问题中学到了一些有用的设计知识,现在该看看答案了... - Mark K Cowan