Archive for December, 2007:

NCP/阿里妈妈-抓住互联网最大的长尾

{ Posted on Dec 25 2007 by glemir }
Categories : 我看互联网
刚看mlsx的blog, 赚奶粉钱第一步--投放广告。我想起当时xplore通过google ads验证时他的兴奋劲。一年多过去了,mlsx好像也没收到google带来的太多收入,如同我们当时疯狂的开站点,申请域名,梦想着有一天广告能带来不错的收入,直到后来激情被时间消磨,渐渐认为建站如同不务正业。 来yahoo后听得最多的就是NCP,我当时对它的理解和大多数人一样,一个傻瓜建站系统,我当年和f4也想过针对企业提供相关的服务,但yahoo的目标是所有的网民,狠抠网民在作为生产者这个角色中的巨大潜力。 web2.0以来,用户为中心,网民创造网络的说法我听过不少,NCP的思想我也一点都不意外,但NCP与我们之前所说建站系统明显差别在于他的技术核心在搜索技术、技术中心思想在于平台架构。这意味着: 1.技术的门槛不低。我研究过lucene,也略知中文分词和网络爬虫,真正去做一个搜索引擎依靠这些还是有点小儿科,做做垂直搜索什么的还行。 2.投入成本不低。一个成功的web2.0的网站意味着流量和容量都相当的大,服务维护成本肯定不低。 3.平台扩展性。facebook被人们最为称道的是它开放api的思路,如果NCP很成功,意味着它可以养活不少站长,同时还可以养活不少公司。基于api接口做相关的行业应用,会有大量的公司愿意做这个事。想想,自己做个网站,从一开始就拥有整个yahoo的注册用户是一件多么令人兴奋的事。 但是,目前来说,NCP能吸引这么用户的原因可能还是由于阿里妈妈。 阿里妈妈是典型的冲着站长的长尾去的。 相比与google ads它至少有三点优势: 1.没有站点流量要求。 2.支付方式更合理。 3.提供一个自由的广告交易平台,更加web2.0. 无须多讲,第一点让她可以拥有更多的客户,小到个人网站,大到新浪网易等门户网站都可以成为她的客户。第二点由于支付宝的优势让类似几分钱的广告费支付成为可能,而不是像google的必须100$之类的才能兑现。第三点让她真的作为一个第三方,让广告的买卖变得透明和实在。 参加百年雅虎的培训时,阿里巴巴的老员工告诉我们,现在集团最大的希望就在NCP和阿里妈妈,我不得不佩服马云对整个互联网的布局,我的老板是我的偶像,这事情看起来很不错。 Read More »

Web站点数据库分布存储浅谈(转)

