是的,我们是。让我们看看为什么。
我们所有的交互都是异步的。它们使用异步和非阻塞的HTTP请求和响应。此外,由于OpenShift服务,我们将请求发送到一个虚拟地址,这使您具有弹性。服务在一组吊舱之间平衡负载。我们可以通过调整 Pod的数量或使用自动缩放来轻松地上下缩放。我们也有复原力。由于 health check,我们有一个故障转移机制,确保我们总是有正确数量的 Pod 运行。在消费者方面,我们可以使用各种弹性模式,例如超时、重试或断路器,以保护微服务不受故障的影响。因此,我们的系统能够在负载和面对故障时及时处理请求:我们是Reactive!
任何系统使用了 cloud 中异步非阻塞http,提供负载平衡和一些复原特性的就是响应式了吗?是的,但别忘了付出的代价。Vert.x使用一个事件循环来处理高级别的并发性,并且线程最少,显示出云本机特性。当使用依赖线程池的方法时,需要1)调优线程池以找到正确的大小;2)处理代码中的并发性,这意味着调试死锁、竞赛条件和瓶颈;3)监视性能。云环境是基于虚拟化的,当您有很多线程时,线程调度可能成为一个主要问题。
有许多非阻塞技术,但并非所有这些技术都使用相同的执行模型来处理异步性质--我们可以将这些技术分为三类:
1.在后台使用线程池的方法然后您将面临调优、调度和并发挑战,将负担转移到操作。
2.使用另一个线程回调方法-您仍然需要管理代码的线程安全,同时避免死锁和瓶颈。
3.使用相同线程的方法,如Vert.x--您使用少量线程,并从调试死锁中解。
我们是否可以使用 cloud 中的消息传递系统来实现 reacvtive microservice系统?当然了!。我们可以使用在事件总线来构建我们在OpenShift中的 reacvtive microservice。但是它不会显示由OpenShift提供的服务虚拟地址和负载平衡,因为它将由Vert.x本身处理。在这里,我们决定使用http,设计的实现有很多种可能,用你想要的方式塑造你的系统!
Summary
在本章中,我们在OpenShift中部署了微服务,并了解了Vert.x和OpenShift特性是如何结合起来构建reacvtive microservice。将异步HTTP服务器和客户端、OpenShift服务、负载平衡、故障转移和消费者端弹性结合在一起,使我们具备了 reacvtive system 的特点。
本报告侧重于reactive。然而,当构建一个 microservice 时,需要管理许多其他问题,如安全性、配置、日志记录等。大多数云平台,包括OpenShift,都提供服务来处理这些问题。
如果您想了解更多关于这些主题的信息,请查看以下资源:
·OpenShift网站。
·OpenShift核心概念。
·Kubernetes网站。
·OpenShift health check
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什么讨论的内容,可以加我微信公众号: