我一直在研究微服务,并注意到每个作者都不鼓励使用单片架构。他们说在企业环境中,微服务是非常可取的。我的问题是如何显示正常数据,例如您正在阅读的此stackoverflow问题。如何在微服务环境中加载此页面?请求需要排队,然后另一个微服务需要获取并返回数据。当请求排队时,请求上下文丢失 - 页面将在数据排队时返回。当请求已经返回浏览器时,系统如何向页面显示数据?
我能看到这个工作的唯一方法是浏览器需要轮询web api以获取新数据。
答案 0 :(得分:1)
只有一个问题和答案的主题非常广泛,但我会在这种情况下尽力而为。
微服务的概念是拥有整体的独立部分,在任何给定时间任何微服务都可能下降而其他区域不会受到影响。因此,如果您希望Stack Overflow(SO)在微服务中运行此问题的HTML,则一种方法是让QuestionService负责提出新问题。此服务可以处理实际问题所需的任何内容,然后发布添加了新问题的pub-sub类型消息。 HtmlService将获取此消息并执行所需的所有HTML rending,并且可能需要在其他服务完成其工作之前询问其他服务。可能需要向UserService询问有关发布用户的其他数据。一旦HtmlService拥有它需要的所有信息,它就可以将HTML保存到它自己的数据库中以保持持久性。
现在来自SO的其他一些用户请求获得新问题。请求被路由到HtmlService,并且已经生成了HTML。
现在仍然可以看到所有问题,如果QuestionService或UserService发生故障,仍然可以提供所有HTML。您无法添加新问题或注册新用户,但作为知识库的网站仍然有效。
我希望这个粗略的例子能回答你的问题。请随意发表评论,我会尽力详细介绍。