FinOps有望降低企业50%+的云成本! 了解详情
写点什么

人人网专家谈开放平台中的“防癌系统”和敏捷

  • 2011-12-27
  • 本文字数:5179 字

    阅读完需:约 17 分钟

【编者按】:本月 12 月 21 日,人人网召开了开放平台发布会,相关负责人与大家分享了人人网开放平台的系列创新,解读了人人网凭什么更开放?为了让大家对人人网开放平台更加了解,会后 InfoQ 对人人公司副总裁黄晶,开放平台项目经理李波进行了专访。以下是采访的具体内容:

InfoQ:请两位做一下自我介绍。

李波(L):我是人人网开放平台的项目经理李波,大家好。

黄晶(H):我是人人公司副总裁黄晶,负责产品技术运营方面的工作,包括开放平台。

InfoQ:人人网开放平台从 08 年开始起步,应该算是咱们国内开放平台的先行者。如今发展的规模大概有多大?

H:刚才在会上我们介绍了一下,目前人人网站内有超过 2000 家公司提交了上万款应用。然后,站外的采用我们人人帐号登陆的这个应用的数量现在是大约?

L:也有将近七八千家吧。

InfoQ:那么面对现在亿级的海量活动用户,人人网开放平台在可靠性方面采用了哪些关键的技术呢?

L:其实在关键性技术上,我们自己开发了一些系统,比如说类似于防癌系统,主要是应对海量用户的访问的时候,对平台整体系统的稳定性造成的冲击,能够及时的切断用户的一些不正当访问,以及 API 调用出现的问题,防癌系统还是比较给力的。

InfoQ:您方便再详细的介绍一下吗,比如这套系统的原理是什么,怎么运作的,大概用到了哪些算法,或者说架构之类的?

L:我们这套方案系统是这样,它主要是在我们 API 的一个中间层做监听,监听结果的调用量,比如说某个调用猛然间出现一个突增或者突减,这套方案系统应该能够监听到,很快的做出响应,来切断它,或者说通知我们人为的或者自动的来切换,大体上是个这样的东西。

H:因为开放平台的面向外部提供 API 的集群是一个统一的集群,比如某一些第三方在调用方式上有不太正确的,或者有突发性的增长的话,它有可能因为一个第三方影响到其他的人的调用,所以我们会监控这个东西,相当于是在中间做了一层监听和比较及时的预警。然后,人人网开放平台的整体架构来说,从整体上来说和人人网整体是不分离的,人人网本身的架构以前我们也做了很多的介绍,比方说我们在这么多的用户的情况下,大家产生的这个信息流,然后大家之间的关系,都是通过我们自己克服了很多问题,然后开发了很多分布式的系统来解决的,整个人人网的架构其实还是有很多可说的点的。

InfoQ:人人网开放平台的架构这些年的发展,产生了一些比较大的变化,那么接下来想问一下,主要的变化有哪些?然后这样做的驱动力大概是什么呢?为什么要做这些变化?做这些调整以后能给咱们带来哪些价值?

L:架构是这样,最开始我们开发平台的时候,就是做了很简单的 API 的一些调用,在安全性等方面做的也不是很到位。但是,紧跟着我们越来越关注用户的授权以及用户隐私方面,接下来我们采用的 OAuth 2.0 更加关注授权方式以及安全策略,这是我们最大的一个变化。整体的架构就是说,其实我们在内部的 wiki 上会有一张整体的开放平台的架构图,那个架构图是我们一个架构师所设计的一套架构,最底层的可能就是一个 API,开发者可以直接在 API 上来调用,紧接着再上边有一些封装,封装的东西包括 SDK,还有什么 widget API,再往上一层就是开发者可以拿这个东西再做一层封装,都没有问题,这是整体的一些架构。我们是想让第三方能够在各个层面使用,就是比如说我技术能力比较强,那可以直接调用 API,我技术能力比较弱,那可以直接调用 SDK。那我还想在你的开放平台基础上,总觉得你做的不好,那我可以再做封装,这是我们更加 Open 的一个技术架构。

InfoQ:开放平台与最终用户的桥梁是第三方开发者和服务提供商,人人网是如何吸引这些对象的呢?

H:开放平台必须是一个多赢的局面才能吸引到这些开发者,从最开始来说,比如说我们平台开放,第一批的开发者,就是看到了人人网有大量的用户,然后借助这个用户的关系,可以得到很好的传播,他们好的想法可以得到大量的用户,这个是最直接的一个原因,我们能够给他带去用户和流量;第二点原因就是说我们有很多人人网特有的一些 API,比方说我们的这个 LBS API,我们提供的各种相册什么的 API,第三方不用去关心太多的(技术细节),比方说他要做一个应用,让用户去网上分享照片,或者让用户去网上查地图的话,他用人人网的 API 就可以做了,他不用自己去解决很多技术上的难题;第三点就是说我们也提供了很完善的支付的体系,很多典型的游戏在人人网上是可以挣到钱的,可以支撑他们进一步发展。综合这几点就是说,在一些技术能力上的满足,然后让他们获得用户和流量,第三点让他们赚到钱。

InfoQ:人人网的技术专家在 QCon 杭州技术大会上做了有关开发平台安全机制的演讲,获得了我们参会者的好评,除了安全性,还有哪些非功能性的需求是咱们开放平台比较重点关注的?

L:当时去杭州做开放平台安全性机制的演讲是关于 OAuth 方面的,是我一个同事,除了 OAuth 安全性这方面,我们觉得,非功能性需求主要是满足第三方开发者,对新的业务的一些拓展,比如说我想用到人人网上圈人功能。如果他的应用里边有需求,可能需要开发平台来提供,开始的时候我们是没有提供的。所以开放平台以后更多的在业务上的关注,可能在 API 这主要是能开放更多的人人网上的 API 的接口,比如说我们最近开放了圈人 API,还有配置 API。

H:重点就是说我们会去关注开发者的开发门槛,包括我们面向开发者的接口,然后提供给开发者的各种 widget 和 SDK,实际上都是在想尽办法帮他们来降低开发的门槛,让他在手机上用简单的几句代码就可完成一项功能。实际上这些 API 的功能我们都是有的,但是为了让开发者更简单的能够接入,他简单的加几行代码,就可以让这个应用带上社交化的功能,然后可以通过比如分享到人人之类的机制能够获得更多的用户,让他为此付出的这个开发成本非常低,这个是我们比较关注的。

InfoQ:咱们现在有一个比较热的词,叫 BigData,就是在海量数据的并发,还有实时处理这方面,现在有没有面临一些技术上的挑战?人人网开放平台,面对这些挑战是怎么解决类似问题的?

L:人人网本身有一套自己的并发处理机制,开放平台在此基础上做了一些优化。海量数据的并发处理上,用到了一些开源的项目,比如 memcache 和 redis 等,做了一些二次开发,逐步完善中。

H:人人网数据量的特点是热点不是特别集中,需要多层的缓存。比如速度要求最快的地方用 redis 做缓存,下面用到了 SSD 等,还用到 MySQL 和 Mongodb 等。在大数据量、热点又比较分散的情况下,你只有靠多级缓存来提升效率,然后在比较关键的地方,像实时性强、业务逻辑有比较复杂的地方,我们会在开源项目的基础之上,做定制化的开发。比如我们有一个分布式中间层,你可以把它视为一个大的带有人人网业务逻辑的缓存,它是我们自己搭的一个集群,数据在内存里能够交换、运算。在新鲜事体系中,每天分发的新鲜事的条数可能是百亿条的规模,操作很频繁,我们自己设计和开发了这样的集群。

InfoQ:目前国内外有不少的开放平台,刚才咱们在发布会上也提到了。竞争相对来说还是比较激烈的,能不能再解释一下,您认为应该如何在这种环境中,树立人人网的开放平台这么一个品牌?

H:我觉得首先有一点,每个开放平台的能力是不一样的,人人网有他的特点。从用户群体上看,它最早是从中国大学里走出来的,现在扩展到了白领和高中各个阶层,用户的层次是比较高的,使用互联网和接受新事物的能力是比较强的。由于用户的素质比较高,相应的支付能力也比较强。另一个,产品的特性来讲,我们强调真实的资料和人际关系,可以让很多好的想法在上面获得更好的效果,不管是社交游戏还是社交应用,构建在真实的关系上,它的传播度和信赖度要比普通的非真实关系高得多。第三点,人人网在很多产品上有布局,在无线互联网上有大量的用户,比如在在地图 LBS 上面,在很多基础设施上,我们也有投入,还有网络相册等产品,所有这些功能加在一起,可以让第三方做的事情得到更好的支持,尤其是手机方面。

InfoQ:刚才讲到大数据的时候,提到了人人开放平台用到的开源工具,你们对开源工具有怎样的评价?

L:我们的确采用了一些开源工具,比如 memcache,它是最常用的并发处理工具。我们认为开源工具有其精华的部分,可以降低我们开发任务的一些成本,可以很快的应用到其中的一些功能,把需求很多的开发出来,节省了很多人力。但是针对具体的开放平台的特别任务,我们可能还是要做二次开放,有些开源工具不能完全适合我们。

H:刚才李波也说了,实际上我们借助了很多开源的力量,比方说 MySQL,这是我们用的最多的数据库技术。在采用开源项目的时候,有几个原则,我们很谨慎,首先在一些不重要的、压力不大的产品中试用,然后逐步推广。开源项目是有风险的,找到适合你的或者说经过验证的。我们曾经考察了某个系统的许多方案,其中有一个各方面都很强,但是后续开放没有很好的支持,所以是有很大风险的。另外,我们也尽可能的回馈开源社区,会把一些项目开源,提交补丁等等。

InfoQ:目前有没有提交到开源社区的产品或者说工具?

H:我们以前有一个 Web 开发框架现在是开源的,有部分人在用,我们有一个 Kay\Vlaue 系统,现在因为做了很多了,可能并不一定有很多人用。比方说用在 lucene 的切词组件,我们会把它开源,还会继续做下去。

InfoQ:就我想问一个关于项目管理的问题,现在开放平台的团队采用的开发方法是传统的呢,还是敏捷的模式呢,在这方面有没有可以分享的一些经验?

L:开放平台最开始的时候,因为人员比较少,可能对开放平台的一些业务具体了解不是太全面,所以最开始我们采用比较传统的。产品需求提过来以后,我们紧跟着就是开始做,没有一个整体的规划性,在一些时间点和把控上都是有很大变动,可能最终做出来的东西,和原先设计的东西是有很大的不同,随着开放平台业务线开展的越来越多,我们在中间也采取了一些方法,比方说采用 scrum 敏捷式开发,因为我们越来越意识到,开放平台的很多的业务是短平快,我们采用那种迭代式的开发,就是争取能够在短时间内能迭代一个版本,能让团队更加的有成就感,能够不断的发现问题,还有整改问题。其实在真正的一个项目立项阶段,我们现在开放平台推出项目管理部这么一个概念,希望能把产品和技术能够真正的融合在一起,因为产品线越来越多,业务线越来越大,需要有一个人能够把产品、技术、人力资源等把控好,这样能保证我们的项目能够按时的完成。

H:基本上作为一个互联网公司如果你不采用敏捷开发模式,那就是死路一条。所以每家公司可能都在探索适合自己的开发模式,不一定某一种模式就一定有效,或者说完全照那个去做,或者说你照着教科书去做的话,未必是对的。比方说我们也会经常的和像 Face Book、Google 这样的公司交流他们的开发模式,他们可能有他们自己的一套。开发模式就涉及到产品技术之间的配合,其实可以通过一些方式更好的去消除问题,然后让整个开发更加有序,让大家的工作更加高效配合起来,更加无缝一些。比方说我们也会看一些比较新的开发的理念,比方说我们会在产品的设计的初期,把技术引入进来,然后产品会多拿出一些方案做高保真的模型,让客户去试,然后保证这个在这个版本的需求是比较这个稳定的,然后进入一个迭代之后,这个需求就不会再变更,然后技术去按照 scrum 的方式去把它做出来,然后再进入下一个迭代。总之我觉得这个开发模式不是一个很固定的,你比如说 XP 或者 scrum 英文就一定好使,你还是要找到适合你的这些人,然后适合你的业务特点的一些模式。比方说在我们的一些产品线上就很适合用 scrum,比方说它是客户端开发的,它是一个版本一个版本非常有序,有一些像偏网页或者一些新产品,它要不断的摸索,上线的时候可能要根据数据的反馈来进行下一个版本迭代,这个迭代周期要求非常短,响应非常迅速,可能这两个线采用的模式就是不一样。

InfoQ:最后请谈一谈人人网开放平台的发展规划?

