Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
浅说Vert.x
胡键(@foxgem)
我是谁
 入行时间
 10+年
 社区身份
 GroovyQ(www.groovyq.net)站长
 西安社区组织者(OpenParty、QClub西安)
 个人兴趣
 广泛……,目前专注于vertx
 联系方式
 Twitt...
什么是Vert.x?
 文艺范儿的官方定义
 Vert.x is a
lightweight, high
performance
application platform
for the JVM that's
designed for
mo...
典型的应用场景
 vertx缺省支持
 Socket Server
 Http Server
 WebSocket
 SockJS
 典型应用
 解析实时数据帧的通信
服务器
 Web服务器
 向前端屏蔽后端数据源
位置的数据...
Vert.x的若干关键词
简
单
//典型的Socket Server结构
vertx.createNetServer()
.connectHandler{ socket ->
socket.dataHandler { buffer ->
…
...
Vert.x的若干关键词
多
语
言
 直接支持的语言
 Java
 JavaScript
 Ruby
 Python
 Groovy
 为新语言的支持提供
了语言接口
Vert.x的若干关键词
异
步
 非阻塞
 建立于Netty之上
 类Actor编程范式
 事件
 事件处理器
 事件循环
 事件总线
 支持本地/分布式
 publish,发布/订阅
 send,点对点
Vert.x的若干关键词
 事件总线简单示例
 发送端
 接收端
eb = vertx.eventBus
…
eb.publish('out.client', repository.findAllClients())
eb.registe...
Vert.x的若干关键词
WebSocket
 开箱即用的
WebSocket支持
 支持SockJS
 考虑到WebSocket的
兼容性问题,推荐以
SockJS为替代
 支持EventBus
Bridge
Vert.x的若干关键词
集
群
 基于Hazelcast
 命令
 vertx run xxx -cluster
 注意:若集群起在同一机器上
时,另一个集群实例的启动需要
使用:-cluster-port
 vertx run x...
Vert.x的若干关键词
模
块
 运行单元:verticle
 vertx run verticle
 复用单元:模块(Module)
 Vert.x的插件系统
 模块亦可单独运行
 vertx runmod mod
 二者均支...
Vert.x应用的开发
1. 建立工程
 Vertx应用即普通的Java工程
apply plugin: 'groovy'
vertxHome = '...'
repositories {
flatDir dirs: "${vertxHome...
Vert.x应用的开发
2. 编写Verticle(以groovy为例)
 Verticle的依赖类为普通Java类
import org.vertx.groovy.core.buffer.Buffer
vertx.createNetClie...
Vert.x应用的开发
3. 编译工程
4. 运行
 小技巧
 可使用-instances参数指定同时运行的Verticle
的实例数,最大化利用CPU核数
 Vertx提供了gradle工程的应用模板
 https://github....
开发经验
 同步 -> 异步
 分而治之,充分利用Verticle
 事件总线很方便,设计事件体系是关键
 尤其是事件地址,专项专用
 利用动态部署实现功能的动态增减
 永远不要阻塞事件循环,IO操作转移到Worker
Vertic...
参考资料
 官方站点:http://vertx.io/
 Google vertx + 问题相关关键字
Upcoming SlideShare
Loading in …5
×

浅说Vertx

1,887 views

Published on

Published in: Technology
  • Be the first to comment

浅说Vertx

  1. 1. 浅说Vert.x 胡键(@foxgem)
  2. 2. 我是谁  入行时间  10+年  社区身份  GroovyQ(www.groovyq.net)站长  西安社区组织者(OpenParty、QClub西安)  个人兴趣  广泛……,目前专注于vertx  联系方式  Twitter/微博:@foxgem  邮箱:jianhgreat@hotmail.com
  3. 3. 什么是Vert.x?  文艺范儿的官方定义  Vert.x is a lightweight, high performance application platform for the JVM that's designed for modern mobile, web, and enterprise applications.  胡氏简化版  Node.js on JVM
  4. 4. 典型的应用场景  vertx缺省支持  Socket Server  Http Server  WebSocket  SockJS  典型应用  解析实时数据帧的通信 服务器  Web服务器  向前端屏蔽后端数据源 位置的数据服务器  分布式消息处理器  ……
  5. 5. Vert.x的若干关键词 简 单 //典型的Socket Server结构 vertx.createNetServer() .connectHandler{ socket -> socket.dataHandler { buffer -> … } socket.closedHandler { … } socket.exceptionHandler { … } }.listen(1234)
  6. 6. Vert.x的若干关键词 多 语 言  直接支持的语言  Java  JavaScript  Ruby  Python  Groovy  为新语言的支持提供 了语言接口
  7. 7. Vert.x的若干关键词 异 步  非阻塞  建立于Netty之上  类Actor编程范式  事件  事件处理器  事件循环  事件总线  支持本地/分布式  publish,发布/订阅  send,点对点
  8. 8. Vert.x的若干关键词  事件总线简单示例  发送端  接收端 eb = vertx.eventBus … eb.publish('out.client', repository.findAllClients()) eb.registerHandler('out.client', function(message) { that.total(message.total); that.clients.removeAll(); for (var i = 0; i < message.total; i++) { that.clients.push(message.clients[i]); }; });
  9. 9. Vert.x的若干关键词 WebSocket  开箱即用的 WebSocket支持  支持SockJS  考虑到WebSocket的 兼容性问题,推荐以 SockJS为替代  支持EventBus Bridge
  10. 10. Vert.x的若干关键词 集 群  基于Hazelcast  命令  vertx run xxx -cluster  注意:若集群起在同一机器上 时,另一个集群实例的启动需要 使用:-cluster-port  vertx run xxx -cluster -cluster- port 25501
  11. 11. Vert.x的若干关键词 模 块  运行单元:verticle  vertx run verticle  复用单元:模块(Module)  Vert.x的插件系统  模块亦可单独运行  vertx runmod mod  二者均支持动态部署  deployVerticle/undeployVerticle  deployModule/undeployModule
  12. 12. Vert.x应用的开发 1. 建立工程  Vertx应用即普通的Java工程 apply plugin: 'groovy' vertxHome = '...' repositories { flatDir dirs: "${vertxHome}/lib" } dependencies { groovy localGroovy() compile gradleApi() compile fileTree(dir: "${vertxHome}/lib", includes: ['*.jar']) runtime fileTree(dir: "${vertxHome}/lib", includes: ['*.jar']) runtime files("${vertxHome}/conf") }
  13. 13. Vert.x应用的开发 2. 编写Verticle(以groovy为例)  Verticle的依赖类为普通Java类 import org.vertx.groovy.core.buffer.Buffer vertx.createNetClient().connect(1234, "localhost") { socket -> socket.dataHandler { buffer -> ... } socket.closedHandler { ... } ... }
  14. 14. Vert.x应用的开发 3. 编译工程 4. 运行  小技巧  可使用-instances参数指定同时运行的Verticle 的实例数,最大化利用CPU核数  Vertx提供了gradle工程的应用模板  https://github.com/vert-x/vertx-gradle- template gradle build vertx run Server.groovy -cp ./build/libs/*.jar
  15. 15. 开发经验  同步 -> 异步  分而治之,充分利用Verticle  事件总线很方便,设计事件体系是关键  尤其是事件地址,专项专用  利用动态部署实现功能的动态增减  永远不要阻塞事件循环,IO操作转移到Worker Verticle  例子1:  普通Verticle -> 事件总线 -> Worker Verticle -> DB Server  例子2  利用Worker Verticle实现连接池,在上例中部署多个worker verticle实例即可,每个Worker中保持与DB的连接
  16. 16. 参考资料  官方站点:http://vertx.io/  Google vertx + 问题相关关键字

×