Microservices 微服务:如何集成UI?

Microservices 微服务:如何集成UI?,microservices,Microservices,今天我开始阅读有关微服务体系结构的文章,它似乎非常有趣! 但我有一个疑问,我需要一些解释: 假设我想创建一个博客,并为此构建4个微服务:用户/登录服务、文章服务、评论服务和报告/分析服务(我知道这不是一个现实的例子…)。 报告/分析服务纯粹是后端服务-据我所知,这里没有任何问题。 但是其他三个涉及一些UI部分——据我所知,这个UI部分也应该是微服务本身的一部分,对吗? UI集成将如何工作?然后我会有一个第五个“前门”服务来收集用户请求,将它们转发给其他服务,然后这些服务用HTML/CSS进行应答

今天我开始阅读有关微服务体系结构的文章,它似乎非常有趣! 但我有一个疑问,我需要一些解释: 假设我想创建一个博客,并为此构建4个微服务:用户/登录服务、文章服务、评论服务和报告/分析服务(我知道这不是一个现实的例子…)。 报告/分析服务纯粹是后端服务-据我所知,这里没有任何问题。
但是其他三个涉及一些UI部分——据我所知,这个UI部分也应该是微服务本身的一部分,对吗? UI集成将如何工作?然后我会有一个第五个“前门”服务来收集用户请求,将它们转发给其他服务,然后这些服务用HTML/CSS进行应答,前门服务会将各个响应组合成返回给用户的内容吗

有没有可能,您有这样一个场景的示例/用例


谢谢和问候

根据我的经验,在微服务体系结构中,拥有一个像API网关一样工作的服务通常是有用的,它可以前端加载到执行该工作的更特定于域的微服务。API网关的职责可能是聚合结果并将其返回到前端,但整合从微服务返回的响应将耦合两个服务的知识,并将一些领域知识泄漏到API网关层。API网关应该尽可能薄,并且应该接触到服务来完成一些事情

这里您描述的用例是,在访问登录服务,然后访问文章或评论服务之前,尝试对用户进行身份验证。总的来说,如果前端是同一应用程序的一部分,那么它们仍然是单片的

如果应用程序变得足够大,应用程序将被产品分开,但可能仍然依赖于一组核心服务。在这种情况下,他们可能会生活在不同的UI中,这样就不那么复杂了(有点像后端的微服务)。作为旁注,微服务体系结构通常会引入一组核心服务,这些核心服务可由不同的团队使用,因此不同的应用程序具有不同的UI。电子商务应用程序就是一个例子,它让客户服务部门编辑订单,为客户提供服务,并让客户使用订单服务进行购买。实际上,这是两个应用程序,它们将有两个不同的UI。希望这有帮助


我想指出的另一件事是,只有当应用程序变得太大和复杂时,微服务体系结构才是伟大的。微服务体系结构需要更多的资源,因为它有一些额外的开销。首先从整体开始:)。

您可以采取几种不同的方法。如果有意义的话,每个微服务都可以有自己的页面来呈现。然后,您只需要一个前端,它可以为所涉及的服务创建适当的导航。菜单是为应用程序构建的,每个服务都呈现自己的UI。当您需要能够从应用程序中包括或排除服务(例如,基于许可)时,这种方法非常有效

或者,每个微服务可以提供一组HTML片段。然后,您需要一个前端服务来组合页面和导航。片段必须全部使用相同的CSS词汇表,或者使用任何方式来定义外观。当HTML片段没有包含一个或多个服务时,这种方法可能会导致奇数页

最后,可以在微服务之上构建完整的应用程序UI。这可能会导致一个“更紧密”的UI和更好的流。随着新服务的增加,它通常需要更长的时间,并且更难更改

什么是最好的?与软件开发中的大多数情况一样,它取决于您正在构建什么。在博客应用程序的例子中,您描述了我怀疑每个服务都可能有一个完整的页面UI。更常见的方法是使用完整的UI。HTML片段方法更通用,但最初开发需要更长的时间。但一旦构建完成,您将在部署应用程序的方式上拥有更大的灵活性。这对软件产品公司来说可能是一个真正的好处


希望这能有所帮助。

“据我所知,这个UI部分也应该是微服务本身的一部分,对吗?”错了,所以只有MVC模式之外的MC可以/应该移动到微服务!?V必须保持单分子?@Matt Ball嗨Matt,你有任何证据支持你的结论吗?