我是微服务架构的新手,希望创建一个集中式通知微服务,以向用户发送电子邮件/短信。
我的第一个选择是创建一个通知Kafka队列,所有其他微服务都可以向其中发送通知。然后,通知微服务将侦听此队列并相应地发送消息。如果重新启动或关闭了通知服务,我们将不会丢失任何消息,因为消息将存储在队列中。
我的第二个选择是在通知微服务上添加一个通知消息API。这将使所有其他微服务更容易,因为它们只需调用API即可与队列集成。然后,API将在内部将消息发送到通知Kafka队列并发送消息。这里唯一的问题是,如果API不可用或出现错误,我们将丢失消息。
对解决此问题的最佳方法有何建议?
答案 0 :(得分:3)
都可以。一些可以帮助您做出决定的概念:
“ Kafka”前面的服务将有助于:
在以下情况下,不希望添加包装器API:
您的第一个设计很简单,并且可以使用。如果您正在寻找我概述的优点,请考虑第二种设计。而且,为了确保我理解它,我会看到它像这样展开:
服务A应该作为多个实例运行,以确保可靠性。