Voovan v2.0.2,高性能异步通信框架和工具库

VOOVAN 开源项目介绍

Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 采集、动态编译支持、数据库访问封装以及 DateTime、String、Log、反射、对象工具、流操作、文件操作、异步双向通道等功能。旨在提供可靠、方便、可单元测试的代码。它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用。自V2.0版本开始应广大使用者朋友们的要求将 Voovan 拆分成多个模块。

本次更新主要内容:

  • 对 Voovan 的异步性能做了小的优化,并且和 t-io 在并发性能上做了比对。

  • 参考 snowflake 算法新增了 UniqueId 分布式 ID 算法,提供1023个独立节点的支持,同时提供短 ID的支持, 参考 nextString 方法。

  • 修复了大量的 WebSocket 的 bug,为应对主机到客户端的广播功能,提供了主动发送消息的能力。

  • 在WebServerRouter 新增了 isConnected 方法,用于判断连接是否断开。

  • 在WebServer 新增 WebSocket 发送心跳的功能。

  • 在 HttpClient 新增了uploadFile方法哦, 用于快速上传文件至服务器。

  • 在WebServer 的 HttpRequest 新增了 saveUploadedFile用户保存用户上传文件。

  • 增加 t-io 并发性能测试用例.

本次更新完善了 Voovan WebServer 提供服务的能力,对 HTTP/1.1, WebSocket 提供了完整的支持,为大家快速开发 restful 以及 发布一个全功能的网站 提供了另一个选择.。

Voovan 典型案例:

  • 商旅行业酒店预订系统,基于 Voovan 开发的后端API服务

  • 基于 Voovan 开发物联网管理服务

  • 基于 Voovan 开发的游戏后端服务

  • 基于 Voovan 开发的 WEB 服务以及手机推送服务

  • 某通信企业基于 Voovan开发日通信10w+ 次的关口机

  • Vestful 一款提供 Restful 服务的框架

  • Dockerfly 一款 Docker web 管理工具

  • JDocker 一款 java 开发 Docker API 封装的框架

性能报告:

Maven 中央库支持:

<dependency>
<groupId>org.voovan</groupId>
<artifactId>voovan-framework</artifactId>
<version>2.0.2</version>
</dependency>

更新内容:

由于v2.0.1标记了版本但未发布,所以一下更新内容包含了 v2.0.1 至 v2.0.2的所有更新内容。

—-新增—-

  • add: 增加 t-io 并发性能测试用例

  • add: 增加WebServerRouter.isConnected 方法

  • add: 为WebSocketRouter类增加 send(ByteBuffer byteBuffer)方法

  • add: 为WebSocketRouter类增加 send(ByteBuffer byteBuffer)方法,用于随时向浏览器发送消息

  • add: 增加了异步通信的 setOption 方法,来指定配置参数

  • add: 增加Cipher类,用于处理消息加密解密

  • add: 增加 HttpRequest.saveUploadedFile方法,用于快速保存上传的文件

  • add: 增加 Part 基于文件对象参数的构造方法

  • add: 增加 HttpClient.uploadFile 方法

  • add: 增加 Body.changeToFile方法,基于文件对象参数

—-优化—-

  • imp: Websocket 不采用 keepalive 控制

  • imp: 优化了WebServerHandler对于, 主动对前段发起 PING 消息

  • imp: 优化了WebServerHandler对于 WebSocket PING-PONG的逻辑

  • imp: WebSocketRouter增加了persistent方法,可获得WebSocketRouter对象.可用来做群发广播等操作

  • imp: 优化 异步通信中在发送消息是判断是否 rewind bytebuffer 的问题

  • imp: 优化 DataBase 在 Debug 模式下输出完整的被调用的 SQL 信息

  • imp: 优化 ObjectPool 扫描可移除对象的方法

  • imp: 优化了 Web 的测试代码包的问题

  • imp: 线程池自动管理算法优化

  • imp: 优化了 MessageLoader 对关闭的处理.

  • imp: 优化了 SocketContext 的三个子类中在关闭时对未处理完成消息继续处理的支持

  • imp: 优化了异步通信代码,没有使用 SSL 时,减少内存申请

  • imp: 优化了 ByteBufferChannel 的性能

  • imp: 新增 ID 生成器类, 参考 snowflake 算法,修改后的方法

  • imp: 调整了radixConvert的字符集,默认16进制都是大写

  • imp: 优化 HttpClient.send 方法

  • imp: 优化短 UUID 的算法使用62位方式从32位缩短至24位,并且唯一性效果同 UUID 一致

  • imp: 优化 WebServer 对 gzip 的判断,如果配置中启用了 gzip,则通过请求的Accept-Encoding自动推断是否启动 gzip 以兼容一写老旧的框架.

  • imp: Response 的 isCompress 默认值调整为 false

  • imp: 优化了异步框架send操作改为异步形式

  • imp: 优化了异步框架的性能

  • imp: 优化了 WebServer 的 Session 清理

  • imp: 优化了 Logger.error 的错误输出

  • imp: 优化 SSLParser.doHandShakeUnwarp方法效率

  • imp: 优化了 SSL 连接因 mac 地址不匹配的问题导致 bug

  • imp: 完善 maven 的脚本配置

  • imp: 优化了 Http 消息分割器

  • imp: 优化了Http 消息粘包处理算法

—-修复—-

  • fix: 修复 Cookie 中 URLEncode 的问题

  • fix: tokenReplace增加以 List 为参数的方法

  • fix: 修改基本方法tokenReplace 为 oneTokenReplace

  • fix: 修复线程池无限制增大的 bug

  • fix: 修复前端关闭后段不触发 onClose 的问题

  • fix: 修复 WebSocket 意外关闭还出发 onSent 的问题

  • fix: 修复异步通信意外关闭出发两次 onClose 的问题

  • fix: 修复 WebServer 的 WebSocket 在 onOpen 事件返回的数据不会被返回到前端的问题

  • fix: 修复 WebServer 的 WebSocket 发送后不触发 onSent 的问题

  • fix: 修复WebSocketRouter重复调用导致的session断开的问题

  • fix: 修复WebServer的 WebSocket 在 onOpen 事件返回的数据不会被返回到前端的问题

  • fix: 修复 AioSocket 作为客户端使用时出现的线程未释放的问题

  • fix: 修复了拆分模块后 web 配置文件中 测试 https 的证书路径问题

  • fix: 修复了 MessageLoader.read 在 loadStream 时不处理消息分割默认返回 null, 从而导致连接关闭 的 bug.

  • fix: 修复 ByteBufferChannel.saveToFile 中锁的关闭问题

  • fix: TString.toObject对非范型和标准 java 类型则默认返回当前值

  • fix: TReflect.getObjectFromMap对于没有明确指定范型的采用 Object 作为类型

  • fix: 修复了 Windows 下的操作异常

  • fix: 修复了 MesssageLoader 因 UDP 的 isConnected 始终为 false 导致的 判断连接状态的异常

  • fix: Web服务释放超时 session 时的异常

  • fix: 修复 ByteBufferChannle.getBytebuffer 方法释放所的问题

  • fix: 修复 ByteBufferChannle.compact 方法释放所的问题

  • fix: 修复了 Windows 下的操作异常

  • fix: 修复了 websocket 连续发布无法正常解析的 bug

  • fix: 优化了 MessageLoader 的 STREAM_END 的异常

  • fix: 修复Network测试代码

Original article: 

Voovan v2.0.2,高性能异步通信框架和工具库