发布于 2017-04-17 10:20:53 | 144 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Voovan 高性能WEB服务器及网络通信框架

Voovan 是一个高性能异步网络框架和HTTP 服务器框架,同时支持HTTP客户端抓去、动态编译支持、数据库访问封装以及DateTime、String、Log、反射、对象工具、流操作、文件操作、异步双向通道等功能。旨在提供可靠、方便、可单元测试的代码。它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用。


经过不泄努力和无数轮对性能稳定性和功能的测试,Voovan 为您带来了全新的1.5版本.这是 Voovan 具有里程碑意义的版本,经过完成测试,并且已经在多个实际项目中大量的使用,其稳定性和高性能特性已经得到了验证。

在这个版本中大量使用 Unsafe操作和堆外内存,经过测试(代码中的测试用例配合 jvisual查看)堆内的内存使用量控制在25m以内,对堆外的内存的释放支持手工和 jvm 自动释放两种方式。

在socket通信的缓冲区的内存管理上深度使用堆外内存和零拷贝,并在使用完成后手工释放,这样堆外内存的使用量也一直是趋于稳定低水平,不在等待 jvm 释放。

目前 Voovan 已经在 Dockerfly 开源项目中使用

从这个版本开始,框架的模型移机类和方法结构将会稳定下来,如非性能的要求不会做改动了。小伙伴门可以放心的使用咯。

文档入口:Voovan一步步入门

在这里感谢一直关注并为 Voovan 发展提供支持的各位朋友,同时感谢开源中国提供 GIT 服务支持。

重要更新内容:

一、重构了ByteBufferChannel类,将 ByteBufferChannel 修改成非堆内存的形式,使用Unsafe 带来的内存使用完及释放,大幅度减少密集的高并发场景下的 gc 的次数,经过估算和测试 full gc的次数将会下降为原来的1/3.

        1.Socket 异步通信优化内存消耗,10w连接通信后,内存控制控制在90m。

        2.并增加 readLine 和 readSplit 方法

        3.并增加 saveToFile 方法 

二、为ByteBufferChannel 增加 release() 用于手工释放堆外内存.。

三、由于 jvm 在获取属性和方法时会带来较大的瓶颈,在高并发场景下会被方法,顾优化反射工具类的性能,连续多次通过 TReflect 类获取反射属性和方法时性能大幅度提升使其不在成为性能瓶颈。

四、Socket 通信,如果没有执行分割器的情况下默认分割器由原来的超时分割器 更换到 透传分割器。

五、优化 HttpParser 手动释放临时的ByteBufferChannel,减少 gc 停顿时间。

六、如果在过滤器的 onRequest 方法中修改了response参数的 body ( 即:response.body().size()>0 ),则不会执行路由处理,整个过滤器执行完成后,返回response.用于对权限控制的处理. imp: Body 对象的 getGZipedBody方法删除。为大家提供权限管理控制的点。

七、将getParameterAsObject 重命名为 getAllParameterAsObject, 用于将 HTTP 请求的所有参数, 转换成一个 Java 对象,增加 getParameterAsObject 用于将 HTTP 请求的一个参数,使用 JSON 转换成一个 Java 对象。

本次更新带来55项优化、bug 修复、新增等内容

增加的内容

  • add: TByteBuffer 增加释放内

  • add: 增加TrasnferSplitter透传过滤器,没有进行消息分割,收到即发送存函数 imp: 优化 HTTP 报文解析,采用流的形式,节省内存

  • add: ByteBufferChannel新增堆外内存支持手动释放,手动释放可减少 GC 停顿时间,如果不手动释放将会自动释放.

  • add: TFile 增加getLineSeparator(), 获取系统默认的换行符

  • add: TFile 增加getTemporaryPath()方法,获取系统临时文件目录

  • add: ByteBufferChannel 增加 release() 用于手工释放堆外内存.

  • add: 增加 readLine 和 readSplit 方法

