将微服务嵌入另一个

将微服务嵌入到另一个微服务中并不常见,但它可以为开发面向服务的应用程序开辟新的途径。

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

什么是嵌入?

在下图中, 告了嵌入背后的主要概念。

在左侧,两个微服务定期部署在不同的执行上下文中,并使用 络连接。在右侧,相同的微服务组合在微服务 1(父级)的执行上下文中执行,并且它们的连接在本地管理。值得注意的是,在这种情况下,两个微服务都与它们的外部接口一起完全定义。因此,它们不需要被操纵,以防它们必须被分离或聚合,重新绑定它们的连接就足够了。

更多服务可以嵌入到另一个服务中,已经嵌入其他服务的服务可以再次嵌入。此外,如果配置正确,嵌入式服务可以将其操作暴露在外部。在下面的示例中,所有架构都在 MS1 的执行上下文中执行,MS2 和 MS3 都有自己的执行上下文,分别嵌入了微服务 MS4、MS5 和微服务 MS6 和 MS7。此外,MS1 和 MS4 都公开了要从外部客户端调用的操作。

服务架构不变性

动态嵌入

动态嵌入表示在运行时嵌入服务的可能性。这样的功能可以以两种不同的方式使用:

  1. 根据嵌入器的业务逻辑,可以通过从存储库中获取其定义来运行在不同微服务中实现的某些功能。可以在此处找到用 Jolie 编写的此类场景的示例:计算器服务动态加载操作以执行嵌入相应的微服务(sumsubdivmul)。
  2. 外部客户端将要执行的服务定义发送到目标微服务。可以在此处找到相同的计算器示例,利用消息传递重新实现。

处理微服务组合的新视角

嵌入原语允许以不同于我们使用传统技术的方式来考虑微服务,因为它允许我们将微服务视为软件的一个完整单元。这样的事实有两个主要后果:

  • 微服务应用程序不一定部署为分布式微服务的组合,即使它总是设计为微服务的分布式组合。微服务确实可以部署为独立服务,也可以用作另一个微服务中的库。这样的方面允许推迟将所有组件部署为单个独立服务或嵌入式服务的集合的决定;
  • 动态嵌入开启了设计和实现动态可重构微服务的可能性,这些微服务通常不会在设计级别考虑
  • 结论

    嵌入是一种机制,它允许在微服务设计和开发中实现一些有趣的方面,例如推迟部署决策和设计动态可重新配置的微服务。此外,由于嵌入,开发人员可以通过永不放弃面向服务的编程范式来设计和实现面向服务的解决方案。开发人员的认知努力最终减少了,因为他/她只需处理独特的编程范式,而不是从面向服务的模型切换到另一个语言领域,如面向对象的模型。

    在 Jolie 中,嵌入是本机支持的,嵌入和相关方面是免费的,但如果我们考虑传统技术,可能并不容易弄清楚嵌入是如何工作的。实际上,通常,微服务是多种技术的工程组合。如果我们考虑 Java 堆栈,例如,公共接口使用 定义,服务端点使用springbootopenAPI等框架进行管理,最后,业务逻辑使用Java创建. 这意味着,在传统场景中,嵌入微服务应该通过将所有技术堆栈嵌入到父微服务的执行环境中来实现,这并不是那么直接。一方面,这一事实可以更好地理解像 Jolie 这样的原生面向服务的编程语言的贡献,另一方面,它可以触发在传统微服务技术堆栈中添加嵌入机制的举措。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年9月1日
    下一篇 2022年9月1日

    相关推荐