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到内部实现原理,甚至到一些源码的细节。
作者:人人网架构师 张洁 人人网UGC团队博客首发
分享到:
相关推荐
人人网在技术选型上非常注重开源软件的利用,这个列表揭示了他们使用的一些关键组件。首先,人人网采用MySQL作为关系型数据库存储系统,他们的DBA团队具有强大的管理能力,处理大量的MySQL服务器,以满足高并发和...
《安卓开源项目人人网客户端源码深度解析》 在当今移动互联网时代,Android作为主流的智能手机操作系统,其应用开发技术的探索与学习始终是开发者关注的焦点。本篇将深入剖析一个独特的开源项目——"安卓开源项目...
"安卓Android源码——[安卓开源]高仿人人网客户端.7z" 这个标题表明我们正在处理一个与Android操作系统相关的开源项目。它是一个高仿制的人人网客户端应用的源代码,这意味着开发人员可以研究、学习或者基于这个源码...
【压缩包子文件的文件名称列表】:“[安卓开源]高仿人人网客户端”提示这是一个面向Android平台的项目,可能包含以下内容: 1. **源代码**:项目的核心部分,包括各种类和接口,用于实现人人网客户端的各种功能,如...
基于开源项目-晴枫人人网下载器(witmax.cn),重写了爬虫分析代码和下载策略,增加了一些功能,解决了60张上限的问题。 软件需要.NET Framework>=3 Microsoft .NET Framework 4(独立安装程序) 欢迎反馈使用问题和...
【Android人人网客户端源码】是一个面向Android平台的开源项目,它揭示了人人网移动应用背后的编程实践和技术实现。这个源码提供了深入学习Android应用程序开发、社交网络集成以及客户端优化的宝贵机会。以下是对...
- **功能简介**:ROSE是来自人人网的一个基于Spring的开发框架,旨在简化开发过程,提高开发效率。 - **应用场景**: - **简单DAO**:简化数据访问逻辑。 - **Sharding**:虽然提到需要进一步加工,但可以用于数据...
【标题】"DISCUZ NT整合人人网登录详解及其整合完整程序"涉及到的是将流行的社区论坛软件DISCUZ NT与人人网(Renren.com)的社交登录功能进行集成的技术实践。这种整合允许用户使用他们在人人网的账号直接登录到...
### Java技术概述 #### 命令别名与历史命令 ...总之,Java不仅改变了人们编写和使用软件的方式,还对整个IT行业产生了深远的影响。从简单的网页应用到复杂的企业级系统,Java都发挥着不可或缺的作用。
《UCHOME 2.0整合新浪微博QQ人人网GBK UTF8插件详解》 UCHOME是一款广泛应用的开源社区建站系统,它为用户提供了构建个性化社交网络的平台。在这个数字化时代,社交媒体的影响力日益增大,而UCHOME 2.0正是为了帮助...
3. **数据存储**:人人网客户端可能使用SQLite数据库来存储用户信息、好友关系等数据。开发者可以使用ContentProvider进行数据访问,这在Android的多组件间数据共享中非常常见。 4. **网络请求**:为了获取和更新...
在开源软件和硬件的世界里,核心理念是“人人可用、人人可探、人人可改、人人可再分发”,这也是开源文化的核心价值所在。 刘靖峰的愿景是连接两大充满创意却互不往来的群体——硬件工程师和软件工程师。通过将软件...
人人网作为一个大型社交网络平台,其业务规模庞大,包括每月数千万活跃用户、大量照片上传、日常新鲜事儿发布以及实时通讯软件人人桌面等。面对如此复杂的业务场景,原有的架构面临着巨大的挑战,主要体现在系统异构...
Raspberry Pi是一款开源硬件,它具备开源软件和开源硬件共有的特点,即: 1. 人人可用:任何人都可以自由使用它做任何目的的事情; 2. 人人可探:任何人都可以探知其工作原理; 3. 人人可改:任何人都可以自由修改它...
4、修复人人网和网易的授权问题;v2.1.3更新:1、增加全屏模式,非全屏模式下隐藏左下角开关;2、增加语言切换功能;3、增加爱动漫频道;4、皮肤更新,修复部分bug ; v2.1.2更新:1、提供web版的管理后台;2、增加...
它具备四个基本特征,即人人可用、人人可探、人人可改和人人可再分发,这不仅符合开源软件的原则,也体现了开源硬件的普及和易用性。 Cubieboard在硬件方面与树莓派相似,但性能、接口和扩展性等方面有所超越,特别...
在人人网工程师的访谈中,我们可以提炼出以下几个关于移动Web开发架构的关键知识点: 1. 移动终端的发展趋势:移动终端经历了四个阶段的发展,从最初的功能终端,到智能化终端,再到互联网和平台化终端,直至目前向...
Apache标签可能意味着项目中使用了Apache开源软件或遵循了Apache许可证。例如,可能使用了Apache HTTP Client库进行网络请求,或者使用了Apache Commons等工具库来简化开发工作。 在压缩包内的"高仿人人网客户端...
“逐鹿”围棋是一款支持人机对战、机器自战、人人对战以及网络对战等对局模式的围棋软件。该软件采用开源的围棋算法程序GNUGO作为后台算法引擎,负责围棋落子算法、局势判定和胜负断等。GNUGO棋力强大,目前是世界上...
在“人人测试端”中,开发者实现了与人人网API的接口对接,允许用户登录、获取好友列表、查看好友动态等功能。 在压缩包文件列表中,“renren”很可能是指源代码文件夹或者编译后的APK文件。如果是源代码,初学者...