我们在一起的旅程即将结束,但你们有许多新的途径需要探索。我们在这份小报告中涵盖了很多内容,但肯定没有涵盖所有内容!我们刚刚触及了表面。在转向响应性微服务时,需要考虑更多的事情。Vert.x也不局限于微服务,可以处理大量不同的用例。
What Have We Learned?
你在这份报告里学到了什么?首先,我们从微服务和什么是响应性的微服务开始。我们了解到reactive microservices 构成了响应式系统。我们还看到了响应性编程如何帮助构建这些微服务。
我们发现了eclipse Vert.x,它是用于构建响应性微服务(其中包括许多其他事情)的工具包。Vert.x提供了一个完美的范例来拥抱 microservices:异步、作为一流的公民的failures,以及非阻塞。为了驯服异步开发模型,Vert.x将其功率与RxJava结合起来。我们的发现始于http microservices,以及如何使用它们。虽然http通常在 microservices 中使用,但是当我们直接引用其中的实例时,我们也看到了它的一个参数。为了解决这个问题,我们使用了在事件总线,并看到基于消息的microservices如何使您构建响反应的microservices,从而生成响应式系统。
当然,一个microservice 并不能构建一个系统。为了构建系统,我们必须使用服务发现。服务发现使得位置透明性和移动性成为多用户系统中的两个重要特性。我们还涵盖了弹性模式,因为 microservice 系统是分布式系统,您需要为失败准备。
在最后一章中,我们将我们的microservices部署到了基于上的开源容器平台OpenShift之上。Vert.x和OpenShift的结合简化了反应性微服务的部署和执行,并使整个系统保持在正轨上。
那么,这就是结束吗?否。这只是第一阶段的结束。
Microservices Aren’t Easy
预计微服务将提高整体敏捷性。这不仅是一个技术问题,也是一个组织问题.。如果您的组织不从组织角度接受microservices,那么任何技术都不会帮助您。
虽然建造microservices看起来很简单,但实际上还有很多事情要做。微服务系统是分布式系统,因此涉及分布式计算规律。失败也是不可避免的。每个微服务都应该拥有它的数据,您通常需要几个持久性技术。
为了构建多功能系统,有几个课题有待进一步研究。首先,为了启用所承诺的敏捷性,您将更频繁地部署不同的子模块。因此,持续交货是关键。您还需要尽可能自动化地实现您的服务器端的发布和部署。不要忘记,您的微服务是可替换的,不变的镜像传递是一个必须具备的特性来缩放。
但是,如果我们部署的微服务是不可变的,我们如何传递配置信息并可能重新配置它们?例如,如何更改日志级别、配置数据库位置和凭据、切换功能等等?配置是分布式系统中非常重要的一部分,在微服务中是很困难的。所有的系统都是不同的,也没有灵丹妙药,但是有各种各样的解决方案,从环境变量到Git存储库和专用配置服务器。云平台也提供配置能力。为了减少这种多样性,Vert.x几乎可以从任何地方检索配置。
一旦部署和配置了微服务,就需要保持系统的正常运行。日志记录、度量和跟踪是设计和开发一个基于数据的系统时要记住的重要问题。您必须从您的微服务中检索记录的消息、度量和跟踪,以集中方式聚合它们,以启用相关性和可视化。虽然日志记录和监视通常被很好地理解,但分布式跟踪常常被忽略。然而,在微服务中痕迹是无价的,因为它们会帮助您识别瓶颈、微服务之间的关系,并给您的系统响一个良好的想法。
The Evolution of the Microservice Paradigm
微型服务是动态的,而且总是不断发展的。最近,无服务器的趋势,也被称为功能作为一项服务,正在获得许多吸引力。在这个新的范例中,您的部署单元是一个函数。这些函数接收和处理消息。在范式强调部署、日志记录和跟踪工具,但是促进了一个简单的开发模型,并提高了系统的可扩展性,因为您可以实例化许多函数实例,因为您需要处理负载。
http/2也在世界上取得了令人瞩目的成功。它提高了http 1.1的性能和可扩展性,并且允许多个请求复用单个tcp连接。它还提供双向通信,GRPC是基于http/2的远程处理调用(Rpc)框架,提供高性能、高性能、安全、双向交互。它能够高效地连接数据中心和跨数据中心的服务,并使用插件支持负载平衡、跟踪、Health check和身份验证。它也适用于嵌入式设备、移动应用程序和浏览器。虽然rpc最初被认为是有害于microservice系统的,但它仍然非常流行。GRPC解决了传统rpc机制遇到的问题,例如阻塞调用和部分故障。但是,要注意,在提供者、用户和消费者之间共享契约(接口)可能会限制您的敏捷性。Vert.x提供http/2的服务器端和服务器。此外,它还能够创建和消费基于服务的服务。
Vert.x Versatility
虽然本报告侧重于响应式微服务,但这只是中的的一个方面。生态系统的丰富使得您能够开发出许多不同的应用程序。由于它的执行模型,您的应用程序将是异步的,并且将接受无反应系统的魔法。
现代web应用程序为用户提供实时、交互式的体验.。信息被推送到浏览器并无缝显示。Vert.x事件总线可以用作提供这种体验的主干。浏览器连接到事件总线并接收消息,还可以在后端或与连接到事件总线的其他浏览器上发送消息并与之交互。
物联网(物联网)是一个令人兴奋的领域,但也非常令人兴奋。智能设备使用了许多协议。mes经常必须从一个协议翻译成另一个协议。Vert.x为客户提供了大量协议来实现这些翻译,并且它的执行模型能够处理构建物联网网关所需的高级别协议。
这两个例子说明了生态系统的丰富程度。Vert.x提供了无限的可能性,你负责的范围。您可以使用您喜欢的编程语言和您喜欢的开发模型来调整系统。不要让框架控制-你是负责的。
About the Author
Clement·Esco(@clementplop)是红帽公司的首席软件工程师。他有好几个职业生涯,从学术职位到管理人员。目前,他正在担任一个长期的核心开发人员。他参与了涉及许多领域和技术的项目和产品,比如osgi、移动应用开发、连续交付和DevOps等。Clement 是许多开源项目的一个积极的决策工具,比如apache felix、iPOJO、智慧框架和eclipse Vert.x。
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什么讨论的内容,可以加我微信公众号: