对于Pinterest感到非常好奇,有两个原因:首先,我有两个大学同学正在为它工作,他们也是我美国微软的前同事;其次,Pinterest和小米都是2010年出生,目前都拥有数亿用户的公司,业务爆炸性增长的曲线类似,技术属于实用派和开放路线。
1 Pinterest是什么样的公司?
首先介绍一下Pinterest,在最新的估值已经是110亿美元,员工不到500人。Pinterest.com国内就可以访问,但是访问速度太慢,内容不够八卦,不够刺激,华人人迹罕至,主要在美国欧美比较流行。它的功能很简单,就是无穷无尽的浏览图片,一张又一张,像一次次下拉刷新今日头条的新闻一样。但是它的体验却做的很细致,图片的高度相关,朋友图片的动态更新,下滑的微动画效果,图片内识物后的购物欲,给很多女人带来美丽视觉的沉浸感,精致生活的设计梦。
2 一起看看83年的CEO的简历
Pinterest的CEO叫做Ben Sibermann,他是位80后,但经验丰富,眼光独特,下面是他的LinkedIn简历。
Yale University, 本科,1999-2003
Consultant ,董事 ,2003-2006
Product Specialist,谷歌,2006-2008
Tinkering, 创业,2007-2009
Pinterest ,创始人 2009-现在
Ben非常不愿意说Pinterest是一个图片社交公司,他将Pinterest定位为“创意目录“(Catalog of Idea),他希望用户在上面能够找到灵感,不需要输入关键词,不需要订阅任何频道,你总是能够发现你想要的创意。他有句名言:Facebook is about past , Twitter is about Now , Pinterest is about future。小米在创办之初的口号是“为发烧而生”,随着公司产品的丰富,希望能够打造更多的质优价平的新国货,最新的口号是“让每个人享受科技的快乐”。不知道为什么,总觉得小米和Pinterest有些一些可比性:一个为科技青年所爱,一个为文艺主妇热恋。
3 Pinterest的技术范儿
罗嗦这么久,该聊聊技术了,根据9月的公布数据,成立5年的Pinterest月活已经超过1亿用户,主要用户是女性,学校和居家主妇为多,其中美国近7000万用户,总图片超过500亿张。前几个月,小米手机也公布了的手机日活超过1亿了。两者用户量在同一水平上,看看Pinterest技术范儿。什么是技术范儿?就是一个公司的核心业务的技术方案理念,包括公司对技术的态度等。
1. Pinterest ZEN 图存储服务
Pinterest的核心业务就是各种图片,特别是图片后面的各种关系,谁钉(Pin)了哪一个图?这张图被谁钉了?因此,如何设计一个高效的图存储服务是一个核心业务,特别是从1个用户到1亿个用户之间的增长,可靠性和性能会不断成为瓶颈。为此,在借鉴Facebook的TAO(FB的图存储数据服务)的设计思想,Pinterest设计和实现了一个自己图存储服务。不用NEO4J的原因很好理解,数据规模远远超出Neo4J的能力。
它将所有的信息组织成图的结构,例如一个对话消息,可以分解为“用户1234"参加了"对话2345",“对话2345"包含了“消息3456"。每个顶点和边都可以设置多个属性值。这样的所有的业务关系容易扩展,增加业务只是简单的增加一些关系类型,顶点类型而已,不需要像传统数据库一样新建很多表,然后通过主键关联。
ZEN后台的数据持久化是使用HBase,正在实现MySQL的版本。估计是因为MySQL可以提供更多的事务性支持和索引支持。
由于HBase只有Rowkey的索引,因此在边的存储方面,有时是利用构造RowKey中的Schema进行设计。例如,对于一个边的索引,直接利用RowKey的结构组合而来。其实,小米在HBase的二级索引提供了一些解决方案,在更加底层实现了二级索引,Pinterest估计不愿意在底层做太多事情。
对未来的工作,由于ZEN的规模越来越大,在高可用性和一致性之间有着长期的平衡关系。为了改进数据一致性的问题,ZEN提供了一个Dr. ZEN用于非实时的数据扫描,及时修正一些数据一致性的问题,这也是还一些一致性的技术债而已。另外,后来也计划利用MySQL进行数据持久化,估计是看中了MySQL的事务性。最后,在适当的时候开源,期待中!
2. Pinterest的一些开源项目
在Git 上有大约近20个Pinterest的开源项目,大部分是一些小的Utility,有些客户单的Object-C或者JavaScript的东西,另外就是有一些Elixir的小工具,Elixir是一个非常冷门的语言,实际上是在Erlang之上的一个包装后的函数式语言,它利用了很多Ruby的高效语言特性。它有一个开源项目Secor可以持久化一些Kafaka的数据,看起来蛮有意思的,有空试试看。
以下是Git上前10个还在更新的开源项目,大部分更新都在近几个月。工具虽小,但是开源的心意已表。
riffed Provides idiomatic Elixir bindings for Apache Thrift
elixometer A light Elixir wrapper around exometer.
react-pinterest
PINRemoteImage A thread safe, performant, feature rich image fetcher .Objective-C
thrift-tools thrift-tools is a library and a set of tools to introspect Apache Thrift traffic. Python
secor Secor is a service implementing Kafka log persistence Java
elixir-thrift Elixir utilities for working with Thrift
PINCache Fast, non-deadlocking parallel object cache for iOS and OS X
3.Pinterest的部署管理
Pinterest内部有一套自动化部署工具,叫做Teletraan(这是变形金刚中超级计算机的名字,"显像一号"),支持回滚,快速部署(Hotfix),无中断部署,集成测试,可视化,易用性等。并且支持不同的云服务提供商,例如亚马逊云或者谷歌微软云主机。这一技术,各个公司都有,估计都大同小异而已。
从设计的结构来看,还是比较初级和原始的,够用就好。
Teletraan的操作界面,和你们公司的部署系统是不是有些像?
4Pinterest是如何思考变现的?
最后,我是做广告技术的,必须再聊聊Pinterest的变现能。
公司变现方式不明朗会严重影响独角兽的估值,因此各个未上市的公司在讨论用户体验情怀时候,都会积极探索变现之路,大家都希望像Facebook一样,通过移动信息流广告,一日暴富。
目前Pinterest上22-45岁的女性占了总用户数的59%,75%流量来自移动设备。品牌广告的引入一直是Pinterest的重中之中,但是用户浏览内容的分散,又使得品牌的渗入无法集中落地。所以Pinterest的广告,还是希望通过走效果广告的路线,按照点击等动作收费。
目前Pinterest推出以下几种变现方式。
1. Pinterest 商家推广图片
计费方式有两种,都是发生用户动作后计费,动作分为2类
- 参与行为(Engagement),例如Pin,RePin,关闭,点击等 (Cost per Engagement,CPE)
- 前往广告落地页(Click)
2. 苹果系统上的应用分发
2015年2月,Pinterest和苹果合作,推出App Pins,简单说就是在苹果手机上,不用跳出Pinterest前往App Store就可以安装苹果App的技术。参与应用分发的变现当中。例如,你在看菜谱图片,就给你推荐“爱大厨“App,并且在应用内安装。
3.一些营销场景合作
对于一些旅游,美食和购物的图片,可以与一些O2O的广告商,获取商机。
广告变现最重要的是规模和用户时长:规模大了,用户时长,机会一定很多的,希望Pinterest越来越成功,同学们越来越富!最后感谢Pinterest的工程博客资料,非常好的学习地方,参考资料:https://engineering.pinterest.com/blog
文章来源互联居订阅号,经作者同意由DBA+社群转发。
作者介绍:欧阳辰
- 2016中国数据资产管理峰会特邀嘉宾
- 目前就职于小米公司,负责小米广告平台的架构研发。
- 毕业于北京大学计算机系,获得学士和硕士学历,拥有超过15年的软件开发和设计经验。
- 曾为微软公司工作10年,担任高级软件开发主管,领导团队参与微软搜索索引和搜索广告平台的研发工作,曾负责微软上下文广告的全部研发工作,包括系统架构和数据算法。
- 曾在甲骨文公司从事数据库和应用服务器的研发工作。