十一 18

主持人:冯大辉,现任丁香园 (http://www.dxy.cn)网站CTO。曾历任支付宝架构师、数据库团队负责人等职。

架构师侯震宇:在编程模型上,您认为如何能够更好地利用多核以及多机环境?

潘晓良:我是把它分成两个问题来看的:一个是多核问题,另一个是多机问题。

对于多核问题,我是一个实用主义者,真的不想在上面有所投入。我把多核环境认为是操作系统应该完成的事情,相信微软和Linux的那些内核朋友们都在为此而努力,因为他们是专家。但看着几个核的资源分布严重不均,一颗累死,十一颗闲死,资源实在太浪费了,怎么办?让系统工程师来搞定吧,就是多跑几个进程,最简单的例子就是一个机器上起多个Memcached、多个Search、多个MySQL,既然操作系统无法把一个进程很好地分到多个核上去,那么我们就用人为的方式来做一些,这虽然不能彻底解决多核效率的问题,但是至少缓解了一点。而且据我所知,很多公司都是这么做的。

对于多机环境,按我的理解,问题只有一个,就是数据访问必须是共享的,对于一个Pool中的Web服务器,它不能使用Session,也不能把数据放到本地文件中,因为不知道下一次访问会不会命中自己,包括本地缓存,随着Pool中服务器数量的增加,命中率随之下降。虽然以上的问题可以通过负载均衡的固定Session方式或者URL映射的方式来做,但是它可能造成服务器的压力分配不均,后面带来的问题可能更多。所以我们的方式就是禁止直接使用Session等本地资源,使用上面一层的虚拟对象,由虚拟对象来控制数据访问,而使用共享的Cache来实现Session的基本功能。

侯震宇:在纯代码层面上,您的团队是否有规范以确保大范围的代码组织结构是统一的。比如有项目的lib、include目录和基础库等。你们是否实现了一个统一的编码编译环境?有什么困难?

潘晓良:对于百姓网来说,因为我们只有一个产品,基本上还没有多项目的问题,但是我想这个问题的关键还是在编码规范上,在于代码的质量和不断增长的代码数量之间的矛盾的问题。关于这个我们做了以下几个事情。

由Developer们讨论出来的编码规范。规范的事情是这么写也对,那么写也对,但就是要争取大多数一致,所以我们的规范是Developer们一起讨论出来的。

标明代码责任人。以前我们的代码是按照模块划分的,但是人会换模块,后来就会多出来很多无主代码,这些无人维护的代码,不仅容易出现Bug,而且增加了阅读成本,所以必须清理掉。

每日上线的时候把每个人的代码数量统计发出来。我们认为代码的少就是多,每个人有责任控制自己代码的数量,是多是少大家都要看见。 阅读全文 »

标签:
阅读:29,055 次
preload preload preload
京ICP备06065162