优化的内容

  • imp: 优化反射工具类的性能

  • imp: 优化线程池 imp: 优化异步通信

  • imp: 优化注释并重构

  • imp: 对异步通信的内存进行进一步优化,减少 gc,提升性能.

  • imp: Socket 异步通信优化内存消耗,10w连接通信后,内存控制控制在90m

  • imp: 修复HttpClient.loadStream方法,在连接断开内存释放后抛出异常

  • imp: 优化ByteBufferChannel类的各种操作方法,在内存已释放的情况下抛出MemoryReleasedException异常

  • imp: Socket异步通信优化

  • imp: TReflect 类优化,提升 findField 和 findMethod 的性能.

  • imp: 优化 HTTP 报文解析

  • imp: Socket 通信,如果没有执行分割器的情况下默认分割器由原来的超时分割器 更换到 透传分割器

  • imp: 中间的临时数据的保存都使用堆外内存,减少堆内内存的使用,减少 gc 触发频率

  • imp: 优化 Socket 异步通信,在 socket 关闭的时候使用ByteBufferChannel手动释放

  • imp: 优化 HttpParser 手动释放临时的ByteBufferChannel,减少 GC 停顿时间.

  • imp: 优化 HTTP 报文解析,采用流的形式,节省,支持大文件上传

  • imp: TEnv 中文件操作相关的方法全部移动到 TFile

  • imp: ByteBufferChannel 优化, 并增加 saveToFile 方法

  • imp: 采用 RandomAccessFile 优化 TFile 类

  • imp: 优化 ByteBufferChannel

  • imp: 完成 SSL unwarp 操作的提前,收到消息后直接解析,这样在 session 中访问都是可用的信息.

  • imp: 优化 BytebufferChannel 的异步操作

  • imp: MimeFileRouter类内存优化

  • imp: 优化HttpMessageSplitter的性能,减少对堆内存的消耗

  • imp: 增加 TByteBuffer 的单元测试

  • imp: 优化 reallocate 和 moveDate 方法使其支持两种类型的 ByteBuffer

  • imp: 将 ByteBufferChannel 修改成非堆内存的形式

  • imp: 优化 Socket 通信,确立两种模式[分割器模式, 缓冲区模式]

  • imp: 如果在过滤器的 onRequest 方法中修改了response参数的 body ( 即:response.body().size()>0 ),则不会执行路由处理,整个过滤器执行完成后,返回response.用于对权限控制的处理. imp: Body 对象的 getGZipedBody方法删除.

  • imp: 将getParameterAsObject 重命名为 getAllParameterAsObject, 用于将 HTTP 请求的所有参数, 转换成一个 Java 对象 imp: 增加 getParameterAsObject 用于将 HTTP 请求的一个参数,使用 JSON 转换成一个 Java 对象

BUG修复

  • fix: 修复 WebsocketParser 后释放 payload 导致的异常

  • fix: 修复 netty 测试用例 bug

  • fix: 修复反射类TReflect的getObjectFromMap方法,对 null 的支持

  • fix: 修复 readHead 和 readEnd 方法写入时没有从dst 对象的 position开始,而是从头开始的问题.

  • fix: 修复演示页面地址.

  • fix: MessageLoader 中对于 useSpliter 的异常

  • fix: HttpClient.loadStream 没有切换导非分割器模式导致的异常

  • fix: JSONDecode 中 字符串扫描结束并未退出循环,导致的死循环问题

  • fix: http post请求参数缺少第一个字母的问题

  • fix: http 使用multipart/form-data提交时 Content-type 中没有 boundary的问题

  • fix: 修复 http 响应在没有报文实体内容时还返回 Chunked,导致的解析异常问题

  • fix: 修复 JSON 解包时到字符串尾部依旧不退出循环的问题 add: 新增特性,过滤器返回位置为0时,不对 bytebufferchannel 的缓冲数据做修改

  • fix: 修复TStream.readLine方法 某些特殊情况会导致死循环的 bug

  • fix: 修复IoSession中 read 方法对于异常处理的 bug

  • fix: 修复ByteBuffer出现的error for object 0x7fb596675380: pointer being freed was not allocated异常 imp: 优化 AioSocket.close 方法对连接状态的判断

  • fix: 移除 IoSession 中 sendSSL 和 readSSL,框架根据通信类型自动选择发送是 ssl 还是直接发送.

  • fix:Body 的 read, compress, free 方法的 bug 处理.

  • fix: ByteBufferChannel不会同 gc 一起被自动释放的问题

  • fix: 修复 EventProcess 没有检查连接状态的bug

  • fix: 修复同步通信的 syncStart 方法执行完成后连接没有连上,导致的通信异常.



历史版本 :
Voovan v2.0.2,高性能异步通信框架和工具库
Voovan v2.0 发布,无依赖的AIO/NIO异步通信框架
Voovan V1.5.3 发布,高性能异步通信框架和工具集
Voovan v1.5 发布,高效堆外内存管理,性能不打折扣
Voovan V1.0-RC-1 发布,持续优化性能和稳定性
Voovan V1.0 (Beta.3.2) ,增加 UDP 异步通信
Voovan v1.0.beta.1 文档丰富/性能优异
Voovan V1.0-alpah-2 发布,并发性能大幅度提升
Voovan framework v1.0-alpha 释出
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务