本周版本更新至v1.1.0,主要做了如下更新:
* 优化了转发会话结构:每个转发会话都有自己的输入输出数据缓冲区,实现当接收速度大于发送的情况下的非堵塞异步处理,便于未来扩展。
* 补充了全异步框架的最后一块代码:当转发缓冲区满的情况下,暂时关闭输入端可读事件,异步等待输出端可写事件。
* 新增规则属性超时控制"timeout":每条会话继承规则的超时控制,防止空链长久占用连接和会话资源。
配置示例:(注意白字符分隔)
admin G ( timeout 300 ) 192.168.1.54:* ( maxclients 2 ) - 192.168.1.54:8060 ;
* 新增规则实体内来源地址集合属性客户端连接数控制"maxclients":每条规则配置每个客户端网络地址最大连接数,防止恶意大连接攻击。
配置示例:(注意白字符分隔)
webdog2 RR *.*.*.*:* ( maxclients 5 ) - 192.168.1.54:8080 > 192.168.1.79:8089 192.168.1.79:8090 192.168.1.79:8091 ;
至此epoll(ET)的非堵塞全异步的应用层框架已完整实现,主要包含以下内容:
* 基于epoll(ET)事件处理应用层框架。
* accept客户端连接后转连服务端connect的非堵塞异步实现。
* recv客户端数据后转发send服务端时,当转发速度小于接收速度情况下的非堵塞异步实现。
* 客户端和服务端的请求和响应在转发端的并发隔离。