作者文章: Fenng

虾米音乐网

xiami_logo.jpg
由几位前同事秘密打造许久虾米音乐网明天正式上线测试了。虾米是干啥的? 比较官方的描述是 “P2P音乐分享平台” ,站内有篇360度全面了解虾米(登录才可以访问),我个人的看法是 “Last.FM + P2P”。对于音乐源,永远有”种子”。这一点能弥补当前很多音乐站点的缺陷,至于版权问题如何解决,你登陆后就知道了。


去过虾米的办公室
,这帮家伙本身就是铁杆乐迷,对于互联网存在的各种模式也研究比较透了,所以,虾米的玩法总有些与众不同之处,当然这也要看网站的发展和用户的接受程度了。 祝他们好运!

虾米的主要技术包括:基于 P2P 技术的娱乐媒体传输和提供用户良好的娱乐享受,及从分享中的获利。采用跨平台的 C++ 技术进行 Linux(服务器)和 Windows(客户端)的技术开发,服务器侧重于高性能和并发性,客户端侧重良好的用户体验和用户媒体习惯数据的采集。

小道消息: 他们在招聘(简历发给我即可)
Windows程序员

1. 精通或熟悉C++,能熟练使用VC,熟悉网络编程(Socket,完成端口)和UI界面(SDK,GDI,GDIPLUS)编程,了解P2P技术尤佳 ;
2. 熟悉面向对象,STL,ATL等C++语言层面的技术 ;
3. 熟悉多线程编程 ;
4. 熟悉SQL编程 ;
5. 能熟练查阅英文编程资料(如MSDN) ;
6. 对互联网行业充满热情和兴趣,具有优秀的学习能力,喜欢音乐者尤佳。

高级Windows程序员

1. 精通C++,能熟练使用VC,精通网络编程(Socket,完成端口)和大并发的服务器架构设计。对P2P技术有深入研究者尤佳;
2. 精通面向对象,STL,ATL等C++语言层面的技术。熟悉boost,loki等模板库者尤佳;
3. 精通多线程编程;
4. 精通或熟悉SQL编程,熟悉MySQL,SQLite者尤佳;
5. 能熟练查阅英文编程资料(如MSDN),具有良好的编程规范并能指导他人;
6. 对互联网行业充满热情和兴趣,乐于助人,喜欢音乐者尤佳。

PHP 工程师

1.两年以上互联网应用开发经验;
2.熟悉PHP.MYSQL.LINUX.Apache.Janascript.AJAX;
3.有大型网站架构、系统优化,SEO工作经验优先;
4.熟悉各种PHP框架优先。
5.喜欢音乐优先。

目前虾米音乐网还要邀请才能注册,我有几个注册名额,基本用没了。还记得我说过的 Paypal 黑帮的故事么? 新的黑帮已经形成规模…

EOF

LinkedIn 架构与开发过程

关心 Web 2.0 的朋友对于 LinkedIn 应该都不陌生。我这个 Blog 上以前也介绍过 LinkedIn 的架构信息。最近, LinkedIn 公司的两位工程师在 JavaOne 上做了两个分享。揭示了更多 LinkedIn 架构方面的技术信息。

1) LinkedIn – A Professional Network built with Java Technologies and Agile Practices

这是我看到的 Web 2.0 公司中第一个完全拥抱 SOA 的。这个文档中大致描述了 LinkedIn 开发过程上的一些经验。

SlideShare | View

News Service Architecture 对于国内鲜果这样的 RSS 工具网站或许能有点参考价值。另外一个值得注意的地方是架构的变迁,随着业务的增长,后端 DB 的变化非常明显。

2) LinkedIn Communication Architecture

这一篇中描述了几次迭代经验,其思路值得借鉴。

SlideShare | View

其中提到了对 CLOB 字段的更新认识。我个人的建议是:不到万不得已,还是别在 Web 应用中用 CLOB 了。

EOF

Linux 的 Out-of-Memory (OOM) Killer

同事在 Linux 服务器上遇到点小问题,我也上去折腾半天。这还是第一次注意到 Linux 这个多年来就存在的特性:OOM Killer 。说白了 OOM Killer 就是一层保护机制,用于避免 Linux 在内存不足的时候不至于出太严重的问题,把无关紧要的进程杀掉,有些壮士断腕的意思。

先要学习点老知识,在 32 位CPU 架构下寻址是有限制的。Linux 内核定义了三个区域:

# DMA: 0x00000000 -  0x00999999 (0 - 16 MB) 
# LowMem: 0x01000000 - 0x037999999 (16 - 896 MB) - size: 880MB
# HighMem: 0x038000000 - <硬件特定>

