Vert.x 简单介绍
admin
2024-01-28 09:40:38
0

Vert.x Web 介绍以及与Spring Boot的区别

我们都知道Spring系列是目前比较流行的JavaWeb框架,在微服务盛行的当下SpringBoot更是成为了几乎霸主的地位。确实,SpringBoot免去了繁琐的配置并内置了tomcat,可以独立运行,很符合微服务的特性,并在后来有了SpringCloud相关组件的加持使得Spring的地位更加稳固。

它的有点有很多,但是当我们只有一台配置不高的服务器时,或者我们只是想快速的开发一个功能不需要很复杂的服务时使用SpringBoot总会让我们内心有点不舒服(可能只有我有这种感觉吧),因为它不是很轻,尽管它相对于之前的SSM框架来说已经很便捷了,但是它不是我心中的“轻”,作为个人开发时我希望我使用的框架是一个不会占用很多内存,而且性能也可以。于是便发现了Vert.x这个框架,准确的来说它不像是一个框架,它更像是基于Netty实现的一系列工具集。它的最重要的一个特点就是它是异步的架构,怎么理解这个呢?在官网中有这么一句话:“Don’t call us, we’ll call you”这也是在使用它时的原则,也就是在开发过程中我们不需要等待它给我们返回什么,而是让它告诉我们完成了什么,即所谓的——事件驱动编程。这样有什么好处?我们举个例子:我们去电影院看电影,去了以后我们需要排队取票,然后再去买个爆米花,然后排队检票,也许还有更多的事情,这里就列举三件事,在传统的编程中我们会这样做,去排队取票,等去上票然后去排队买爆米花,然后再排队检票,每件事情在做的时候是需要等待的,也就是每件事情做的时候是同步的,这时你可能会说使用多线程啊,启用分身之术,但我们要注意,**线程的开销是需要消耗系统资源的,再加上频繁的线程切换,如果是要做5000件事情可能还能应付的过来,那如果是50000或者更多呢。**这额外的线程开销和系统资源的消耗可以说给本来就服务器配置不高的我雪上加霜。那如果是事件驱动编程呢?它会这样做,**首先去取票,拿了一个排队号码后它不需要等,直接去买爆米花,当然也不需要排队,拿一个号码,然后去检票那里告诉检票员到我了告诉我,完成上面这几件事后我就去椅子上休息去了。**这种方式是不是很好,把所有要做的事情告诉对象的处理方,等处理完成了直接告诉我们,然后我们拿到相应的结果,这样一个线程就可以支持很多个事件。Vert.x就是这样做的,熟悉Netty有的应该知道,Netty中的事件循环可以使用一个线程来支持很多的事件。

除了以上是Vert.x的一个优点外,对于Web开发它还有一个重要的优点是它不需要类似tomcat的容器来运行我们的程序,而是基于JVM的。这就会使我们的应用体积更小、占用内存更小。

它的优点很多,上面俩个就已经完全满足我的需求,本博客网站的服务端就是纯Vert.x编写,我的云服务器内存是4G,运行后该服务只占用了2.2%的内存,在使用Jmeter压测工具配置30个线程,同时发起请求循环100次,内存上升1%~2%,并不会再上升。

使用难易程度

在刚使用时可能会有些不习惯,因为是异步架构的和事件驱动的,需要我们写对应的handler,不过习惯了以后就好,就像我这个博客服务搭建时刚开始写起来很别扭,因为习惯了SpringBoot那一套,不过Vert.x它更偏向底层,不会封装很多东西,因此也会给我们带来真正编码的快了,以为如果你不想好怎么设计或者怎么封装一些自己的工具的话,慢慢代码就会很乱。个人还是很推荐尝试它的,我在以后除了工作中(不可抗拒的力量)外,我自己的项目基本上都会使用它了。

相关链接

  • vert.x 官方文档
  • 本人纯Vert.x 搭建的博客

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...