Vertx中有三类verticle

1,Standard verticles:标准Verticles

1,Standard Verticle会被分派到一个event loop线程上,
2,该Standard Verticle里面注册的所有回调handler都会被这个event loop线程来调用

也就是说,Standard verticle从属于一个event loop线程,无论有多少请求处理,都只会被 这个event loop线程来处理。
假设Standard verticle中有一个处理handler,需要处理每秒1000个请求,由于只有一个event loop线程可以用,所以这个处理handler必须要在1/1000秒内处理一个请求才能达到要求。当请求量远远多于1000时,就会造成event loop线程的堵塞,导致异常发生。

写法:

Verticle myVerticle = new MyVerticle();
vertx.deployVerticle(myVerticle);

2,Worker verticles:工作Verticles

1,Worker Verticle会被(worker thread pool)线程池中的一个线程来执行,只限于执行,执行之后,Worker Verticle不会从属于这个worker thread
2,该Worker Verticle里面注册的回调handler有可能会被(worker thread pool)线程池中的任意一个空闲的线程执行
3,Worker Verticle的实例在一个时间点只会被一个线程来执行,不会在同一个时间有两个线程同时执行一个Worker Verticle实例

也就是说,和Standard verticle相比:
1,Worker verticles不会阻塞event loop线程
2,因为同一个时间点,也只有一个实例会被运行,所以也不会增加并发的吞吐量

适用场景:
1,比如说一个回调handler需要3/1000秒来处理,每秒有1000个并发请求,如果适用Standard verticle的话,就会造成event loop线程的阻塞(默认阻塞时间为2s)。这种场景就需要适用Worker verticles来处理了。
2,本身回调handler就需要很长时间的处理,比如复杂算法,存取DB大量数据,以及耗时的IO操作。

写法:

DeploymentOptions options = new DeploymentOptions().setWorker(true);
vertx.deployVerticle(new MyVerticle(), options);

3,Multi-threaded worker verticles:多线程-工作Verticles

和普通的Worker verticles相比,唯一的区别在于,Multi-threaded worker verticles会在同一个时间点,有多个线程同时执行一个Worker Verticle实例

所以说,必须要求Verticle实例要考虑线程安全,属于高危写法,不建议适用

Vertx中的verticle详解相关推荐

  1. ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

    前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...

  2. Asp.net中GridView使用详解(引)【转】

    Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList ...

  3. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

  4. ArcGIS Engine中的Symbols详解

    转自原文 ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式 ...

  5. js路由在php上面使用,React中路由使用详解

    这次给大家带来React中路由使用详解,React中路由使用的注意事项有哪些,下面就是实战案例,一起来看一下. 路由 通过 URL 映射到对应的功能实现,React 的路由使用要先引入 react-r ...

  6. Linux中etc目录详解

    Linux中etc目录详解 /etc目录 包含很多文件.许多网络配置文件也在/etc 中. /etc/rc   or/etc/rc.d   or/etc/rc*.d   启动.或改变运行级时运行的sc ...

  7. java 自定义正则表达式_java中正则表达式实例详解

    Java中正则表达式运用实例(参看java中正则表达式运用详解): 测试代码 package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * ...

  8. numpy中reshape方法详解

    numpy中reshape方法详解_zhanggonglalala的博客-CSDN博客_reshape

  9. JavaScript中getBoundingClientRect()方法详解

    JavaScript中getBoundingClientRect()方法详解 getBoundingClientRect() 这个方法返回一个矩形对象,包含四个属性:left.top.right和bo ...

最新文章

  1. 如何扩展Dojo tree成chekbox tree
  2. Java ResultSet如何检查是否有任何结果
  3. mysql知识测试_MySQL基础知识测试
  4. C语言高级编程:指针和数组
  5. 使用JXL组件操作Excel和导出文件
  6. 第四节:框架前期准备篇之进程外Session的两种配置方式
  7. C语言,画吃豆人剖析
  8. java 正则首位8或者9的8位数字_正则简单手机号和邮箱练习
  9. 彻底搞定C指针---指向指针的指针(转)
  10. 对策略模式与状态模式的一点思考
  11. 银行使用计算机实现个人存款,电脑基础 第2章 真题整理1.doc
  12. 实现简单的Java内存缓存
  13. PHP批量去除PHP文件中bom的代码
  14. 各种操作系统中密码文件的位置
  15. 自动化、信息化、数字化、智能化,四化解析
  16. Java链表入门(超详细)
  17. 金山打字专业文章计算机,打字测试-金山打字2003打字测试有哪些文章?金山打字2003打字测试有哪 爱问知识人...
  18. 证件照(1寸2寸)拍摄处理知识汇总
  19. 51单片机|keilc51|模块函数|延时函数、独立键盘函数
  20. 手把手教你虚拟机安装(VMware)、Linux操作系统安装

热门文章

  1. 安卓强制横屏的坑!正确设置横屏的姿势!
  2. mysql怎么输出列表的次序_MySQL metalock的一些技巧(写大于读的案例,以及获得锁的顺序)...
  3. 什么是mes?它的功能有哪些?
  4. 关闭LOL等电脑进程小程序
  5. MySQL 解压版下载安装
  6. 西门子冗余服务器 系统拷贝,西门子(SIEMENS)冗余系统指南.pdf
  7. 多级CIC滤波器的matlab仿真
  8. 一步步教你创建自己的数字货币(代币)进行ICO
  9. bitcoinj生成中文助记词
  10. 【Algorithms公开课学习笔记3】 栈与队列