服务扩展

本章我们讨论扩展IM服务。编程语言选用Java 1.8+,使用Vert.x框架。

选型考量:

  1. Vert.x 可以很好的开发出高并发服务器。
  2. Vert.x 强大的Event Bus机制允许在浏览器中运行的客户端JavaScript在上相互通信

Vert.x简介

Vert.x 是一个用于下一代异步、可伸缩、并发应用的框架,旨在为 JVM 提供一个 Node.js 的替代方案。开发者可以通过它使用 JavaScript、Ruby、Groovy、Java、甚至是混合语言来编写应用。

Vert.x 是一套异步编程框架,是事件驱动的,其处理请求的高性能也是基于其事件机制。Vert.x 结合了异步编程在高并发领域的优势和现代JVM优良的计算性能,在工业级高并发处理领域有卓越优势。Vert.x可以更自然更高效的利用多核CPU资源。

从工程协作角度考虑,我们使用Java做为首选语言,Groovy做一些灵活的功能开发。

Handler和Verticle是Vert.x 的核心概念。Verticle内部的线程安全机制是Vert.x 的设计精髓。Verticle对象往往包含有一个或者多个处理器(Handler)。Vert.x提供基础Service接口和功能组件。开发人员在Handler中,借助这些接口和组件实现具体业务。

线程安全是Vert.x框架核心优势。通过Handler&Verticle双层结构,Vert.x 在不同的作用域保证数据安全操作。

变量作用域 数据操作
Handler内 atomic/原子操作
Verticle内 thread safe/线程安全
Verticle之间 数据是immutable/不可改变的

Vert.x 架构

Verticle 是执行单元,在同一个Vertx实例中可以同时执行多个Verticle。Verticle在event-loop线程上执行,多个Vert.x instances可以在多个host上执行,各个Verticles 通过event bus通信。

注:

  1. 本文时间为2018年,下面对各种语言与其执行环境的讨论随时间不同有差异
  2. 使用JavaScript要注意JVM中是否整合v8引擎,v8引擎的性能优于其他JS引擎
  3. 现代JVM的性能和GC管理优于其他VM
  4. Groovy借鉴了Ruby的很多特性
  5. 国内Ruby技术圈较小众

results matching ""

    No results matching ""