Vert.x Java开发指南——第十二章 结束

第十二章 结束

版权声明:本文为博主自主翻译,转载请标明出处。 https://blog.csdn.net/elinespace/article/details/807815261
这是本指南的最后一部分,让我们花点时间来概括一下前面几章中的重要收获,然后再给出更多有用的资源。

12.1 概述

我们通过使用Vert.x构建一个Wiki web应用作为开始。首次迭代是典型的“快速但令人不快的快速原型”,它展示了我们使用Web模板的服务端渲染以及使用关系数据库持久化,可以快速且轻易构建应用程序。
下一步,展示了如何通过连续的重构提升设计:首先分离每个技术关注点为独立的Verticle,然后干净的为API提取Vert.x服务,最后为异步代码引入JUnit测试。

然后我们大胆的通过Web客户端API来使用第三方HTTP/JSON服务,它进一步简化了来自Vert.x core的HTTP客户端的使用方法。反过来,我们还看到了如何使用优雅的Vert.x Web模块公开HTTP/JSON Web API。

从那里可以很容易扩展这种方法来构建API网关,为许多服务提供外观。如果你要构建这样的网关,我们建议你利用:

  1. Vert.x RxJava支持来描述服务消费数据流。
  2. Vert.x断路器模块来一致的处理潜在的服务故障。

访问控制、认证和安全常常被忽略或后来居上。我们看到Vert.x提供了一种简单的可插拔的认证机制来利用数据库、文件或者LDAP目录。SSL网络加密非常容易为服务器或客户端设置使用。最后,Vert.x支持JWT令牌,一个用于Web API的非常有用的去中心化的认证方案。

Vert.x核心API依赖回调,它是处理异步事件最通用的方式。Vert.x提供了一套简单的Promise/Future API。由于Vert.x的Future是可组合的,它们应限于有限的用法,如处理Verticle部署和初始化。我们还看到Vert.x如何支持RxJava,我们鼓励你在自己的Verticle中使用它。更重要的是,RxJava是JVM上最流行的响应式编程库,因此在你的端到端响应式应用程序中,你将很容易找到第三方库不断的集成。

现代Web应用倾向于服务器只公开HTTP/JSON API,用户界面依靠客户端Web框架。我们看到如何使用AngularJS实现它,以便将我们的Wiki转为单页应用。

最后,我们看到扩展应用程序的事件总线以允许Web应用使用SockJS桥接从浏览器发送和接收事件是多么的优雅。虽然最初看起来像是一个小的特征,但实际上它大大简化了实时Web应用特征的开发。SockJS桥接实际上在使用HTTP端点的场景下也是有用的:发送一个消息然后通过事件总线获得一个响应有时候可能比使用HTTP调用实现它要更简单,这种情况下使服务器处理HTTP请求,将其转发到事件总线上的Verticle,并最终通过编码JSON响应终止HTTP交换。

12.2 更进一步

Vert.x网站当然是Vert.x一切的权威。

有许多的特征和模块我们在这份指南中未覆盖到,如:

  1. 使用Hazelcast、Infinispan、Apache Ignite或者Apache Zookeeper的集群
  2. 对于其它支持的语言,代码看起来如何
  3. 通过HTTP/2公开和消费,可能(但不是必须)使用gRPC
  4. 使用NoSQL数据库,如MongoDB或者Redis
  5. 通过SMTP发送邮件
  6. 使用AMQP、Stomp、Kafka、MQTT或者RabbitMQ进行消息处理
  7. 使用来自定制的受欢迎提供商的OAuth2认证。
  8. Vert.x sync用于编写阻塞风格的代码,接下来在运行时转为fibers非阻塞代码
  9. 在注册处发布和发现微服务,例如在云环境如OpenShift部署时。
  10. 公开度量和健康检查。

这个列表并非详尽无遗:Vert.x是一个工具,因此是你决定了你的项目需要哪些,大还是小。

你还可以发现,浏览Vert.x awesome社区项目列表是有用的,尽管它超出了项目所支持的范围。

如果你正在开发微服务,我们建议阅读 Clément Escoffier编写的”Building Reactive Microservices in Java“一书.

12.3 这是所有,伙计们!

我们希望你能喜欢阅读这份指南,并且它在你使用Vert.x进行异步编程的旅程中是有用的。

你可以自由的与作者联系,直接通过邮件或者通过Vert.x项目的用户组。当然,我们也感谢赞扬,但是我们同样感激任何可以提升这些内容的建设性反馈。

非常感谢你!

猜你喜欢

转载自blog.csdn.net/elinespace/article/details/80781526