跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
WHY42
搜索
搜索
外观
登录
个人工具
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Vert.x introduction”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
外观
移至侧栏
隐藏
←
Vert.x introduction
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
最开始了解到Vert.X是在[https://www.techempower.com Web Framework Benchmarks]中看到,性能超群的一个web框架,但说实话知名度不是特别高。 [[File:Vert.x_Benchmark.png|600px|Vert.X Benchmark]] 而官网介绍也谦逊的很,甚至都说自己不算一个web框架,而是一个"tool-kit": > Eclipse Vert.x is a tool-kit for building reactive applications on the JVM. = 特点= Vert.x采取的是事件驱动的非阻塞异步响应模型,而不是类似Servlet一样为每一个连接分配一个新的线程。这样做的好处就是可以利用少量的线程处理很多的并发连接。而采取blocking IO的线程在等待IO操作完成的时候,线程会被挂起,而后唤醒。但是这个操作本身也是有一定的开销的,当线程数很大的时候这个开销就尤为明显。 简单来说,Vert.x就是JVM版本的NodeJS,但一个比较大的区别就是NodeJS是单线程模型的,而Vert.x可以有多个event loop,因此能够更加有效的利用多核的优势。 Vert.x的另一个特点就是提供了多种语言的绑定(并不仅仅是简单的wrap一下,而且充分利用了各个语言的特点): * Java * JavaScript * Groovy * Ruby * Kotlin * Scala == 什么是响应式(Reactive)== 根据[https://www.reactivemanifesto.org/ The Reactive Manifesto]的定义,一个响应式的系统具有四个特点: [[File:https://www.reactivemanifesto.org/images/reactive-traits.svg|600px|Reactive manifesto]] * Responsive:The system responds in a timely manner if at all possible. * Resilient:The system stays responsive in the face of failure. * Elastic: The system stays responsive under varying workload. * Message-driven: Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation and location transparency. == 组件== Vert.x又包含了很多个部分: === Web组件=== * Core: 包含底层的Http/TCP、文件等的访问功能。 * Web: 可以用来创建Web应用和微服务 * Web Client: http请求客户端 * Web API Contract: 用来实现契约先行的开发模式以及契约测试 * 其他: Web API Service, Web GraphQL Handler等,不过目前都还在Technical Preview阶段 === 数据访问=== 数据访问组件提供了一系列的异步访问client,当然也可以直接使用原始的数据库驱动。支持的数据库有: * MongoDB client * Redis client * Cassandra client * SQL Common * JDBC client * Reactive MySQL/DB2/PostgreSQL client(Technical preview) === Reactive=== 提供了各种创建响应式应用程序的组件。 * Vert.x Rx: 不喜欢回调可以使用RxJava风格的API * Reactive streams: 可以与Akka/Project Reactor等其他reactive系统交互 * Vert.x Sync: 用来部署使用fiber(纤程,一种轻量级的线程)的节点,可以编写串行化风格的代码 * Kotlin coroutines: 携程的支持,可以使用`async/await`或者channels。 === Microservices=== 创建微服务的组件: * service discovery * circuit breaker * config === MQTT=== 提供了MQTT的server和client端组件。 === Authentication and Authorisation=== 认证授权相关: * Auth common * JDBC auth * JWT auth * Shiro auth * MongoDB auth * OAuth2 * .htdigest Auth === Messaging=== * AMQP client(Technical preview) * STOMP client & Server * RabbitMQ client * AMQP bridge === 其他=== * Kafka client * Mail client: SMTP 客户端 * Consul client * JCA Adaptor * Event Bus bridge:TCP/Apache camel * Health check * Metrics * Shell * Docker * Vert.x Unit * ... = 使用= == Hello World== <syntaxhighlight lang="java"> public class VertxEcho { public static void main(String[] args) { Vertx vertx = Vertx.vertx(); vertx.createNetServer() .connectHandler(socket -> { socket.handler(buffer -> { socket.write("Hello:" + buffer); }); }) .listen(3000); } } </syntaxhighlight>
返回
Vert.x introduction
。
搜索
搜索
查看“︁Vert.x introduction”︁的源代码
添加话题