谈分布式网络程序设计2

技术   2006-08-12 15:11   阅读1137   评论7  
字号:    

    网络协议:网络程序一个非常基础的部分就是协议,它负责网络之间各节点的通信,什么样的分布式构架就会演化出什么样的协议,同时,从协议反向推倒,也可以看出分布式构架的大致端倪来。它和分布式构架的设计是同时进行的,而且以后的详细设计就是基于协议。当时从桂林回来的第一个星期里,俺们组p事不干,就在会议事里yy协议,反复yy n次(n>10)。考虑了各种可能性:各种类型的节点失效怎么办,在某个重要操作节点失效又怎么办,怎样保持持续的数据查询,数据恢复,同步,实现的复杂性等等。还好,在否定了中间的几个版本后,最好终于拿出了一个版本,就是现在的版本。协议一出来,系统构架就定好了。

    字符编码:java默认是用unicode的;c++的有好多种,看你怎么选了;java的节点和c++的节点的传输,比如一篇文章从java节点传到c++节点,字符编码问题就出来了。默认的做是转化为utf-8当作中间传输编码。但是俺们采用了另一种做法,原先的对linux系统和windows系统的unicode编码的误解,歪打正着,设计出了一种比较方便的做法,呵呵。

    字节序:不同的硬件字节序不一样,这个问题要好好设计,网络传输的数据,比如最好通过网络字节序进行传输,不然,有你好看。

    操作系统的cache,这个东西会导致程序的性能有时候狂好,有时候狂差,这个害苦了性能测试。当初不知道这个东西,系统的总使用内存在95%以上,还以为操作系统出来什么问题,重启。而且使得俺们认为软件的瓶颈在cpu,但是当数据量大大大于内存容量的时候,瓶颈还是在硬盘上。不过若数据量不是很大的时候,操作系统的cache使得search的性能成倍的上升,这个还是赞的。以后要大内存,最好20G,呵呵。

    今天到此为止,下次有时间讲讲分布式的调试,不过我们的方法还是很土。

   

评论(?)
阅读(?)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009