H:第一点,我们会坚持开放的心态,不排斥和任何人的合作。只要他能够为用户提供有价值的服务、产品。第二点就是说我们会开放更多的技术能力,尤其是在移动互联网上面。比方说我们其实从今年初开始逐步的放开了很多以前限制的比较严格的一些接口,像用户发照片,我们后续还会开放,比如说地图类似这样的 API,这些 API 其实有很多是非常适合在手机上去用的,所以我们会进一步的去开放这方面的能力。第三点就是说,我们会给想办法给这个开发者更多的回报。有一些开发者可能比较看中的是他能够得到用户和流量,比方是一个垂直的一个网站,或者是想把它做大的,有些开发者可能是游戏开发者,他比较看重的是一款游戏能够多快赚到钱,所以我们会给他们更多的这两方面的回报。

InfoQ:谢谢两位接受采访。


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2011-12-27 00:002458
用户头像

发布了 501 篇内容, 共 239.7 次阅读, 收获喜欢 55 次。

关注

评论

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

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之二叉树

js2030code

JavaScript LeetCode

Wallys/Introduction of DR9074 series network card/qcn9074/qcn9072/qcn9024/industrial M.2 card

wallyspipi

QCN9074 QCN9024 QCN9072

扒去Spring事件监听机制的外衣,竟然是观察者模式

程序知音

Java spring ssm Java后端 后端技术

10月月更获奖名单出炉啦!快来看看你上榜没有!

InfoQ写作社区官方

热门活动

以用户为导向,vivo打造安全新范式

Geek_2d6073

MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇

MASA技术团队

blazor MASA MAUI Xamarin MASA Blazor

JavaScript刷LeetCode拿offer-二叉树层序遍历篇

Geek_07a724

JavaScript LeetCode

Redis6.0新特性、剖析线程模型(单线程和多线程)

C++后台开发

redis 多线程 后端开发 单线程 C++开发

java企业级开发中常见的注入方式

千锋IT教育

Spring Boot框架下实现Excel服务端导入导出

葡萄城技术团队

前端 Excel 控件

还在为数据库事务一致性检测而苦恼?让Elle帮帮你,以TDSQL为例我们测测 | DB·洞见#7

腾讯云数据库

数据库 腾讯云 数据一致性 tdsql 腾讯云数据库

2 分钟,教你用 Serverless 每天给女朋友自动发土味情话

阿里巴巴云原生

阿里云 Serverless 云原生

直播CDN调度技术关键挑战与架构设计

京东科技开发者

架构 系统架构 直播 CDN加速 CDN技术

java Apache poi 对word doc文件进行读写操作

@下一站

编程 原创 word Java core 11月月更

大数据 Hadoop 的五大优势

千锋IT教育

鼎茂科技获得阿里云首批产品生态集成认证,携手阿里云共建新合作

阿里巴巴云原生

阿里云 云原生 加速器 企业招募

【倒计时4天】杭州专场-单元测试产品体验样板间,等你加入!

TRaaS

挖到宝了!2022阿里大佬手写“精品”Sping Boot学习笔记

小小怪下士

Java 程序员 阿里 springboot

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

Nftea: 世界杯文化、 NFT与 期权的首度碰撞

威廉META

【Redis】Redis AOF持久化

石臻臻的杂货铺

redis 11月月更

vue和react的区别有哪些,哪个好

千锋IT教育

聚焦年轻消费人群 百草味入围最受“Z世代”喜爱品牌TOP10

E科讯

云原生网关的可观测性体系实践

阿里巴巴云原生

阿里云 云原生 云原生微服务

Kotlin变量的空安全(Null Safety)

子不语Any

android kotlin 11月月更

JavaScript刷LeetCode拿offer-js版字典

Geek_07a724

JavaScript LeetCode

线性稳压电源和开关电源,到底有什么区别?

元器件秋姐

电源电路 元器件采购 元器件电商 元器件知识 华秋商城

首批!腾讯云通过金融开源技术服务能力评估

腾源会

开源

一路同行:开发者与华为云的2022

脑极体

【Go电商实战05】结合项目解答使用Go中间件遇到的问题:中间件的概念和应用

王中阳Go

golang 学习方法 中间件 11月月更 电商实战

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
人人网专家谈开放平台中的“防癌系统”和敏捷_编程语言_崔康_InfoQ精选文章