微服务与单体架构

标签 microservices

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我读了一些关于微服务的书,我有点感兴趣。似乎这是一个有趣的概念。但我想知道,使用微服务与单体架构相比有什么优点和缺点,反之亦然。

什么时候微服务更适合,哪里更适合单体架构。

最佳答案

虽然我对微服务世界比较陌生,但我会尽量完整地回答您的问题。

当您使用微服务架构时,您将增加关注点的解耦和分离。由于您正在拆分您的应用程序。

这导致您的 代码库将更易于管理 (每个应用程序都独立于其他应用程序以保持正常运行)。因此,如果你做对了 ,它将是 将来更容易添加新功能 到您的应用程序。而对于单体架构,如果您的应用程序很大(并且您可以假设在某个时间点会很大),这可能会变得非常困难。

还有部署应用程序更容易 ,因为您要单独构建独立的微服务并将它们部署在单独的服务器上。这意味着您可以随时构建和部署服务,而无需重新构建应用程序的其余部分。

由于不同的服务很小,而且是分开部署的,很明显更易于扩展 它们的优势在于您可以扩展应用程序的特定服务(使用单体,您可以扩展整个“事物”,即使它只是应用程序中负载过重的特定部分)。

但是,对于不打算在将来变得太大而无法管理的应用程序。最好将其保留在单体架构中。由于微服务架构涉及一些严重的困难。我说过部署微服务更容易,但这仅与大型单体相比才是正确的。使用微服务会增加将服务分发到不同位置的不同服务器的复杂性,您需要找到一种方法来管理所有这些。如果您的应用程序变大,从长远来看,构建微服务将对您有所帮助,但对于较小的应用程序,保持整体更容易。

关于微服务与单体架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041733/

相关文章:

c# - 如何通过 MassTransit 和 RabbitMQ 发送各种命令类型?

spring - 从所有其他微服务获取当前经过身份验证的用户

git - 如何将存储库维护成单个存储库

database - 微服务和数据库

java - 在2个服务器之间传输InputStream

rabbitmq - 是否有一些指导方针来识别 DDD 中有界上下文的 RabbitMQ 队列

microservices - Zuul转发错误,负载均衡器没有可供客户端使用的服务器

java - 通过 REST API 访问机器学习模型

websocket - MicroFrontends 通过单 channel /websocket 到 MicroService 后端的通信模式

domain-driven-design - Lagom 或微服务中的异步流程设计