使用VERT.X构建分布式企业级应用
谈到企业应用,就得谈分布式、低耦合、模块化、面向服务、可扩展性等等。早些时候的技术有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构建分布式企业级应用的更多相关文章
- 利用Vert.x构建简单的API 服务、分布式服务
目前已经使用Vertx已经一年多了,虽然没有太多的造诣,但也已在项目中推广了下:从最初的vertx搭建web服务,到项目上线运营,还算比较稳定.再到后来尝试搭建基于vertx的分布式服务,一路下来也积 ...
- 使用Vert.x构建Web服务器和消息系统
如果你对Node.js感兴趣,Vert.x可能是你的下一个大事件:一个建立在JVM上一个类似的架构企业制度. 这一部分介绍Vert.x是通过两个动手的例子(基于Vert.x 2.0). 当Node.j ...
- Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇
目前业界流行的分布式消息队列系统(或者可以叫做消息中间件)种类繁多,比如,基于Erlang的RabbitMQ.基于Java的ActiveMQ/Apache Kafka.基于C/C++的ZeroMQ等等 ...
- Netty构建分布式消息队列实现原理浅析
在本人的上一篇博客文章:Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇 中,重点向大家介绍了AvatarMQ主要构成模块以及目前存在的优缺点.最后以一个生产者.消费者传递消息的例子, ...
- 基于Dubbo框架构建分布式服务(一)
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- 基于Dubbo框架构建分布式服务
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- Redis构建分布式锁
1.前言 为什么要构建锁呢?因为构建合适的锁可以在高并发下能够保持数据的一致性,即客户端在执行连贯的命令时上锁的数据不会被别的客户端的更改而发生错误.同时还能够保证命令执行的成功率. 看到这里你不禁要 ...
- selenium结合docker构建分布式测试环境
selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...
- [转载] 基于Dubbo框架构建分布式服务
转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务 ...
随机推荐
- Extjs4 页数重置
重新加载数据store.loadPage(1);就是到第一页了
- 【tyvj1952】easy
AK大神又AK了!!! orzorzorz 题意: 给出一个字符串由'x'.'o'.'?' '?'有一半的几率为'x' 一半几率为'o' 得分为所有连续的'o'的个数的平方和 如ooxooo 得分为2 ...
- HDU-4627 The Unsolvable Problem 简单数学
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4627 对n除个2,然后考虑下奇偶... //STATUS:C++_AC_15MS_228KB #inc ...
- Memcached使用笔记
1.linux启动memcached命令 进入到memcached安装目录,可以用whereis memcached查看,默认安装在/usr/bin/目录下 输入以下命令,下面两行任选一行就可以了 m ...
- 第十三章、学习 Shell Scripts
什么是 Shell scripts shell script (程序化脚本) :shell script 是针对 shell 所写的『脚本!』 shell script 是利用 shell 的功能所写 ...
- Struts2 + Spring + Hibernate 通用 Service 和 DAO
我在 Struts2 + Spring + Hibernate 项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...
- 【STL学习】智能指针之shared_ptr
前面已经学习过auto_ptr,这里补充另外一种智能指针,比auto_ptr要更强力更通用的shared_ptr. shared_ptr 简介及使用选择 几乎所有的程序都需要某种形式的引用计数智能指 ...
- Centos中安装vim
Centos, 默认没有安装VIM, 所以要当然要安装了, 直接yum install vim是不行的, 首先: yum install vim* 会看到vim-enhanced这个包,没错, 我们要 ...
- Android系统Google Maps开发实例浅析
Google Map(谷歌地图)是Google公司提供的电子地图服务.包括了三种视图:矢量地图.卫星图片.地形地图.对于Android系统来说,可以利用Google提供的地图服务来开发自己的一些应用. ...
- 基于新浪sae使用php生成图片发布图文微博
1.生成图片的代码: <?php header ("Content-type: image/png"); mb_internal_encoding("UTF-8&q ...