man*_*ana 5 architecture microservices
我对微服务最佳实践方法有些困惑。
以下情况:
来自mqtt设备的大量传入消息。客户可以阅读消息的REST API(主要是其中的一部分)。
我的想法是,创建一个微服务以将消息存储在数据库表中。另一个带有REST API的微服务可读取此消息。由于缩放问题,我想这样做。(传入的存储部分比阅读其余的api需要更多的功率)
我读到,“完美的”微服务应该是唯一一个访问其数据库中数据的服务。因此,其他微服务应通过其API而不是在数据库级别上请求此数据。因此,我的方法将不是完美的方法。我看到一些解决方案:
但是所有这些都不对我好。
你怎么看?
问候,马库斯
我将推荐一种方法,该方法在某种程度上取决于以下问题的答案:
从消息提交到数据库到客户可以看到该消息的最大可接受时间延迟是多少?
如果这个问题的答案> 10ms,那么你可以考虑使用读写分离——你的用例似乎是一个很好的用例。
尽管这可能会给您的解决方案带来更多复杂性,但这种方法的好处包括:
将此应用到您的架构中,即使不使用某种持久排队传输,仍然可以实现读写分离,但会更加困难。你必须让整个事情由命令驱动,而不是利用事件。
这里的主要区别在于,您需要在主数据库写入和随后对负责更新读取模型的服务的调用中强制执行“可事务性”。