[阅读: 325] 2006-11-27 05:17:22
1. Node的机制。他的每个Node都是一个单独的Thread,Node与Node之间通过Edge来通讯,Edge里主要是n个bytebuffer,用于储存数据。Node要向一个Edge写数据,首先要等Edge的write key,等到key以后,还要在n个Buffer伦询哪个buffer是空的,找到空的就往里写数据,没找到还得等。读也是相同的过程。如果一个Node能应多条Edge,那就更慢了,它也是轮询每个Edge,哪个edge blocked了,程序也blocked住了。
Node是作Transform的,属于计算密集形,没有IO上的瓶颈,因此,能于1-2个cpu的机器来说,引入多线程没有多大好处,相反,大量的同步及node间的data buffers轮询阻碍了程序的运行。
2.DataRecord的DataField的serialize中,它还要检查类的类型(instanceof去确定能不能进行某个操作,比如DateField的putInt能不能执行,这也是完全没有必要的。因为已经有metadata,而且是程序内部,因此完全没有必要检查,况且,它检查了也就是扔一个Exception,又有什么用呢。