谈到企业应用,就得谈分布式、低耦合、模块化、面向服务、可扩展性等等。早些时候的技术有CORBA和EJB,后面兴起的有WebService和MDB。但是这些技术不是学习、开发门槛高就是不那么轻量化。我现在已经想不起10年前去面试时,别人问我的任何关于EJB (EJB2)的问题,可见它对于初学者来说有多少让人困惑。至于CORBA,就更不用说了,直到后来写研究生论文我才查了查关于它的资料,到现在已经全都记不起来了。随着Web技术的进步和移动应用的大量需求的出现,人们更倾向于轻量化、易部署的基于HTTP的RESTful服务,这种服务不是传统意义的WebService,而是单传的HTTP请求和相应,相应的形式主要是结构化的文档,如XML和JSON,后者尤甚。这种HTTP服务脱离了特定的技术框架,具有良好的兼容性,无论是BS结构还是CS结构,无论是PC上还是在移动客户端上,都可以享受这种技术带来的便利性。

  恰逢其时,Node.js的出现将这种技术潮流推到了顶峰,人们一方面可以在google的光环下进行一种全新技术手段、架构的尝试,因为node.js采用的是google的javascript v8引擎,google在浏览器短的所向披靡和良好口碑给了那些技术选型人或者架构这最好的信心或借口,而不用劳神费力去说服上司或大小别人的顾虑;另一方面,JavaScript技术在BS体系中大行其道为其在服务端的应用提供了良好的土壤,人们不必像写传统的Java服务端程序一样需要规规矩矩的定义接口和类,创建对象,而是更多地享受这种语言的随意性带来的好处。当然,我在这里并不是说在JavaScript里我们并不需要良好的设计,相反,充分利用JavaScript语言的各种特性进行良好的分离、封装更能体现这门语言的强大,这在各种客户端JavaScript框架中已经得到了验证。另外不得不提的是,JavaScript在服务端的发展与MongoDB这类伴随互联网兴起的NoSQL数据库是分不开的,毕竟它省去了不少人对使用JavaScript进行持久化的烦恼。

  这边厢人们争相恐后地向JavaScript靠拢,抛弃各种应用服务器,纷纷采用node.js,更有LinkedIn的成功案例在前。Java社区的焦虑和迫切可想而知,前途和方向的不确定性在开发者中蔓延开来。要知道Java社区从来不是一个自甘寂寞的群体,凭借着其强大的基础以及各个领域的深耕细作,提供一种类似甚至超越node.js的解决方案近在咫尺。就在大家彷徨和疑惑之际,VERT.X横空出世了,一举夺得Jax 2014最佳Java创新大奖。VERT.X以Netty NIO为基础,实现了在JVM中的事件回调机制。对于传统的Java程序员来讲,这虽然意味着编程方式的变化,但是为他们面向事件编程,基于线程的多任务并行处理提供了很好的编程模型,避免陷入多线程的数据同步的陷阱。同时,得益于VERT.X的模块化、集群部署和HA,分离已有系统和新构建的HTTP服务模块,它充分发挥了Java构建服务端的优势,比如采用spring框架传统的业务层和持久层。要知道,Java资源的丰富是JavaScript所远远不能比拟的。而且,VERT.X通过Rihon JavaScript (VERT.X 2.x)等引擎,已经允许人们根据业务场景选择适用的语言编写程序。一言以蔽之,VERT.X一举打通了HTTP服务提供层通向浩瀚的Java资源海洋的道路。但就JavaScript来讲,JDK8对它的实现足以给我们一种信心,那就是Oracle官方的支持,足以让VERT.X与node.js在使用JavaScript构建服务上相抗衡。不可否认,node.js已经具有相当的规模,但VERT.X凭借其与Java的天然优势足以弥补JavaScript类库不足的短板。要知道,今天很多系统都是基于Java创建的,断然抛弃现有的Java系统,采用JavaScript在node.js上重新开发对企业来讲实在不算一笔额算的买卖。

  总而言之,采用VERT.X既能保证对既有资源的合理利用,又能实现满足不同客户端需求的HTTP服务的快速开发,对企业来讲,不可谓不是一种两全其美的方法。在后面我将会阐述我对使用VERT.X构建企业应用的架构和设计。

使用VERT.X构建分布式企业级应用的更多相关文章

  1. 利用Vert.x构建简单的API 服务、分布式服务

    目前已经使用Vertx已经一年多了,虽然没有太多的造诣,但也已在项目中推广了下:从最初的vertx搭建web服务,到项目上线运营,还算比较稳定.再到后来尝试搭建基于vertx的分布式服务,一路下来也积 ...

  2. 使用Vert.x构建Web服务器和消息系统

    如果你对Node.js感兴趣,Vert.x可能是你的下一个大事件:一个建立在JVM上一个类似的架构企业制度. 这一部分介绍Vert.x是通过两个动手的例子(基于Vert.x 2.0). 当Node.j ...

  3. Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇

    目前业界流行的分布式消息队列系统(或者可以叫做消息中间件)种类繁多,比如,基于Erlang的RabbitMQ.基于Java的ActiveMQ/Apache Kafka.基于C/C++的ZeroMQ等等 ...

  4. Netty构建分布式消息队列实现原理浅析

    在本人的上一篇博客文章:Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇 中,重点向大家介绍了AvatarMQ主要构成模块以及目前存在的优缺点.最后以一个生产者.消费者传递消息的例子, ...

  5. 基于Dubbo框架构建分布式服务(一)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  6. 基于Dubbo框架构建分布式服务

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  7. Redis构建分布式锁

    1.前言 为什么要构建锁呢?因为构建合适的锁可以在高并发下能够保持数据的一致性,即客户端在执行连贯的命令时上锁的数据不会被别的客户端的更改而发生错误.同时还能够保证命令执行的成功率. 看到这里你不禁要 ...

  8. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  9. [转载] 基于Dubbo框架构建分布式服务

    转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务 ...

随机推荐

  1. 50道经典的JAVA编程题(31-35)

    50道经典的JAVA编程题(31-35),今天考完了java,在前篇博客里面贴出了题了,见:<今天考试的JAVA编程题>.考完了也轻松了,下个星期一还考微机原理呢,啥都不会,估计今天就做到 ...

  2. 【HBase学习】Apache HBase 参考手册 中文版

    正在撰写,稍后来访……

  3. HDU-4639 Hehe 简单DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4639 简单递推题,呵呵,不多说... //STATUS:C++_AC_15MS_272KB #incl ...

  4. 【C语言】-条件语句-switch语句

    switch语句: 用于直接处理不同情况下的多路问题. switch语句又可称为开关语句,其执行流程和多分支if语句类似. switch (表达式) { case 常量表达式1:语句组1;break; ...

  5. CP2102模块介绍(USB转uart)

    1.主芯片为CP2102,安装驱动后生成虚拟串口2.USB取电,引出接口包括3.3V(<40mA),5V,GND,TX,RX,信号脚电平为3.3V,正逻辑3.板载状态指示灯.收发指示灯,正确安装 ...

  6. hdoj 2122 Ice_cream’s world III

    并查集+最小生成树 Ice_cream’s world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  7. js基础知识总结(全)

    1.js版HelloWorld <script type="text/javascript"> alert("HelloWorld"); </ ...

  8. vs开发工具使用问题

    1.快捷键失效:(如:VS中CTRL+E,CTRL+D自动缩进功能不能使用) 通过设置“工具”-“选项”-“环境”-“键盘”-“应用以下其他键盘映射方案”中,选择"Visual C# 200 ...

  9. android四大功能组件概要总结

    1.activity  某一个activity对应于app中的一个具体的页面.而intent是具些activity都具有的同类型操作的抽象,比如Main View Edit PICK 已及所对应的数据 ...

  10. pyinstaller打包第一个wxPython程序HelloWorld

    pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...