Pau*_*son 149
这是一个非常重要的问题,因为有些人被微服务的所有嗡嗡声所吸引,并且需要考虑权衡.那么,微服务的好处和挑战是什么(与单片模型相比)?
一旦我们理解了这些权衡,我们还需要知道另一个问题来回答另一个问题:哪个更好,微服务还是整体?我们需要知道应用程序的非功能性需求(质量属性要求).一旦您了解了性能与可扩展性的重要性,您就可以权衡权衡并做出有根据的设计决策.
Kaj*_*Kaj 71
虽然我对微服务世界比较陌生,但我会尽量回答你的问题.
当您使用微服务架构时,您将增加解耦和关注点分离.因为你很快就拆分了你的应用程序.
这导致您的代码库更易于管理(每个应用程序独立于其他应用程序以保持运行).因此,如果您这样做,将来更容易向您的应用程序添加新功能.如果使用单一体系结构,如果您的应用程序很大,那么它可能会变得非常困难(并且您可以在某个时间点假设它).
还部署应用程序更容易,因为你是单独建立独立的微服务,并在不同的服务器上部署它们.这意味着您可以随时构建和部署服务,而无需重建应用程序的其余部分.
由于不同的服务很小并且单独部署,因此扩展它们显然更容易,其优势在于您可以扩展应用程序的特定服务(使用单片式扩展完整的"事物",即使它只是一个特定的部分)应用程序负载过重).
但是,对于不打算变得太大而无法管理的应用程序.最好将它保持在单片架构上.由于微服务架构存在一些严重的困难.我说部署微服务更容易,但这与大型单块相比只是如此.使用微服务会增加将服务分发到不同位置的不同服务器的复杂性,您需要找到一种方法来管理所有这些服务.如果你的应用程序变大,构建微服务将在长期帮助你,但对于较小的应用程序,它更容易保持整体.
Wil*_*l C 11
@Luxo是现货.我只是想提供一个微小的变化,并带来它的组织视角.微服务不仅允许应用程序解耦,而且还可以在组织层面上提供帮助.例如,该组织可以分成多个团队,每个团队可以在团队可能提供的一组微服务上进行开发.
例如,在像亚马逊这样的大型商店中,您可能拥有个性化团队,电子商务团队,基础设施服务团队等.如果您想进入微服务,亚马逊就是一个非常好的例子.Jeff Bezos要求团队在需要访问共享功能时与其他团队的服务进行通信.请参阅此处以获取简要说明.
此外,来自Etsy和Netflix的工程师在微软服务与Twitter上的monolith的当天也进行了一场小小的辩论.辩论的技术性稍差,但也可以提供一些见解.