11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

黄晶谈人人网架构

  • 2010-12-27
  • 本文字数:3011 字

    阅读完需:约 10 分钟

在 2010 年的 QCon 北京大会上,InfoQ 的编辑对人人网产品技术高级总监黄晶进行了采访,其中他谈到了关于人人网从校内到现在所做的架构上的转变,还谈到了人人网创建并使用的两个开源项目。

黄晶,清华大学计算机系硕士,曾在天人互动游戏公司、空中网、千橡互动任职,现任千橡互动集团人人网产品技术高级总监,负责人人网产品规划和研发。投身 Web2.0 和 SNS 事业,秉承以用户价值为核心的理念,推崇以简约架构取得最大收益的技术路线,积极推动互联网开放平台和开源项目的发展和应用,带领人人网产品技术团队,实现人人网的稳健高速发展。

InfoQ:大家好,经常上 SNS 社区的人,都应该知道校内网,而现在校内已经改名叫做人人了。今天我们有幸请到了人人网的黄晶老师,来跟我们分享一下人人网在技术架构方面以及他们最近做了两个开源项目相关的一些经验和知识。

黄晶老师你好。

黄晶(以下简称黄):InfoQ 的朋友们大家好。

InfoQ:大家都知道,原来人人网的名字叫校内,而现在叫人人,从最早的校内到现在的人人网,在这个不断进展的过程中,您在架构上做了哪些改进呢?

黄:因为校内的发展过程非常迅速,几年之内翻了好多倍,它的技术架构也随着这个需求也有很大的变化。

在开始的时候,校内是使用比较简单、比较典型的技术方案来实现的一个架构。然后,随着规模的扩大和一些特殊的应用的场景的需要,我们逐步地、越来越多地用到了自己开发的一些系统,以及自己开发的一些框架。比如说我们有一套非常完善、非常庞大而完整的中间层系统和架构,还有用户处理的系统,这些都完全是由我们自己开发的,而没有其它可以借鉴的一些产品。这样的系统可能我们在几年的积累下,已经逐步完善。像存储,以前用的是简单的数据,分布式存储。而对于 WEB 开发的框架我们也根据自己产品的需要,开发了一套自己特有的 WEB 开发框架,其中有一些系统,我们考虑是为更多人所用,大家一起来完善它,就考虑把一些系统开源化,让大家一块把这些做得更好。

InfoQ:应该说人人网的技术实力方面应该是非常强,而且对技术方面的投入也非常大的。

黄:我们在技术方面做了非常大的投入,我们公司的文化叫做极致文化,就是特别赞赏那种钻在技术里面,不考虑其它事情,想把技术做到极致的那种人。

InfoQ:您以及您带领的团队里会有很多很多的这种人?

黄:对,我们很多人都是那种每天钻在技术里面非常陶醉的那种人,我们觉得如果想把 SNS 这个事情做好的话,是需要很多这样的人。

InfoQ:都是非常快乐的程序员,我想问一下咱们现在的架构您觉得里面做的比较完美,比较满意的是什么地方?

黄:我觉得我们有一个比较独特的、自己开发的中间层系统,这个系统完成了大量的后端服务器需要处理的一些工作,包括缓存,包括一些复杂的业务处理,包括搜索也集成在里面。这些系统都放在我们这样一个中间层系统里面,这个中间层系统本身具有高可用性,可以灵活的拓展,增加服务,增加相对性的服务,可以用很少的代码量来完成里面的很多的分布式管理和内存方面的分配管理,这些都做了很长时间的积累,这个可能是我们比较大的技术方面的积累。

InfoQ:那咱们维护工作平时复不复杂?

黄:维护工作还是有一定复杂度,因为我们的业务是不能中断的,我们经常有很多的维护工作,既使是你的系统设计可以在高可用性下切换,你也必须在低负载的情况下去切换,那样风险比较低,我们很多的工作就是,除了开发之外,还经常半夜里要更新系统,要切换服务器各个方面的管理工作,其实还是比较辛苦。如果把这件事做成自动化有很大的风险,因为里面有很多会误判的情况下会有一些振荡,这个风险很大,我们还是半自动的一个过程。

InfoQ:对咱们的用户特别负责一个态度。

黄:我们工程师很多都是夜猫子。

InfoQ:那您觉得现在的系统里面会对有一些方面还不是很满意,需要改进的地方呢?

黄:我觉得我们现在是有一些地方我们的系统还需要完善,比如说在某一些数据一致性方面,我们在不同的地方之间还是不能保持很高的数据一致性,这样对以后变成多个机房工作镜像同步关系的时候,可能会有一些阻碍。我们将来的发展方向应该是会拥有多个核心节点的机房,我们要解决这个问题,首先就要解决数据一致性性,也就是数据同步方面的一些问题,这需要一个比较好的分布式系统的设计去完成。

InfoQ:也就是说以后咱们人人网的服务器,不一定全部集中在北京,可能集中在全国各地,然后大家协同来做分布式的操作?

黄:因为考虑如果是一个地方,现在地震比较频繁,如果是地震或者是火灾的话,你的核心节点不能只依赖一个地区。

InfoQ:我刚才跟那个黄晶老师交流的时候,黄晶老师提到,最近在做两个开源项目,这两个开源项目您给我们简单介绍一下吧?

