【发布时间】:2021-02-26 01:14:34
【问题描述】:
我有一个实时(延迟 10 毫秒)单片服务,可以在一次执行中执行多项操作。由于单体架构特别是扩展团队和维护复杂的代码库,我面临很多问题。我已经确定了 3 种不同的功能服务,并计划将单体服务拆分为 3 种不同的服务。但所有这些服务都依赖于相同的数据。
由于目前只有 1 次代码执行,我们只需要在调用中访问一次 DB(当前是它的 Redis)。拆分后有2个选项
- 从所有 3 次调用中命中 DB,但这会增加最终服务输出的延迟并增加硬件成本。
- 仅从第一个服务访问数据库并将该数据传递给第二个和第三个服务这里的问题是大量数据需要传递给不同的服务,这使得服务更加依赖第一个服务。
请分享您的经验,哪种方式更好,或者是否有更好的解决方案。
【问题讨论】:
-
很久以前,除了编写“最快代码”的所有代码技巧和最佳实践之外,人们可以给出的最佳建议是,您应该在您的特定案例/应用程序中进行基准测试。我认为这仍然是今天最好的建议。 TinstaTFC:没有最快的代码“在你的情况下,这是关于可靠性,但同样的事情。我会同时实现和基准测试(并保持基准脚手架完好无损,这样如果情况发生变化,你可以在之后重新测试多次)
标签: architecture microservices real-time soa software-design