狠狠撸

狠狠撸Share a Scribd company logo
浅说Vert.x
胡键(@foxgem)
我是谁
? 入行时间
? 10+年
? 社区身份
? GroovyQ(www.groovyq.net)站长
? 西安社区组织者(OpenParty、QClub西安)
? 个人兴趣
? 广泛……,目前专注于vertx
? 联系方式
? Twitter/微博:@foxgem
? 邮箱:jianhgreat@hotmail.com
什么是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
典型的应用场景
? vertx缺省支持
? Socket Server
? Http Server
? WebSocket
? SockJS
? 典型应用
? 解析实时数据帧的通信
服务器
? Web服务器
? 向前端屏蔽后端数据源
位置的数据服务器
? 分布式消息处理器
? ……
Vert.x的若干关键词
简
单
//典型的Socket Server结构
vertx.createNetServer()
.connectHandler{ socket ->
socket.dataHandler { buffer ->
…
}
socket.closedHandler {
…
}
socket.exceptionHandler {
…
}
}.listen(1234)
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.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]);
};
});
Vert.x的若干关键词
WebSocket
? 开箱即用的
WebSocket支持
? 支持SockJS
? 考虑到WebSocket的
兼容性问题,推荐以
SockJS为替代
? 支持EventBus
Bridge
Vert.x的若干关键词
集
群
? 基于Hazelcast
? 命令
? vertx run xxx -cluster
? 注意:若集群起在同一机器上
时,另一个集群实例的启动需要
使用:-cluster-port
? vertx run xxx -cluster -cluster-
port 25501
Vert.x的若干关键词
模
块
? 运行单元:verticle
? vertx run verticle
? 复用单元:模块(Module)
? Vert.x的插件系统
? 模块亦可单独运行
? vertx runmod mod
? 二者均支持动态部署
? deployVerticle/undeployVerticle
? deployModule/undeployModule
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")
}
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 {
...
}
...
}
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
开发经验
? 同步 -> 异步
? 分而治之,充分利用Verticle
? 事件总线很方便,设计事件体系是关键
? 尤其是事件地址,专项专用
? 利用动态部署实现功能的动态增减
? 永远不要阻塞事件循环,IO操作转移到Worker
Verticle
? 例子1:
? 普通Verticle -> 事件总线 -> Worker Verticle -> DB Server
? 例子2
? 利用Worker Verticle实现连接池,在上例中部署多个worker
verticle实例即可,每个Worker中保持与DB的连接
参考资料
? 官方站点:http://vertx.io/
? Google vertx + 问题相关关键字

More Related Content

Similar to 浅说痴别谤迟虫 (20)

骋濒补蝉蝉贵颈蝉丑特性介绍
骋濒补蝉蝉贵颈蝉丑特性介绍骋濒补蝉蝉贵颈蝉丑特性介绍
骋濒补蝉蝉贵颈蝉丑特性介绍
Jim Jiang
?
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
yongboy
?
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
yongboy
?
碍颈蝉蝉开发平台介绍
碍颈蝉蝉开发平台介绍碍颈蝉蝉开发平台介绍
碍颈蝉蝉开发平台介绍
cecepig
?
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
legend900805
?
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
Hong Cai
?
Web development overview
Web development overviewWeb development overview
Web development overview
Wei Sun
?
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
?
实时奥别产的前世今生未来
实时奥别产的前世今生未来实时奥别产的前世今生未来
实时奥别产的前世今生未来
RolfZhang
?
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
leneli
?
Html5
Html5Html5
Html5
cazhfe
?
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
?
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联
Liming Liu
?
How to-start-your-own-website v1.3
How to-start-your-own-website v1.3How to-start-your-own-website v1.3
How to-start-your-own-website v1.3
faliamm
?
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
fangdeng
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”
popoer
?
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
?
高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式
Timothy Chen
?
骋濒补蝉蝉贵颈蝉丑特性介绍
骋濒补蝉蝉贵颈蝉丑特性介绍骋濒补蝉蝉贵颈蝉丑特性介绍
骋濒补蝉蝉贵颈蝉丑特性介绍
Jim Jiang
?
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
yongboy
?
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
yongboy
?
碍颈蝉蝉开发平台介绍
碍颈蝉蝉开发平台介绍碍颈蝉蝉开发平台介绍
碍颈蝉蝉开发平台介绍
cecepig
?
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
Hong Cai
?
Web development overview
Web development overviewWeb development overview
Web development overview
Wei Sun
?
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
?
实时奥别产的前世今生未来
实时奥别产的前世今生未来实时奥别产的前世今生未来
实时奥别产的前世今生未来
RolfZhang
?
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
leneli
?
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
?
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联
Liming Liu
?
How to-start-your-own-website v1.3
How to-start-your-own-website v1.3How to-start-your-own-website v1.3
How to-start-your-own-website v1.3
faliamm
?
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
fangdeng
?
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
Gelis Wu
?
聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”
popoer
?
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
?
高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式
Timothy Chen
?

More from foxgem (9)

Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
foxgem
?
Our Choice:电子书的新交互方式探讨
Our Choice:电子书的新交互方式探讨Our Choice:电子书的新交互方式探讨
Our Choice:电子书的新交互方式探讨
foxgem
?
移动开发的性能优化
移动开发的性能优化移动开发的性能优化
移动开发的性能优化
foxgem
?
持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术
foxgem
?
Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架
foxgem
?
Groovy for Java Programmer
Groovy for Java ProgrammerGroovy for Java Programmer
Groovy for Java Programmer
foxgem
?
OpenParty西安:DSL in Groovy
OpenParty西安:DSL in GroovyOpenParty西安:DSL in Groovy
OpenParty西安:DSL in Groovy
foxgem
?
OpenParty西安:What does DevOps mean?
OpenParty西安:What does DevOps mean?OpenParty西安:What does DevOps mean?
OpenParty西安:What does DevOps mean?
foxgem
?
OpenParty西安:How to be a good copycat?
OpenParty西安:How to be a good copycat?OpenParty西安:How to be a good copycat?
OpenParty西安:How to be a good copycat?
foxgem
?
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
foxgem
?
Our Choice:电子书的新交互方式探讨
Our Choice:电子书的新交互方式探讨Our Choice:电子书的新交互方式探讨
Our Choice:电子书的新交互方式探讨
foxgem
?
移动开发的性能优化
移动开发的性能优化移动开发的性能优化
移动开发的性能优化
foxgem
?
持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术
foxgem
?
Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架Grails:下一代Java Web开发框架
Grails:下一代Java Web开发框架
foxgem
?
Groovy for Java Programmer
Groovy for Java ProgrammerGroovy for Java Programmer
Groovy for Java Programmer
foxgem
?
OpenParty西安:DSL in Groovy
OpenParty西安:DSL in GroovyOpenParty西安:DSL in Groovy
OpenParty西安:DSL in Groovy
foxgem
?
OpenParty西安:What does DevOps mean?
OpenParty西安:What does DevOps mean?OpenParty西安:What does DevOps mean?
OpenParty西安:What does DevOps mean?
foxgem
?
OpenParty西安:How to be a good copycat?
OpenParty西安:How to be a good copycat?OpenParty西安:How to be a good copycat?
OpenParty西安:How to be a good copycat?
foxgem
?

浅说痴别谤迟虫