MySQL
关系型数据库存储系统,咱们的DBA团队很强大,每人管理上百台MySQL服务器,其余就很少说了,网上资料太多了
Tokyo Cabinet
一个key-value的存储引擎,日本人开发,国内不少公司也开始使用,咱们内部不少地方也用它来代替MySQL来作存储,好比咱们的搜索结果页的用户资料,就是用它来作一层MySQL外的冗余存储,目的是加快搜索结果页的显示。在key-value并须要持久
存储的场景下,用它比MySQL更有效,Cabinet自己只是一个存储引擎,没有网络处理能力,你能够用它做为本身的某个系统的下层存储引擎,更好的是搭配Tokyo Tyrant使用。
Tokyo Tyrant
一个支持Memcached传输协议的网络接口,由Tokyo Cabinet的做者开发,目的是为Tokyo Cabinet提供网络接入能力,即Tokyo Tyrant处理网络链接,协议解析,而后调用Tokyo Cabinet的API来完成持久化存储。
ICE
一个跨语言的网络通信框架,框架自己提供了强大的通信能力,管理工具,负载均衡方案,其跨语言能力也是一个很大的亮点,基于这个框架之上,咱们选用合适的语言来提供合适的服务,好比咱们使用C++来开发Cache服务,使用Java来开发一些逻辑服务。框架自己能够很重,也能够很轻,具体要看你怎么用:)
Memcached
一个纯内存的key-value的cache系统,高效、稳定,使用普遍,若是你连它都没据说过就太out啦,memcached自己不具有分布式能力,须要依靠Client来实现分布,这里强调一点的是,你应该选择一致性Hash来作key的分布。各类语言的client都有,咱们使用spymemcached做为java的Client,spymemcached是一个异步的NIO的memcached client,对网络IO的处理很是的精巧,也更加高效,同时由于提供异步操做方式,可让你对Memcached的操做有更好的控制能力,Memcached到1.4.0版本以后,开始支持binary protocol,spymemcached对其也支持的比较好,使用binary protocol能够提升对协议的解析效率和网络IO的读写效率。
上面说到咱们使用ICE本身开发了Cache服务,为何咱们还要用Memcached呢?主要在对Cache的操做粒度不同,Memcached对Cache对象以binary byte做为一个总体来操做,须要频繁的序列化和反序列化,咱们使用ICE提供的Cache服务,能够以Cache对象的一个或者多个字段来操做,好比一个用户对象,咱们能够只更新它的姓名,而Memcached
Nginx
高效、稳定的Web Server,咱们利用其代理能力,作跨IDC的请求代理,同时也将其和咱们的Resin(Java Web 容器)搭配,放在Resin的前面来解决Resin的对网络链接处理能力弱的问题,在一些小地方也用它来作7层的负载均衡
Resin
一个Java Web Server,比Tomcat更高效,是咱们主要的Java Web容器
Squid
代理服务器,咱们用他来作图片文件的反向代理缓存
LVS
能提供4层的负载均衡,高效、高可用,高并发。咱们用他替代了不少硬件的负载均衡设备
Struts
Java web框架,不过这个已是历史了,咱们开发了一套本身的Web框架替代了它,将来咱们也会把咱们的内部的这套Web框架开源出来
Lucence
基于Java的搜索引擎框架,用它咱们构建了一个搜索集群来提供搜人的服务
Netty
一个Java的网络框架,和apache的mina相似,但比mina更高效,咱们用来作一些小的服务
Ganglia
一个监控系统,帮组咱们了解咱们每台Server的资源利用状况
还有些小东西就不列出来了,最后要说的一点就是,对这些开源软件或者系统,咱们都很是的了解,或者说知根知底,从API到内部实现原理,甚至到一些源码的细节。
转载自:http://ugc.renren.com/2009/12/13/a-list-of-open-source-software-in-renren/