博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对kilim nio模块的改进
阅读量:6458 次
发布时间:2019-06-23

本文共 1294 字,大约阅读时间需要 4 分钟。

生活、程序、未来
   ::  ::  ::  ::  ::

Posted on 2010-11-19 18:40 阅读(3472)     所属分类: 、
338504.html?webview=1
    前段时间对kilim的当前版本做了一些改进,集中在nio调度器这一块。Kilim新版本引入了nio调度器,可以跟非阻塞IO结合在一起,从这个版本开始,kilim才真正具有实用性。协程只有跟非阻塞IO结合起来才能发挥威力啊。但是Kilim的默认的nio调度器还只是使用一个nio worker做调度,这跟现有的NIO框架采用多个nio worker来提升效率比较起来相对落伍。我改进了 ,引入了类似Netty3的boss和woker的概念,boss负责连接接入,而worker负责连接的IO读写,并且默认设置worker数目为CPU个数的两倍。经过我的测试,改进后的NIO调度器的效率远远超过了现有的调度器,有兴趣可以用netty的benchmark跑一下example里的 。
    Kilim默认还提供了一个简易Http Server框架,但是没有提供Http Client的实现,我的另一个改进是提供了一个简易的Http Client实现,也是利用Ragel做协议解析,一个简单的使用例子如下:
package
 kilim.examples;
import
 kilim.Pausable;
import
 kilim.Task;
import
 kilim.http.HttpClient;
import
 kilim.http.HttpResponse;
public
 
class
 SimpleHttpClient {
    
static
 
class
 SimpleTask 
extends
 Task {
        @Override
        
public
 
void
 execute() 
throws
 Pausable, Exception {
            HttpClient client 
=
 
new
 HttpClient();
            HttpResponse resp 
=
 client.get(
"
http://www.google.com.hk/
"
);
            System.out.println(resp.status());
            System.out.println(resp.content());
        }
    }
    
public
 
static
 
void
 main(String[] args) {
        SimpleTask task 
=
 
new
 SimpleTask();
        task.start();
    }
}
    这个简陋的HttpClient目前只支持GET/POST,同时支持Http chunk编码(得益于kilim原有代码),做一些简单的HTTP调用已经足够。我尝试在一个项目里使用这个HttpClient去替代java默认的HttpURLConnection,效率有部分提升,但是同时由于大量协程存在占用了很大部分的内存,给GC也带来了不小的压力。
    我的代码直接从kilim的主干fork出来,有兴趣可以直接git clone下来玩玩,地址 
文章转自庄周梦蝶  ,原文发布时间 2010-11-19

转载地址:http://tnszo.baihongyu.com/

你可能感兴趣的文章
C语言 第二章 数据类型、变量和输入函数
查看>>
mysql存储过程的学习(mysql提高执行效率之进阶过程)
查看>>
Linux磁盘管理:LVM逻辑卷管理
查看>>
mysql 大事物commit慢造成全库堵塞问题
查看>>
mysql图形化界面MySQL_Workbench
查看>>
python访问oracle时的问题总结
查看>>
13.15. ftp fs
查看>>
小团队管理与大团队管理
查看>>
rsync常见问题及解决办法
查看>>
半自动化运维之服务器信息维护
查看>>
AKM项目轶事之GBS同事转入GDC
查看>>
MySQL日期 专题
查看>>
C#中禁止程序多开
查看>>
Linux帮助命令
查看>>
BYOD时代无线安全成企业关注焦点
查看>>
智慧城市的宠儿 大数据为城市建设添彩
查看>>
★《唐琅探案》后记【3】
查看>>
java-类库-Apache Commons
查看>>
五方面入手精选数据库审计产品
查看>>
ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation
查看>>