使用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来构建分布式服务,并根据自己实际业务 ...
随机推荐
- Kotlin 学习
http://kotlinlang.cn/ 资料: https://segmentfault.com/a/1190000004494727 http://blog.csdn.net/u01413448 ...
- 50道经典的JAVA编程题 (1-5)
后天java考试,现在闲着也是闲着,来做做java题吧. 前不久在网上看见了50道java算法编程题,感觉还不错,记得大一学C语言的时候做过一些,现在用java来回顾下吧,也算应付考试吧. 代码要是有 ...
- 【VMware虚拟机】【克隆问题】在VMware 9.0下克隆CentOS6.5虚拟机无法识别eth网卡
[日期]2014年4月23日 [平台]windows 8 vmware workstation 9.0 centos 6.5 [日志]1)执行ifconfig命令,输出: 2)查看/etc/udev/ ...
- cache 的简单认识与思考
之前对NOSQL的总结是:基本功能是key-value, 然后各自附加特殊功能. 现在简单的来认识一下cache. 背景 大家都知道NoSQL, 大多数都是 key-value 型的数据库.有些内存型 ...
- MapReduce 开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- Android实例-OrientationSensor方向传感器(XE8+小米2)
相关资料: <修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题>:http://www.cnblogs.com/onechen/p/4497282. ...
- 转载MSDN 在ASP.NET 中执行 URL 重写
转载文章原网址 http://msdn.microsoft.com/zh-cn/library/ms972974.aspx 摘要:介绍如何使用 Microsoft ASP.NET 执行动态 URL 重 ...
- SQL Server重建索引计划
每周日2点进行”一致性检查“ 每周六1点进行”重建索引“,重建索引会自动完成更新统计信息操作
- Java Singleton 单例模式
大家可能还听过 Singleton 也就是单例模式 这个单例模式要求 在程序的运行时候 一个程序的某个类 只允许产生一个 实例 那么 这个类就是一个单例类 Java Singleton模式主要作 ...
- VPN介绍--虚拟网络
VPN属于远程访问技术,简单地说就是利用公网链路架设私有网络.例如 公司员工出差到外地,他想访问企 原理 业内网的 服务器资源,这种访问就属于远程访问.怎么才能让外地员工访问到内网资源呢?VPN的 ...