论坛首页 Java企业应用论坛

一个Java架构师的新年期望

浏览 63923 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-02-01  
Java 与 动态语言 现在的动态语言好像很火的样子
0 请登录后投票
   发表时间:2009-02-01   最后修改:2009-02-01
dennis_zane 写道
bachmozart 写道
印象中好像NIO2中的AIO也不是真正的操作系统级的AIO,只是sun自己在IO复用+non-blocking IO基础上加上自己写好的部分底层代码模拟的一个应用层的AIO,似乎对性能不会有什么本质的提高,毕竟用的还是EPOLL(Linux上),只是代码编写上会简化一些.固定了线程模型什么的


你都没分清楚IO模型


我对Linux IO模型的理解可能有不正确的地方,向大家请教一下吧,我的理解是:

Linux 下的IO模型基本有4种

1.同步阻塞IO
即read,write方法都是阻塞等待的,系统调用read一直等待有新的字节流产生,才会返回,否则一直等待,这种是最基本的IO模型,大部分时间花在了IO等待上,CPU利用率较低

2.同步非阻塞IO
即通过fcntl设置相应描述字为非阻塞,此时read,write方法在调用时,如果没有字节流则会立即返回,并得到一个EWOULDBLOCK,或者是EAGAIN错误,代表暂时没有数据可达,程序需要轮询判断是否有新的字节流可达,也就是POLLING
这种模型cpu不断轮询所有的fd自然会耗费大量的cpu时间

3.异步阻塞IO(或者说是IO复用)
系统将关心的描述字与相应事件注册,通过select()调用(或者poll,epoll),也就是系统阻塞在select调用上,当任何一个被注册的描述字有所关心的事件发生则,select返回,通知系统发生的事件类型和所对应的描述字,然会程序再调用read,或者write等方法,read,write本身是非阻塞的,会立即返回,这种模型是目前效率最高的,最常用的一种IO模型(当然效率上epoll最好)

4.异步非阻塞IO(也就是AIO)
这种IO模型通过注册IO事件后,在系统发生某个IO事件后,由kernel通过注册事件时传递的callback指针,由kernel调用相应的回调方法,处理io事件,这个应该是内核2.6新的特性

我所说的java 7 的AIO,是想说未必是第4种IO模型(操作系统级的AIO),因为区别在于是否是kernel调用的callback,还是应用层自己封装的AIO

不对的地方请大家指正,多谢

0 请登录后投票
   发表时间:2009-02-01  
我期待2009年能出个轻量级的“SOA”框架,感觉目前不论是osgi还是soa对于一般级别的应用来说都难以适合,门槛还不够低,且难于存在的框架整合,不够成熟,这也应该是它们没进入平民化的原因。而spring的能力还不具备osgi和soa的一些优点,spring DM还不够理想,期待这一状况得到改观。
0 请登录后投票
   发表时间:2009-02-01  
过去一年里,我更加关注移动互联网的操作系统、虚拟机、及开发平台。新的一年,希望可以了解一下android的的Dalvik virtual machine。大家多多交流。
0 请登录后投票
   发表时间:2009-02-01  
技术纷繁 这行活到老学到老,我做地质的同学说了,他们看的东西看过一次这辈子都不会再变了。
1 请登录后投票
   发表时间:2009-02-01  
标记一下,年底回来再看看。。。
0 请登录后投票
   发表时间:2009-02-01  
白衣总是走在了前面!
0 请登录后投票
   发表时间:2009-02-01   最后修改:2009-02-01
别,别这么说。我守着项目组那一亩三分地,OSGI,云计算之类的都接触不到的说,随便数一下就瞎凑个热闹而已。

jspine 写道
白衣总是走在了前面!

0 请登录后投票
   发表时间:2009-02-01   最后修改:2009-02-01
里面提到的东西 有1/3都没有用过。。
0 请登录后投票
   发表时间:2009-02-01  
江南白衣 写道
raymond2006k 写道

比如:EJB远程调用如果不想使用,可以用 Mule,Tuscany 等提供的简化方案;
分布式cache,也有memcached,coherence等不错的方案,只是后者是商业版本,比较昂贵。


像Mule最终传输协议还是离不开WebService/REST/JMS们的,WebService原来的问题不会消失。
原文我写"分布式cache“是写错了,应该是"分布式内存"。而memcached毕竟只是cache,集群中单台服务器倒掉时,数据会丢失的。


TerraCotta的问题在什么地方啊?看它的网站以及相关案例介绍感觉还不错
只不过据说在实现架构上和Oracle的coherence差别挺大的

另外,memcached虽然没有数据冗余,只不过本身非常稳定
对于一般的业务基本够用了

何况还可以用某些 LVS + memcached的技术做一些热备的处理


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics