我对Web应用程序分散到微服务这一点感到困惑 - 它是在url级别还是在模型级别? 举个例子,假设我有一个3页的单片应用程序。假设每个页面都有一个单独的用例,我想用他们自己的微服务来支持它们。现在,哪些是实现基于微服务的架构的正确方法:
答案 0 :(得分:8)
你麻烦的是如何为你的微服务建模。
在微服务方面,第二种方法是最合适的,它通过API公开其逻辑。
当您为微服务建模时,请始终牢记以下事实。
松散耦合:当服务松散耦合时,对一项服务的更改不应要求更改另一项服务。这个微服务的重点是能够对一个服务进行更改并进行部署,而不需要更改系统的任何其他部分。这非常重要。
强大的凝聚力:我们希望相关行为坐在一起,并且无关联的行为可以放在其他地方。为什么?好吧,如果我们想要改变行为,我们希望能够在一个地方更改它,并尽快释放该更改。
答案 1 :(得分:4)
与软件工程一样,答案取决于它。我现在无法想象一个原因,但选项1在某些特定情况下可能会有用。
然而,考虑到微服务的正式定义,选项2更好地说明了它。拥有微服务的一个主要优点是能够重用它。不同的应用程序对呈现信息有不同的要求和需求。使您的微服务返回数据的JSON表示将使您更灵活地格式化此信息。
答案 2 :(得分:2)
微服务apigateway的Api网关模式是您可以开始将呼叫分发或转发到不同服务的第一点
答案 3 :(得分:1)
我们目前正在实施类似于您的第二个选项的架构。我们在做这件事时遇到了以下复杂问题:(任何人都可以随意参与其中,因为它仍在进行中)
API网关也有一些缺点。它是另一个必须开发,部署和管理的高可用组件。 API Gateway也存在开发瓶颈的风险。开发人员必须更新API网关才能公开每个微服务的端点。重要的是,更新API网关的过程尽可能轻量级。否则,开发人员将被迫排队等待更新网关。然而,尽管存在这些缺点,但对于大多数实际应用来说,使用API网关是有意义的。