发布于 2017-06-30 09:30:00 | 85 次阅读 | 评论: 0 | 来源: 网友投递
Voovan 高性能WEB服务器及网络通信框架
Voovan 是一个高性能异步网络框架和HTTP 服务器框架,同时支持HTTP客户端抓去、动态编译支持、数据库访问封装以及DateTime、String、Log、反射、对象工具、流操作、文件操作、异步双向通道等功能。旨在提供可靠、方便、可单元测试的代码。它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用。
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测试代码