黄:这两个项目其实也是我们在业务的需求下催生的,一个开源项目是分布式的 key-value 存储系统。这个项目其实有很多类似的开源项目,包括这个 Cassandra 等等,那么我们也是在经过需求分析之后,觉得这些项目多少都无法完全适合我们的场景,所以对于我们这个项目,我们把它做成一个比较灵活的,他下面的存储是可以用文件系统,可以用 MySQL,也可以用 Cassandra 这样的系统,上层的管理要满足我们的需要,待会我会讲一下这个开源项目,我们也有这个开源项目的介绍,我们也有这个团队的一个博客,ugc.renren.com,大家感兴趣的话可以去看一下。另外一个我们打算开源的项目,是我们的一个 Web 开发框架,这个开发框架是 Rest 风格,比较简洁,比较适用于互联网的产品,它可以大大的减少开发 controller 这个层面的代码量,然后可以非常方便的去配置一些像 O-R Mapping 这样的机制,然后与它相结合。我们还有另外一个在 Model 层面的,很分散的、分片的大型数据库集群,当访问数据库的时候,也有和它结合很好的另外一个组件,将来如果是能够做的非常通用的话,可配置的话,我们也会考虑到开源。它是类似于 MySQL Proxy 访问数据库中间层的一个组件,它会负责把这些请求分发到数据库集群中。这几个结合起来,做比较规定规模的 Web 应用,应该是比较适合的。所以我们把这个项目开源,也是希望更多的人能够来使用和完善它,能够让更多的人在这个方面少走一些弯路,我们这几年探索过来,经过非常大量的重构。

InfoQ:您希望把你们宝贵的经验,宝贵的知识和全国甚至全世界的程序员一起来分享。

黄:因为我们也用到了很多开源的项目,基本上在开源这个框架上面做起来的,所以我们觉得这是一个很好的事情,大家一起分享一起来完善一些东西。

InfoQ:我想知道咱们的 key-value 系统,是基于什么样的需求呢?人人网和 FACEBOOK,在什么地方差别特别大,导致咱们觉得他们那种解决方案不适合人人网呢?

黄:对于分布式系统,有一个理论叫 CAP 理论,有的系统可能在 C 和 P 方面做的比较好,这 CAP 三个,一个是高可用性,一个是节点容错性,一个是一致性,很难做到三个同时满足的,必须有折中。有的时候,有些系统在不同的取舍方面会有一些区别,这个区别就导致可能有时并不是非常适合,我们自己也希望能够对一个系统做到足够熟悉,在需要的情况下,我们可以直接去改造它的核心部分。基于这些考虑,我们就根据自己的需求,同时去学习别人的思想,做了一个新的系统。

InfoQ:在 CAP 这三个中间,做了针对人人网的最好的平衡。

黄:对。

InfoQ:好的,感谢黄晶老师接受我们的采访。谢谢!

黄:谢谢。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-12-27 00:009392
用户头像

发布了 340 篇内容, 共 120.3 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)

刘悦的技术博客

人工智能 tensorflow chatbot 聊天机器人 keras

没能进入大数据领域

escray

面试 面经

如何通过 Serverless 轻松识别验证码?

Serverless Devs

人工智能 Serverless 云原生

智慧社区综合管理平台搭建,智慧平安城市建设

13530558032

区块链溯源平台优势,区块链溯源系统解决方案

13530558032

英特尔力邀150家产业大咖推动Evo严苛认证,打造PC界的奥斯卡

新闻科技资讯

移动生态盘点与HMS生态解析

华章IT

华为 Android Studio 移动开发 HMS

周立齐出任电动车联合创始人:网红经济背后的病态消费心理

石头IT视角

扒开 SqlSession 的外衣

田维常

mybatis

字节二面跪拜“Redis源码”后,面试官直接推荐这份笔记!真是NB

比伯

Java 编程 架构 面试 程序人生

微服务架构思考 - 理清楚,管起来

jorden wang

智慧仓储管理系统,是否能解决购物狂欢节后新一轮爆仓危机?

一只数据鲸鱼

物联网 数据可视化 智慧物流 智慧仓储

高空立体云防控系统搭建,智能化平安小区建设方案

t13823115967

平安小区 智慧平安社区建设

为什么说rollup比webpack更适合打包库

fengxianqi

大前端 Rollup webpack

九环智能合约开发

V19927655815

APP开发

星域母子币系统软件开发|星域母子币APP开发

系统开发

应急指挥中心平台搭建,移动可视化指挥解决方案

t13823115967

可视化数据分析搭建 应急指挥

一线大厂开源三份JDK+Spring+Mybatis源码笔记

Java架构追梦

Java spring 源码 jdk mybatis

云视频技术领军人赵加雨:如何提升在线教育课堂互动体验

拍乐云Pano

音视频 在线教育 RTC 互动课堂 白板

抢先体验全新升级版Eternal Wallet!

Geek_c610c0

数字货币 数字货币钱包开发

如何基于 SDK 快速开发一款IoT App 控制智能灯(iOS 版)

IoT云工坊

ios App 物联网 IoT sdk

从MongoID的生成讨论分布式唯一ID生成方案

行如风

雪花算法 分布式ID 全局唯一ID 流星算法

从一个模糊词查询需求的处理方案讨论到一种极速匹配方案的实现

行如风

模糊匹配 双数组trie树 ahocorasick ac自动机 黑名单过滤

快速接入 | 从 0 到 1 构建语音聊天室

拍乐云Pano

音视频 RTC 实时语音 语音聊天室 语聊房

重磅|中国PostgreSQL分会与腾讯云战略合作协议签订

PostgreSQLChina

数据库 postgresql 软件 开源社区

直播中不可缺少的一环-rtmp直播推流

anyRTC开发者

音视频 WebRTC CDN RTC RTMP

限时!字节Java程序性能优化宝典开源,原来这才叫性能优化

996小迁

程序员 面试 性能优化 笔记

什么是浮点数?

Kaito

计算机基础 浮点数

盘点 2020 | 10 天开发前台系统技术系列

老魚

CSS 大前端 全栈 js 盘点2020

黄晶谈人人网架构_REST_侯伯薇_InfoQ精选文章