| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Vert.x Verticle简介、简单使用及相关用法 -> 正文阅读 |
|
[Java知识库]Vert.x Verticle简介、简单使用及相关用法 |
VerticleVert.x 通过开箱即用的方式提供了一个简单便捷的、可扩展的、类似 Actor Model 的部署和并发模型机制。我们可以用此模型机制来保管您自己的代码组件。 这个模型不能说是严格的 Actor 模式的实现,但它确实有相似之处,特别是在并发、扩展性和部署等方面。 要使用该模型,需要将我们的代码使用 Verticle封装起来。 Verticle 是由 Vert.x 部署和运行的代码块。默认情况一个 Vert.x 实例维护了N(默认情况下N = CPU核数 x 2)个 Event Loop 线程。Verticle 实例可使用任意 Vert.x 支持的编程语言编写,而且一个简单的应用程序也可以包含多种语言编写的 Verticle。 一个应用程序通常是由在同一个 Vert.x 实例中同时运行的许多 Verticle 实例组合而成。不同的 Verticle 实例通过向 Event Bus 上发送消息来相互通信。 编写 VerticleVerticle 的实现类必须实现
一般情况下我们需要在自己的Verticle中重写start和stop方法,当然也可以选择调用父类中的start与stop。在Verticle被部署时,会执行start方法,start执行完成之后这个Verticle才是真正启动起来了。当Vert.x 撤销一个 Verticle 时stop会被调用,这个方法执行完成后 Verticle 就变成已停止状态了。 Verticle 异步启动和停止不能在
可以实现 异步版本 的
同样的,这儿也有一个异步版本的
不需要在一个 Verticle 的 Verticle 种类
Standard Verticle当 Standard Verticle 被创建时,它会被分派给一个 Event Loop 线程,并在这个 Event Loop 中执行它的 这意味着我们可以保证在 Verticle 实例中 所有的代码都是在相同Event Loop中执行(只要不创建自己的线程并调用它!) 同样意味着可以将应用中的所有代码用单线程方式编写,让 Vert.x 去考虑线程和扩展问题。不用再考虑 synchronized 和 volatile 的问题,也可以避免传统的多线程应用经常会遇到的竞态条件和死锁的问题。 Worker VerticleWorker Verticle 和 Standard Verticle 很像,但它并不是由一个 Event Loop 来执行,而是由Vert.x中的 Worker Pool 中的线程执行。 Worker Verticle 被设计来调用阻塞式代码,它不会阻塞任何 Event Loop。 如果不想使用 Worker Verticle 来运行阻塞式代码,也可以在一个Event Loop中直接使用内联阻塞式代码。 若您想要将 Verticle 部署成一个 Worker Verticle,您可以通过
Worker Verticle 实例绝对不会在 Vert.x 中被多个线程同时执行,但它可以在不同时间由不同线程执行。 Multi-threaded Worker Verticle一个 Multi-threaded Worker Verticle 近似于普通的 Worker Verticle,但是它可以由不同的线程同时执行。
编程方式部署Verticle可以指定一个 Verticle 名称或传入您已经创建好的 Verticle 实例,使用任意一个
同样可以通过指定 Verticle 的 名称 来部署它。 这个 Verticle 的名称会用于查找实例化 Verticle 的特定 不同的 Verticle Factory 可用于实例化不同语言的 Verticle,也可用于其他目的,例如加载服务、运行时从Maven中获取Verticle实例等。 这可以实现部署用任何使用Vert.x支持的语言编写的Verticle实例。 这儿有一个部署不同类型 Verticle 的例子:
Verticle名称到Factory的映射规则当使用名称部署Verticle时,会通过名称来选择一个用于实例化 Verticle 的 Verticle Factory。 Verticle 名称可以有一个前缀 —— 使用字符串紧跟着一个冒号,它用于查找存在的Factory,参考例子。
如果不指定前缀,Vert.x将根据提供名字后缀来查找对应Factory,如:
若前缀后缀都没指定,Vert.x将假定这个名字是一个Java 全限定类名(FQCN)然后尝试实例化它。 如何定位Verticle Factory?大部分Verticle Factory会从 classpath 中加载,并在 Vert.x 启动时注册。 同样可以使用编程的方式去注册或注销Verticle Factory:通过 等待部署完成Verticle的部署是异步方式,可能在 如果想要在部署完成时被通知则可以指定一个完成处理器:
如果部署成功,这个完成处理器的结果中将会包含部署ID的字符串。这个部署 ID可以在之后撤销它时使用。 撤销Verticle我们可以通过 撤销操作也是异步的,因此如果想要在撤销完成过后收到通知则可以指定另一个完成处理器:
设置 Verticle 实例数当使用名称部署一个 Verticle 时,您可以指定您想要部署的 Verticle 实例的数量。
这个功能对于跨多核扩展时很有用。例如,有一个实现了Web服务器的Verticle需要部署在多核的机器上,可以部署多个实例来利用所有的核。 向 Verticle 传入配置可在部署时传给 Verticle 一个 JSON 格式的配置
传入之后,这个配置可以通过 这个配置会以 JSON 对象(
在 Verticle 中访问环境变量环境变量和系统属性可以直接通过 Java API 访问:
Verticle 隔离组默认情况,当Vert.x部署Verticle时它会调用当前类加载器来加载类,而不会创建一个新的。大多数情况下,这是最简单、最清晰和最干净。 但是在某些情况下,可能需要部署一个Verticle,它包含的类要与应用程序中其他类隔离开来。比如想要在一个Vert.x实例中部署两个同名不同版本的Verticle,或者不同的Verticle使用了同一个jar包的不同版本。 当使用隔离组时,需要用 请注意仅仅只有匹配的类会被隔离,其他任意类会被当前类加载器加载。 若想要加载的类和资源不存在于主类路径(main classpath),您可使用
以下是使用隔离组隔离 Verticle 的部署例子:
高可用性Verticle可以启用高可用方式(HA)部署。在这种方式下,当其中一个部署在 Vert.x 实例中的 Verticle 突然挂掉,这个 Verticle 可以在集群环境中的另一个 Vert.x 实例中重新部署。 若要启用高可用方式运行一个 Verticle,仅需要追加
当启用高可用方式时,不需要追加 关于高可用的功能和配置的更多细节可参考高可用和故障转移。 从命令行运行Verticle可以在 Maven 或 Gradle 项目中以正常方式添加 Vert.x Core 为依赖,在项目中直接使用 Vert.x。 但是,也可以从命令行直接运行 Vert.x 的 Verticle。 需要下载并安装 Vert.x 的发行版,并且将安装的
现在可以使用
甚至可以不必编译 Java 源代码,直接运行它:
Vert.x 将在运行它之前对 Java 源代码文件执行运行时编译,这对于快速原型制作和演示很有用。不需要设置 Maven 或 Gradle 就能跑起来! 欲了解有关在命令行执行 退出 Vert.x 环境Vert.x 实例维护的线程不是守护线程,因此它们会阻止JVM退出。 如果通过嵌入式的方式使用 Vert.x 并且完成了操作,可以调用 FAQ黄金法则:不要阻塞Event Loop Vert.x 的 API 都是非阻塞式的并且不会阻塞 Event Loop,但是这并不能避免我们自己的处理器中阻塞 Event Loop 的情况发生。如果阻塞了 所以不要这样做!这是一个警告! 这些阻塞做法包括:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 6:26:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |