What is Vert.x


两年前在公司开始负责一个底层api的项目。包含功能很简单,对接底层系统进行封装,提供一些功能实现的封装,对外提供http restful接口。主要要求是支持高并发和高稳定性。最开始的选型是用一些轻量级的http server框架。然后集成spring、mybatis等传统框架实现,后来了解了一个叫做Vert.x的nio框架。进行尝试并且经过了漫长的适应期之后。本喵只有一句话。Vert.x即是正义!

What(is Vert.x)

Eclipse Vert.x is a tool-kit for building reactive applications on the JVM.1

Who(to use Vert.x)

Vert.x是一个相对比较新技术。主要的资料来源还是Vert.x的官网。国内陆续也有大量的Vert.x用户。各个社交平台也有一些交流群等。
本喵学习使用Vert.x框架满打满算差不多13个月左右,目前使用Vert.x搭建一个相对稳定的框架投入生产使用。目前还有大量的问题。做这网站的目的,主要是整理一下学习Vert.x的过程,再次详细分析一下Vert.x以及具体的使用方法。达到对Vert.x更加深入的了解。主要以自己搭建的单个项目的框架展开。能力一般水平有限。一边分析,一边改进,希望看到这篇文章的大家能多多提出建议。
本喵在学习Vert.x的过程中,对于无力问题的解决方案主要来源于几个地方:

  1. Vert.x 官网。
  2. Vert.x 粉丝群。
  3. Google

Why(to use Vert.x)

Vert.x是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。基于netty的nio全异步架构,Vert.x能够非常简单提供高并发,高扩展性的服务架构。
Vert.x的优点:

  • 同时支持多种编程语言
    目前已经支持了Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon等。对程序员来说,直接好处就是可以使用各种语言丰富的LIB,同时也不再为编程语言选型而纠结
  • 异步无锁编程
    Vert.x提供了十分友好的异步无锁编程,在实际编码过程中使用由框架提供的各种异步实现方便快捷。比如查询数据库
    jdbcClient.query("select * from user", result -> {
        if (result.succeeded()) {
            ResultSet result = result.result();
            //.......
        } else {
            logger.error("select error:" + result.cause().getMessage());
            //......
        }
    });
  • 对于各种IO的异步支持
    目前Vert.x的异步模型已支持TCP、UDP、FileSystem、DNS、EventBus、Sockjs等;
  • 非常方便的分布式支持
    基于EventBus事件总线的消息机制,每个模块都是一个绝对独立的项目。轻松编写出分布式解藕应用。
  • 生态圈日益丰富
    本喵使用最初接触Vert.x较晚,截止这遍博客,Vert.x已发布3.5正式版。Vert.x已经有了相对非常完善的基于异步驱动的Data access(Postgres、MySQL、MongoDB、Redis)、Microservices、MQTT、Authentication等模块。

接下来本喵主要会列举一下本喵在项目中实际的用法和遇到的一些问题。更多的资料还是推荐大家查看官方文档和源码分析。(部分更新内容文档描述可能不太实时,所以当时踩了无数的喵爪坑)。


文章作者: 鱍鱍
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 鱍鱍 !
 上一篇
Vertx的Hello World! Vertx的Hello World!
由于Vert.x目前“火爆”的人气,使用各种搜索引擎都能找到大量的社区网站、博客来介绍vertx各种概念。这里就不再啰嗦了。本喵从今天开始,使用实际的代码来展示实际工作中可能会遇到的一些问题。以及解决方案。如果你有在使用Vert.x,并且遇
下一篇 
通过java使用ffmpeg录制rtmp视频流,文件无法读取 通过java使用ffmpeg录制rtmp视频流,文件无法读取
前段时间项目有一个录制rtmp流生成文件的需求,使用ffmpeg软件录制输出本地文件,再使用ffprobe读取视频文件信息保存到数据库。当时遇到一个问题,部分文件录制完后,数据库中没有保存文件信息。
  目录