我读了一些有关微服务的文章,但我对此有些兴趣,好像是一个有趣的概念。但是我想知道,使用微服务比单片架构有什么优点和缺点,反之亦然。
微服务何时更合适,单片架构更适合。
我读了一些有关微服务的文章,但我对此有些兴趣,好像是一个有趣的概念。但是我想知道,使用微服务比单片架构有什么优点和缺点,反之亦然。
微服务何时更合适,单片架构更适合。
Answers:
虽然我是微服务领域的新手,但我会尽力回答您的问题。
当您使用微服务架构时,将增加关注点的分离和分离。既然您会分散应用程序。
这样一来,您的代码库将更易于管理(每个应用程序独立于其他应用程序以保持运行)。因此,如果您这样做正确,将来在您的应用程序中添加新功能将变得更加容易。而采用单片式架构,如果您的应用程序很大(可能会在某个时间点假设),这可能会变得非常困难。
还部署应用程序更容易,因为你是单独建立独立的微服务,并在不同的服务器上部署它们。这意味着您可以随时构建和部署服务,而不必重新构建其余的应用程序。
由于不同的服务规模较小且分别部署,因此显然可以轻松地扩展它们,其优势在于您可以扩展应用程序的特定服务(使用整体式,您可以扩展完整的“事物”,即使它只是其中的特定部分)。应用程序负载过大)。
但是,对于将来不会变得太大而无法管理的应用程序。最好将其保留在整体架构中。由于微服务架构涉及一些严重的困难。我说过,部署微服务比较容易,但这仅与大型组件相比才是正确的。使用微服务会增加将服务分发到不同位置的不同服务器的复杂性,您需要找到一种方法来管理所有这些服务。从长远来看,如果您的应用程序变大,构建微服务将为您提供帮助,但是对于较小的应用程序,保持单一是很容易的。
这是一个非常重要的问题,因为一些人被微服务的所有嗡嗡声所吸引,并且需要权衡取舍。那么,微服务的优势和挑战是什么(与整体模型相比)?
一旦了解了这些折衷,我们还需要知道另一件事来回答另一个问题:微服务还是整体服务哪个更好?我们需要知道应用程序的非功能性要求(质量属性要求)。例如,一旦了解了性能与可伸缩性之间的重要性,就可以权衡取舍并做出有根据的设计决策。
@Luxo很特别。我只想稍作改动,并提出其组织观点。微服务不仅允许应用程序解耦,而且还可以在组织级别提供帮助。例如,组织将能够分成多个团队,每个团队都可以在团队可能提供的一组微服务上进行开发。
例如,在像亚马逊这样的大商店里,您可能会有一个个性化团队,电子商务团队,基础设施服务团队等。如果您想使用微服务,亚马逊就是一个很好的例子。杰夫·贝佐斯(Jeff Bezos)规定,如果团队需要访问共享功能,则他们必须与另一团队的服务进行通信。参见此处的简要说明。
此外,来自Etsy和Netflix的工程师在微服务与Twitter上的整体服务时代也进行了一次小型辩论。辩论的技术性稍差一些,但也可以提供一些见解。