SlideShare ist ein Scribd-Unternehmen logo
1 von 16
浅说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 + 问题相关关键字

Weitere ähnliche Inhalte

Ähnlich wie 浅说Vertx

GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍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
 
Kiss开发平台简介
Kiss开发平台简介Kiss开发平台简介
Kiss开发平台简介cecepig
 
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundryHong Cai
 
Web development overview
Web development overviewWeb development overview
Web development overviewWei 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 FundamentalsChieh Lin
 
实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来RolfZhang
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTarget 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.3faliamm
 
移动互联网时代的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 FrameworkFred Chien
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式Timothy Chen
 

Ähnlich wie 浅说Vertx (20)

GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
Kiss开发平台简介
Kiss开发平台简介Kiss开发平台简介
Kiss开发平台简介
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry51 cto下载 51cto信息图:openshift vs cloudfoundry
51 cto下载 51cto信息图:openshift vs cloudfoundry
 
Web development overview
Web development overviewWeb development overview
Web development overview
 
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
 
实时Web的前世今生未来
实时Web的前世今生未来实时Web的前世今生未来
实时Web的前世今生未来
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
Html5
Html5Html5
Html5
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
 
云计算与开源 刘黎明 世纪互联
云计算与开源  刘黎明  世纪互联云计算与开源  刘黎明  世纪互联
云计算与开源 刘黎明 世纪互联
 
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
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
 
聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”聊聊一些体验过的“云服务”
聊聊一些体验过的“云服务”
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式0509 Windows Serevr 2008 新世代網路應用程式
0509 Windows Serevr 2008 新世代網路應用程式
 

Mehr von foxgem

Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developersfoxgem
 
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 Programmerfoxgem
 
OpenParty西安:DSL in Groovy
OpenParty西安:DSL in GroovyOpenParty西安:DSL in Groovy
OpenParty西安:DSL in Groovyfoxgem
 
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
 

Mehr von foxgem (9)

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

浅说Vertx