LowMem 区 (也叫 NORMAL ZONE ) 一共 880 MB,而且不能改变(除非用 hugemem 内核)。对于高负载的系统,就可能因为 LowMem 利用不好而引发 OOM Killer 。一个可能原因是 LowFree 太少了,另外一个原因是 LowMem 里都是碎片,请求不到连续的内存区域【根据我遇到的一个案例,一个猜想是 有些应用一次性请求比较大的内存,恰恰又是 880M 之内的,空闲的(LowFree)不够大,就会触发 OOM Killer 出来干活】。检查当前 LowFree 的值:

# cat /proc/meminfo |grep LowFree 

检查LowMem内存碎片:

# cat /proc/buddyinfo

上面这条命令要在 2.6 Kernel 环境下有效。据说使用 SysRq 的方式更好,不过 Hang 的时候再用吧。参见 Metalink Note:228203.1 。

根据一些文档描述,OOM Killer 在 2.4 与 2.6 上表现是不一样的。2.4 的版本中是把新进来(新申请内存)的进程杀掉。而 2.6 上是杀掉占用内存最厉害的进程(这是很危险的,很容易导致系统应用瘫痪)。

对于 RHEL 4 ,新增了一个参数: vm.lower_zone_protection 。这个参数默认的单位为 MB,默认 0 的时候,LowMem 为 16MB。建议设置 vm.lower_zone_protection = 200 甚至更大以避免 LowMem 区域的碎片,是绝对能解决这个问题的(这参数就是解决这个问题出来的)。

而对于 RHEL 3 (Kernel 2.4) 似乎没什么好办法,一个是用 Hugemem 内核(天知道会不会引入新的毛病),一个是升级到 2.4.21-47 并且使用新的核心参数 vm.vm-defragment 控制碎片的数量。再就是使用 RHEL 4 (Kernel 2.6),这又绕回去了。说白了,如果遇到 OOM Killer ,基本上是低版本 Kernel 设计上有点缺陷。

其它,如果去查询 RedHat 的 Bug 库,会发现不少 Kernel 版本也有 Bug 的。尤其在使用 NFS 的场景。

Tip: OOM Killer 的关闭与激活方式:

# echo "0" > /proc/sys/vm/oom-kill 
# echo "1" > /proc/sys/vm/oom-kill

更多参考信息:

EOF

头疼欲裂,零散记录点东西,备查。

Yahoo! 的数据仓库: 世界上最大最忙

微软对 Yahoo! 的收购持久战可能让很多人都新闻疲劳了。但今天看到的这个关于 Yahoo! 的技术新闻还是值得看一下的:Size matters: Yahoo claims 2-petabyte database is world’s biggest, busiest 。Yahoo! 的 VP Waqar Hasan 在文中披露 Yahoo!的数据仓库当前容量为 2PB。用于分析每月5亿的用户访问行为,每天处理 240 亿次的事件,号称世界上单个最大、最忙的数据库。

尽管有的数据仓库容量要比雅虎的大。但那些 DB 或是存储非关系性数据,或是存储的压缩后的原始数据,不能进行即时分析,雅虎之前的也有数百 T 这样的数据。眼下 Yahoo!数据仓库存储的是结构化、可分析的数据。预计下一年可能膨胀到数十 PB 。eBay 号称数据总量有 6PB , 不过根据一些消息来看,单个最大的 DB 只有 1.4 PB。

Yahoo! 在 2005 年买了一家叫 Mahat Technologies 的初创公司(就是 Waqar Hasan 操刀的),这家公司以 PostgreSQL 数据库为基础,开发了一个新型 DB,其特点是 基于列 的而不是 基于行 的模式。不难理解,这样数据写入的速度会慢下来,但是读取的速度会快很多【去年的侠客行上,雷鸣在演讲的时候讲过他在百度的时候做的一个优化的例子。和这个思想非常相似,所以当时我说对我”有启发“】。Yahoo! 买了之后,对该产品进行了持续性的改进(内部代号: ELCARO ?) ,比如压缩,并行处理能力加强、优化查询等等特性的添加改进。而针对使用者的接口仍是 PostgreSQL 。这应该也算 PostgreSQL 在顶级企业又一个成功案例。

这么大的数据库并没有采用传统的 SMP 架构构建,而是采用普通 PC 作集群(用了不到 1000 台) 。很明显这是 Share Nothing 而不是 Share Storage 的 DB 集群。通过上述独特的设计方式,能够对此海量数据进行有效的分析,这是个不小的技术革新,也是与 Google Map Reduce 完全不同的计算模式。

让人感慨的是 关于世界上的超大数据库 一文中罗列的数据,现在看起来已经并不惊人了。以前总说信息爆炸,这个时代刚刚来临。

EOF