以下为演讲实录:
大家好,我是七牛的首席架构师李道兵,今天在这里我想给大家谈一谈七牛发布的解决方案,在说解决方案之前想跟大家先分享一下这本书,这本书发表已经21年了,在本书差不多是两个时代的一个分界线,在这本书发布之前,我们看到的软件世界是灰暗的。ABN(音)的工程师由于压力过大,在办公室吃打印纸。
我们可以看到,在这之后,我们可以享受到很多庞大的软件,比如视窗。这个与设计思潮带来的改进是非常相关的。接下来,二十多年前我们大部分的需求是来自客户端软件的复杂性,现在我们面临的需求跟之前不一样了,我们先回到这个主题,之就是七牛的解决方案这个主题。
解决方案不是新的名词,毕竟如果你做一个商业公司,比如电商,你需要一套物流体系,一套供货体系,一套支付体系。这一些东西没法用一个简单的软件搭起来,一个好的办法是什么呢?就是我们找一个更优经验的传统的IT顾问公司,帮你做解决方案,做设施,甚至帮你做运维。但是20年前我们可以这样玩,现在这样玩是不是合适呢?现在是一个互联网时代,互联网时代创业公司很多,各种的创业的新的增长点也很多。但是这一些,在每一个增长点来讲的话,都有很多很多的创业公司在这上面工作,那么这个竞争也比以前激烈很多。以前的方案施工周期很长,六个月九个月甚至一年以上都是常事。第二个是不灵活,毕竟要跟第三方沟通。然后成本也不低,高额的佣金,可能你拿到的风投拿到的A轮都不够给这些公司付佣金的。另外你付了钱就能得到一个好的产品吗?未必。比如苏宁易购打造的平台,上线没几天就宕了。可能他们不适应互联网时代,对于爆增的访问量的预估不足造成的。
而我们换一个角度,来看我们现在互联网时代的一个,我们究竟需要一个什么样结构的软件,什么样结构的产品,底层的设施,我们简单的,人可以把我们的产品分为客户端产品端两部分,现在大部分的客户端都属于两个类型,一个标准的网页浏览器,第二个来讲是移动设备。而服务端来讲的话,就是说,由于现在我们大量的一些基础服务,比如说存储、全面搜索,还有一些消息堆点之类的,我们又可以继续把服务端分成两个部分,第一部分是客户的私有的服务,第二个部分,它对应的云服务,整个构成了我们简简单单的BMCS的结构。这个结构我们换一个尺度来看一下的话,特别是服务端,我们又可以分为两个部分,第一个部分是你最基础的组件的部分,包括数据库、存储、消息系统,你的全文检索系统,邮件发送系统等等这些组建。
第二部分,你自己的私有化,通过一些场景化的模式,如何把你的组建联合,或者是整合成一个服务。在组建这个方面,我们看到大的方面,各个组建云化,云端化的越来越多,你常用的都可以找到云化的。场景化是大部分人很头疼的问题。大家想一想,如果你找到一个别人已经做过的。把你的idea变成产品过程,会不会顺利很多呢?这个就是我们这一次想做的事情。我们想把场景化的模式,变成一份你可以看得见摸得着的东西,让可以模仿、学习,并且融合在你的工作当中的一些东西。OK,具体这方面来讲的话,七牛又是怎么去推进,怎么做这个事情的呢?首先来讲的话,我们有大量的客户,我们跟这些客户,通过跟他们一起讨论,来确定他们的这种行业,有哪一些业务场景,一个业务场景来讲的话,它其中会有哪一些痛点,我们根据它的痛点,设计出来的七牛特色的一个架构,这个架构来讲的话,基于我们的云服务,采用这个架构,架构能很好的解决这些痛点。然后在跟很多客户来交流来讲的话,我们在很多架构里面发现共同点。比如,特别是移动端的客户都有需求。就是有很多照片也好,文件也好,都要跟客户端同步。这些同步来讲,我们独立出来一个新的产品。这个产品反过来影响了我们的架构。
就是我们以后设计新的架构的话,这些新的,比如同步服务,其他的服务,可以作为一个新的组建,直接应用在这个架构里面。那么来讲的话,我们现在这一些七牛的组建和服务来讲,可以有哪一些呢?比如比较基础的来讲,包括对象存储,包括富媒体计算平台,网络加速平台,计算平台。同时在这些基础平台之上,我们挖掘了我们的一些上层组建,比如直播服务,云盘同步服务,还有我们的一个大数据分析类服务。还有我们的七牛的合作伙伴推出的个性化推送,比如推出的一些APM服务。这些服务来讲构成了骨架的作用。我们把剩下来的变成一个整体,变成一个整体的服务。
之前我们介绍过设计模式,设计模式来讲,它分为三个大类,推出了23个具体的场景的设计方法。我们仿效一下先贤,七牛在这一波里面进行七个行业分类,在这七个行业里面找出了31个场景。比如O2O这个行业来讲,我们分为五个具体的场景,包括垂直社区,达人视频,每页的导购,还有售后追踪服务,上门服务等这些购物场景。接下来我想稍微具体一点跟大家讲一讲,拿其中一个场景跟大家讲一讲我们到底做了一些什么东西。
第一个我想给大家讲的是七牛的安防视频的解决方案。安防现在进入了千家万户,每个家有一个摄象头来为你家做保护。安防是相对来讲比较简单的领域,它最重要的是两个部分,第一个数据流怎么上来,第二个数据流怎么分发出去这两个问题。而针对这两个问题的话,我们都有对于它们具体的提出了一些解决方案。这一副图是整个上去的流程,上去的流程,我们是从客户端,这个客户端包括摄象头、手机终端这类的客户端,这类的客户端通过ITMP推流就可以直接推送到云平台,但是在推流之前有一步少不了的就是建全操作。拿健全权限之后可以把流推送到直播服务。我们直播服务会把其中一部分,存储它的数据到我们的存储云,同时开始以直播流的方式往外推送。
第二个部分就是直播加速部分,我们客户端是多种多样的,每一种客户端接收的模式接收的码率都不一样。在接收的过程当中,根据你所需要的码率,在服务端进行一些实时转码的工作,整个流程就完美的走通了。我们看到在这个过程当中,真正需要客户开发的只有一小点就是健全服务。剩下的可以用现成的云服务,特别是七牛的云服务来提供支持。包括我们的霹雳云直播服务。包括多码服务。这一块很多公司已经开始,用这种架构搭建他们的安防的监控平台,希望你们有类似的场景需求,希望这个东西对于你们有所启发,能够帮助你们,快速的把你们的平台搭出来。
第二个,我们想讲的比较热门的领域,就是七牛的短视频社交这个领域。其实短视频社交这个领域,照例来讲也是一个大的架构。比如现在比较热门的视频,小咖秀,它视频来源一般是来自于手机,手机录制完了之后,十秒二十秒的一个小视频,这个视频推送到服务器之后,它有两个需求,第一个需求是分享与分发的需求。第二个需求就是所谓的审查、转码需求,这类的需求,分别怎么解决掉具体的问题的呢?OK,客户端上传这边,我们遇到的最大的问题是上传成功率的问题。上传成功率主要是手机的网络不稳定,包括网络不太好,这种情况下,如果你直接把一个完整的视频上传会出现问题。这边我们提供的解决方案,就是分片上传,把一个大的数据流分到小的数据流,可以提高上传成功率。第二个是提供就近加速的节点,通过这两种方式,让他上传的成功率可以达到一个很满意的数字。第二个部分是转码,上传之后为什么转码呢?上传的格式希望统一成一个格式,第二个,播放的时候不同的客户端播放的的模式不一样。第二个有打码的需求。这个就需要一个平台来做这个事情。我这边相当于你自己都不用做。通过我们kodo等系统,可以完成视频的转码、存储的工作。这个直接在我们服务端就做好了。
第三个部分是分发在这个领域里面分发遇到的最大的问题,是覆盖率希望问题,毕竟你不希望你的客户来抱怨,第二个来讲的话,仍然跟之前的问题比较类似,大家希望以不同的码率拿到不同的码流。第一个部分,我们提供一个CPN融合的工作。整个中国甚至整个世界的覆盖率都可以达到非常漂亮的水平。包括解决掉,你的用户看不到的问题。第二个来讲的话,也是用了我们刚才视频的多种模式转码的方式,这种转码,让你的客户端,比如可以看MP4流,或者可以看到更低码流,更高码流。我们可以看到,这个解决方案里面,我们客户要做的事情也是很少,更多的是授权的工作。通过客户端的控制,你想看什么流,服务端就给什么流。极大的减少了客户的转化工作。这里的客户就比较多了,美拍、豆拍等,用这样的方式保证了客户的快速的增长。
前面我们提到了七个行业解决方案,为什么我们到今天才推出这个呢?因为我们现在,在这七个行业有足够的客户,能够提炼出这些行业里面的共性了,在这儿我们先暂停一二十秒,看这里面有没有一些你自己喜欢的应用,或者是说你们公司的应用。
最后回到七牛的,你说七牛的口号也好,或者是远大的理想也好,让天下没有难写的代码,让程序员活得更有尊严一点,让七牛帮到各位程序员也好,各位创业者也好,让你们的产品更加快速更加稳定,谢谢大家。