Microservices 微服务与单片体系结构

Microservices 微服务与单片体系结构,microservices,Microservices,我读了一些关于微服务的书,我有点好奇。这似乎是一个有趣的概念。但我想知道,与单片体系结构相比,使用微服务有哪些优点和缺点,反之亦然 当微服务更好地适用时,以及在哪里更好地使用单片架构。虽然我对微服务世界还比较陌生,但我会尽可能完整地回答您的问题 当您使用microservices体系结构时,您将增加关注点的解耦和分离。因为你的申请是随意分开的 这将使您的代码库更易于管理(每个应用程序都独立于其他应用程序以保持正常运行)。因此,如果您正确地执行此操作,将来将更容易在应用程序中添加新功能。而对于单片

我读了一些关于微服务的书,我有点好奇。这似乎是一个有趣的概念。但我想知道,与单片体系结构相比,使用微服务有哪些优点和缺点,反之亦然


当微服务更好地适用时,以及在哪里更好地使用单片架构。

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

当您使用microservices体系结构时,您将增加关注点的解耦和分离。因为你的申请是随意分开的

这将使您的代码库更易于管理(每个应用程序都独立于其他应用程序以保持正常运行)。因此,如果您正确地执行此操作,将来将更容易在应用程序中添加新功能。而对于单片体系结构,如果您的应用程序很大(并且您可以假设在某个时间点它会很大),则可能很难做到这一点

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

由于不同的服务都很小,并且是单独部署的,因此很明显,更容易扩展它们,其优点是您可以扩展应用程序的特定服务(使用单片计算机,您可以扩展整个“东西”,即使它只是应用程序中负载过大的特定部分)


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

@Luxo非常适合。我只想提供一个小小的变化,并带来它的组织视角。微服务不仅允许应用程序解耦,而且在组织层面上也可能有所帮助。例如,组织将能够划分为多个团队,每个团队都可以开发团队可能提供的一组微服务

例如,在像亚马逊这样的大型商店里,你可能会有一个个性化团队、电子商务团队、基础设施服务团队等等。如果你想进入微服务领域,亚马逊就是一个很好的例子。杰夫·贝佐斯(Jeff Bezos)规定,如果团队需要访问共享功能,他们必须与另一个团队的服务进行沟通。有关简要说明,请参阅


此外,微软的工程师们在微服务vs monolith的推特上也进行了一场小辩论。这场辩论有点缺乏技术性,但也可以提供一些见解。

< P>这是一个非常重要的问题,因为很少有人被微服务周围的嗡嗡声吸引,而且还有权衡要考虑的问题。那么,微服务的好处和挑战是什么(与单片模型相比)

利益
  • 可部署性:由于构建+测试+部署周期更短,因此推出新版本的服务更加灵活。此外,还可以灵活地采用特定于服务的安全性、复制、持久性和监视配置
  • 可靠性:微服务故障仅影响该微服务及其消费者,而在整体模型中,服务故障可能会导致整个整体崩溃
  • 可用性:推出新版本的微服务需要很少的停机时间,而在monolith中推出新版本的服务通常需要整个monolith的缓慢重启
  • 可伸缩性:每个微服务都可以使用池、集群和网格独立伸缩。部署特性使微服务与云的弹性非常匹配
  • 可修改性:更灵活地使用新框架、库、数据源和其他资源。此外,微服务是松散耦合的模块化组件,只能通过合同访问,因此不太容易变成一个大泥球
  • 管理:应用程序开发工作在更小、更独立的团队中进行分配
  • 设计自主性:团队可以自由使用不同的技术、框架和模式来设计和实现每个微服务,并可以独立更改和重新部署每个微服务
挑战
  • 可部署性:部署单元多得多,因此有更复杂的作业、脚本、传输区域和配置文件需要监督部署。(因此,持续交付和DevOps对于微服务项目是非常理想的。)
  • 性能:服务更可能需要通过网络进行通信,而整体网内的服务可能受益于本地呼叫。(因此,设计应该避免“闲聊”的微服务。)
  • 可修改性:对合同的更改更有可能影响部署在其他地方的消费者,而在整体模型中,消费者更有可能在整体模型中,并将与服务同步推出。还有,改善自治的机制,