{ Posted on Dec 25 2007 by glemir }
Categories : 计算机
才知道是同事写的,抱歉一个。原帖地址:http://blog.csdn.net/heiyeshuwu/archive/2007/11/18/1891639.aspx 【 前言 】 网 站在Web 2.0时代,时常面临迅速增加的访问量(这是好事情),但是我们的应用如何满足用户的访问需求,而且基本上我们看到的情况都是性能瓶颈都是在数据库上,这 个不怪数据库,毕竟要满足很大访问量确实对于任何一款数据库都是很大的压力,不论是商业数据库Oracle、MS SQL Server、DB2之类,还是开源的MySQL、PostgreSQL,都是很大的挑战,解决的方法很简单,就是把数据分散在不同的数据库上(可以是硬 件上的,也可以是逻辑上的),本文就是主要讨论如何数据库分散存储的的问题。 目前主要分布存储的方式都是按照一定的方式进行切分,主要是垂直切分(纵向)和水平切分(横向)两种方式,当然,也有两种结合的方式,达到更到的切分粒度。 1. 垂直切分(纵向)数据是数据库切分按照网站业务、产品进行切分,比如用户数据、博客文章数据、照片数据、标签数据、群组数据等等每个业务一个独立的数据库或者数据库服务器。 2. 水平切分(横向)数据是把所有数据当作一个大产品,但是把所有的平面数据按照某些Key(比如用户名)分散在不同数据库或者数据库服务器上,分散对数据访问的压力,这种方式也是本文主要要探讨的。 本 文主要针对的的 MySQL/PostgreSQL 类的开源数据库,同时平台是在 Linux/FreeBSD,使用 PHP/Perl/Ruby/Python 等脚本语言,搭配 Apache/Lighttpd 等Web服务器 的平台下面的Web应用,不讨论静态文件的存储,比如视频、图片、CSS、JS,那是另外一个话题。 说明:下面将会反复提到的一个名次“节点”(Node),指的是一个数据库节点,可能是物理的一台数据库服务器,也可能是一个数据库,一般情况是指一台数据库服务器,并且是具有 Master/Slave 结构的数据库服务器,我们查看一下图片,了解这样节点的架构: (图1) 【 一、基于散列的分布方式 】 1. 散列方式介绍 基 于散列(Hash)的分布存储方式,主要是依赖主要Key和散列算法,比如以用户为主的应用主要的角色就是用户,那么做Key的就可以是用户ID或者是用 户名、邮件地址之类(该值必须在站点中随处传递),使用这个唯一值作为Key,通过对这个Key进行散列算法,把不同的用户数据分散在不同的数据库节点 (Node)上。 我们通过简单的实例来描述这个问题:比如有一个应用,Key是用户ID,拥有10个数据库节点,最简单的散列算法是我们 用户ID数模以我们所有节点数,余数就是对应的节点机器,算法:所在节点 = 用户ID % 总节点数,那么,用户ID为125的用户所在节点:125 % 10 = 5,那么应该在名字为5的节点上。同样的,可以构造更为强大合理的Hash算法来更均匀的分配用户到不同的节点上。 我们查看一下采用散列分布方式的数据结构图: (图2) 2. 散列分布存储方式的扩容 我们知道既然定义了一个散列算法,那么这些Key就会按部就班的分散到指定节点上,但是如果目前的所有节点不够满足要求怎么办?这就存在一个扩容的问题,扩容首当其冲的就是要修改散列算法,同时数据也要根据散列算法进修迁移或者修改。 (1) 迁移方式扩容:修 改散列算法以后,比如之前是10个节点,现在增加到20个节点,那么Hash算法就是[模20],相应的存在一个以前的节点被分配的数据会比较多,但是新加入的节点数据少的不平衡的状态,那么可以考虑使用把以前数据中的数据按照Key使用新的Hash算法进行运算出新节点,把数据迁移到新节点,缺点但是这个成本相应比较大,不稳定性增加;好处是数据比较均匀,并且能够充分利用新旧节点。 (2) ...Read More »

写了一个数组转xml的类

{ Posted on Dec 20 2007 by glemir }
Categories : 计算机
php数组转xml其实不太合理,xml应该和对象是对应的,php数组比较灵活。这次开发要规范项目接口,所以写了这么一个类。 class ArrayUtility { /** * Convert array to xml tree * * @param array $array * @param array $options * @return string * @example xmlize() */ public function xmlize($array, $options) { $encoding = isset($options['encoding']) ? $options[$encoding] :'utf-8'; $root = isset($options['root']) ? $options['root'] : 'response'; $xml = "< ...Read More »

比较好团队开发模式

{ Posted on Dec 19 2007 by glemir }
Categories : 计算机
这次的项目开发采用了PHP Framework。这个框架是同事chin写的一个叫kiwiphp的MVC框架。 之前看过mlsx介绍过的cakephp,对php的MVC有点映像,入手还算容易。 我觉得比较好的是这次我们的开发模式,因为yahoo的服务器环境是自己独有的,我们在一台linux机器上架了samba服务器,然后在web根目录下为每个开发人员分配一个目录,开发者在本地采用eclipse,工作空间设定在相应的samba目录上。这样保证了环境和yahoo的环境一致。 代码通过svn管理,定时提交和更新。 由于采用eclipse开发,整个开发效率得到大的提高。 Read More »