我有一个单一的应用程序,单个进程有5个线程。每个线程完成某些特定任务。考虑使用docker将此应用程序移至微服务。如果我查看架构,每个工作线程将成为一个docker进程。因此,在我的案例中,Monolithic vs Microservices在某种程度上变得更像Thread and Process讨论。
拥有单片的最初想法是拥有性能线程并共享相同的内存。现在有了微服务拱,我被推到了一个可能不适合从性能角度来看的流程模型。
我对如何解决这个问题感到困惑。
答案 0 :(得分:12)
这里缺少的是微服务不适合世界上任何软件系统!考虑在执行任何操作之前将当前单片系统迁移到微服务的驱动程序。您在寻求高可用性和可扩展性吗?你想拥有用不同编程语言编写每个线程的自由吗?您的系统是否复杂,无法以单片风格理解?最后,你准备好支付微服务风格的费用吗?
微服务给系统带来了许多复杂性,并且可能由于服务的混乱而导致性能损失,有利于更高的可扩展性。如果性能是一个重要的问题,那么系统并不是那么大,而且您对上述大多数问题的回答是“不”,我强烈建议您不要采用微服务风格。相反,尝试模块化您当前的代码库并重构代码以获得更好的质量和可理解性。
关于Docker,您甚至可以使用单片样式,以消除开发和部署环境中的一些部署障碍和不一致。如果提到的部署问题不会打扰你,不要去docker,因为它只是一层计算开销。