淘世界刘捷:技术架构的进化分四个阶段

作者:admin  发表时间:2020-08-20  浏览:36  海淘动态

12月23日,在世界超市网主办的第十届中国网上零售年会上,淘世界技术副总裁刘捷发表了以《如何架构千万级移动APP》为主题的公开演讲。据他现场介绍,架构其实没有对和不对,会有好或者不好,但是更重要的是合情、合理。第二,好的架构是进来化来不是设计来的。而创业公司在不同阶段有不同的实际情况。据刘婕介绍,架构的进化分四个阶段:一、商业模式的阶段;二、流量成长期阶段;三、技术高要求阶段;四、深层次的服务阶段。此外,刘婕称,千万级别的架构不是这么难的,现在所有的行业里面在做的事情,只要大家一点一点把问题拆清楚理解透,在座的每一位同学都可以做到,如何在千万这个级别,再往上面走是困难的。这个地方就需要很多我们技术上面的创新进步,以及说我们自己对技术的各种理解。据了解,此次会议主题“万物零售”直指2015电子商务行业趋势,针对电商企业、移动电商、O2O、零售业、服务业、跨境电商等多个领域,在国家“互联网+”发展战略的指导下,探讨如何激发创新意识,沉淀商业内涵,寻求未来的生存根基。世界超市网主办的此次大会有1场主论坛和品牌零售、农村电商、电商技术与产品等6场分论坛,预计将有市内外嘉宾1200多人参加。大会邀请了多位经济学专家和电商操盘手将从理论和实践两方面剖析电子商务以及系统研判经济走势和资本市场。此次会议邀请到上海证券交易所首席经济学家胡汝银先生,就中国电商如何理性选择资本市场发表其独特观点;经济学家、耶鲁大学管理学院终身教授陈志武教授将就全球资本走势如何影响中国电商做深度演讲;国家电子商务示范城市专家咨询委组长柴跃廷教授及“十三五”国家发展规划专家委员会专家、中国社科院信息化研究中心主任汪向东教授分别就电商政策、“十三五“电商规划、农村电商解读做演讲。除此之外,还有100多位一线电商实力派操盘手同台分享操盘经验。演讲话题将涵盖跨境、母婴、汽车、健康、生鲜、奢侈品等几乎大部分主流零售行业以及周边服务行业。(温馨提示:本文为速记初审稿,保证现场嘉宾原意,未经删节,或存纰漏,敬请谅解。)以下是演讲实录:刘捷:大家下午好!晚上因为还要赶飞机,可能时间稍微紧张一点,差不多我用半个小时的时间给大家介绍一下,我们架构上面的一些思想。大家有问题就快问,在提到整个电商模式的架构之前,我觉得有必要把淘世界的业务模式跟大家交流一下。要澄清几个观点,第一,架构其实没有对和不对,会有好或者不好,但是更重要的是合情、合理。第二,好的架构是进来化来不是设计来的。对于像淘世界这种创业公司,在不同阶段有不同的实际情况。我们自己的APP从上线到今天也就是一年多的时间,在这一年多里面经历过的一些阶段跟问题。跟大家聊一下。我们的业务模式比较简单,左边是用户,右边是买手跟商家。最本质的模式就是以前的一些旅游,相关的这种买手他们可以才海外带回来优质的商品,给国内的消费者,这是我们传统说的代购。这个模式再往前面走会出现很多相关的海外商品的商家,或者一些海外的品牌,这个平台来说,主要要解决就是所有跟物流结算社区相关所有的问题,就是我们现在在做的事情。那么对应来说,其实是一个全品位的交易平台,这点可能像秘淘是不同的,他们是一个垂直的领域,我们还是基于平台做的商业模式。我们做到目前为止,架构的进化并没有特别明确的时间点,只可能是一些改进。鲍总讲的我很赞同,差不多经历了四个阶段,第一个阶段商业模式的阶段。这个时候比较容易,就是投资人跟老板说这个东西就这样,买手传商品,买东西,就要付钱,这个就是第一个阶段,这个阶段特别典型的一些问题,没有流程,没有技术,没有架构,没有人,没有服务器,任何人在做任何事都不会考虑将来的一些状况。我不知道在座的有多少也是同样的创业公司的朋友。我估计这个阶段大家都是经历过来的,这个阶段最大的问题就是加班,不管做什么,就是赶快做,能今天做就别拖到明天做。对于业界来说,这个阶段包括这个时间是一个特别好的创业的时间,在倒退几年来说,那个时候还没有特别很多的东西,比如敏捷化开发都是近几年涌现的,倒退几年时间,其实什么也没有,现在这个阶段还稍微好一点,现在说是做架构,第一阶段就是把所有能用的工具用好。为什么最开始是这样,因为整个公司创业初期人就只能做这样的事,那个时候就是人决定技术高度,在这个第一个阶段,觉得还挺开心的,因为很快做出来的东西成就感很强,紧接着很快到了流量的一个成长期的阶段,并不是一个很速度的成长期。比如一个公司,当你的产品出版的时候一般会花一点钱砸在市场上,这个时候就会有一些流量进来,这个阶段能发现的问题也是很明显的,涉及到的代码也就是5—6千行的标准,很多问题并没有明确的技术去想,大多数都是客户说这个有问题,要不就是客服说这个有问题,反正就是追着改各种东西。比较典型的一些技术架构的事,必须在做数据库的一些分离、重组。每一条我估计单独扯出来,都能扯2—3个小时。到第三个阶段技术上面的要求尤为明显了,在这个阶段里面,比如电商经常用的名词大促,一旦到了大促流量就不是几倍的关系了。我们一般有一个自己的说法,就是最少要做20倍。那么这20倍往往有一些流量上面的聚集效益,不是均摊到一个时间做。这个地方我尤其要跟大家分享一个特别重要的观点,在座可能很多都是同志做技术的,大家觉得做技术架构,可能是做性能,有没有同意这个观点的同学,就是做架构的很重要的因素就是做性能,很多同学,这个观点是对的,其他同学为什么不举手呢?做架构一个点上面做性能,这个是没有问题的。肯定要去做性能的,比如流量增长,用户量增长肯定要做性能。要从一个整体观看架构这件事,我推荐一个词就是叫“吞吐”,任何一个系统它的吞吐做得好不好,可以看出他做得好不好。大家不要小看服务性能,一般的创业公司,无法想象的,一般的创业公司肯定不会花时间在这个事上面去想,一旦到了一个瓶颈期的时候,一定要花时间做这个事才能有下一步的突破。我们在整个系统设计这个环节,大家要想到吞吐这个概念。如何能提高车速,或者如果地面状况能够修得更好,这个是我们说的性能,可以通过提高单车的车速,比如从120提高到150,道路修得更好更安全,这个是性能提升,可以带来更好的性能效果,吞吐是不一样的概念,有任何一笔订单的结算卡在那,你整个的一条线都是不通的,凡是做大促阶段过来的工程师都会面临,当我还是三车道的时候,其中的一条车道已经有堵住了,这时候不管整个系统性能设计再好,整个系统都是不通的。如果能把系统吞吐的问题解决掉,能通过我们性能提升,就完全可以可以达到一个更大负载的系统。什么是吞吐呢?刚才有同学提到,任何一台机器都会故障的,有更强的计算,这个属于性能。今天主要的观点是我们做系统架构设计里面最难,也是需要最投入精力的一个环节,如果做一个吞吐比较OK的系统。前面老总分享过,为什么从模块化到服务化的变化,围绕主线开展的都是吞吐这个词。我们在第三个阶段瓶颈期的时候,其实我们也开始做大促,那个时候流量特别大,尤其是秒杀系统特别明显,一秒之内蜂拥上几十万的流量,这个很正常,我们用一些性能办法解决这些问题的时候,发现吞吐就是一个大问题了,比如出现了一条产品效益很低,这个时候就发现原本很正常的很多其他的用户,都被挡在外面了。我再分享一个,差不多7年前的事,那个时候百度自身的系统建设,特别的稳固,很多技术做得比较靠前,技术水平算是不错,那个时候出现的一个比较头疼的问题,就是它的入口带宽被人打满了,不管后面有多少性能也是没有用的。然后我们的工程师解决了入口带宽被打满的问题之后,又出现一个小问题,就是前面连接出又被占满了。所以整个你的一个系统的吞吐的角度,凡是进不来,出不去的这种情况,最后我们吞吐上面要解决的问题,我觉得吞吐是一个架构设计里面最核心最关键的一个词。在这个瓶颈期里面还有很明显的安全问题也是凸显出来了,比如跃权还有了很多不应该开放IP,在座有很多创业的朋友,我们买一些云服务的时候,有时候分不清楚云服务的IP,往往就是对价格敏感。在阿里云上面IP还是一个比较麻烦的事情。在流量的瓶颈期的阶段,很多问题很明显的暴露出来了。而且对我们来说是一个做跨境电商的,相对不同的就是我们要解决物流端的问题,差不多平均要在20天左右,时间长一点。做第一次大促没出什么问题,第二次也还好,到第三次的时候不行做不了了。因为前面的一些买的东西没有送到的,送了有问题的,这些都是我们业务层面的问题了。一旦我们发现这个瓶颈期你面临的具体问题之后,其实我觉得我们的架构设计是一个特别之顺畅的过程。这个就面临了一个,我们起的叫新架构。在新架构里面,整体上做的跟前面老总说的基本没有什么不同。比如说会拆分出来,具体的商家系统,用户系统,线上交易跟订单的系统,结算系统,这西面有一个,我们在任何的电商系统里面,都会涉及到财务系统,好像特别简单,就是给人家付款打款,但是我跟在座的各位说一下,就是凡是你们自己在用自己的思维做财务系统,一定会出问题。当你发现做一个业务系统的时候,其实你要有很强的业务观,说直白一点,你做财务系统,你至少得干过会计,是不是真要干会计,但是你得有基本会计的概念,才能知道整个财务系统该怎么做。比如所有收到买家的这个货款,要打给买手,因为我们是一个平台,张三从我这里买了一个东西,我要把这个东西的钱给李四,你就会发现,没有财务系统会怎么做?张三给了一百快,李四那个地方要打一百块,于是公司给李四打一百块,这是通用的解决方案,这个问题就是没人能够控制你给李四打的是不是一百块,如果技术人员把公司的钱多打给了李四你也不知道,或者重复打给李四你也不知道。这个问题会直接导致我们最终设计架构的时候,一定要反映你的业务需求。第二个问题在于一定是会对整体的代码和服务做层次化,包括API的统一接入,每一个话题都可以聊两个小时。比如层次化,包总(音)的有三个图大家还记得吗,最难的层次化是什么样子,这个才能做下去。第三块是缓存需要经过一个全面的规划,缓存既会给你提高很大的效能,增加你的系统吞吐,减少程序的复杂,可以有很多作用,但是缓冲有一个非常大的问题。就是会使得你所有的地方时间会有延迟。而很多时候这个延迟是不可接受的。一旦有一个地方的缓存不可接受,你发现这个页面缓存都要重新做。在系统各个环节,每个地方要加缓存加多久什么时候,这是一个完整的策略。我经常提早一个词“策略”我们第一个层面是如何设计架构,下一个层面就是如何实现策略,因为策略是会跟业务相关的。第四方面要在中间件这个方面有更多的应用。今天跟大家分享的话题主要是如何架构,千万级别的架构不是这么难的,现在所有的行业里面在做的事情,只要大家一点一点把问题拆清楚理解透,在座的每一位同学都可以做到,如何在千万这个级别,再往上面走是困难的。这个地方就需要很多我们技术上面的创新进步,以及说我们自己对技术的各种理解,这个地方我还是拿我自身举一个例子,我们之前在百度做一个事情,那个时候检索差不多8千台左右,我们做了一个事情,就可以降低成本一半,就是把内核算法改一个,整个系统到一个层面以后,再体现出来的就一定是我们对技术理解的能力。看起来这个修改很容易,但是随便叫过来的人绝对不可能想到这个地方,也不可能对这个事是有理解,如果告诉你怎么改,可能在座都知道,问题是我们不知道需要改。现在大多数的点上都回会用一些探索的东西,这个是我的老本行,我们在做搜索的时候,有一个更天然的概念,我们自己系统在用搜索都是自己开发的。以前就是有一个毛病,需要什么东西,就非要自己做,工程师有一个习惯,接受别人现成东西的时候,他是没有动力去看它的原代码,甚至没有动力去几个人交流这里面的处理方式,除非让他自己去写这个东西,当他被迫自己要做的时候,才会去想怎么解决。这个方式如果公司给你足够时间,不失为是一个锻炼人的方式。我们现在采用的是自己的系统,不存在任何瓶颈和拓展问题,所有问题都是在规划之类,很方便就能够解决掉。最后一条就是SOA,就是如何SOA化,这个话题不是这么容易。我附了一长整体架构的图,最开始整体系统相当于只有一个订单系统,所有其他的系统都是围绕订单系统在做的。比如说我们开发一条订单系统,这个时候老板说我们是不是要有优惠券,是不是要有购物车,于是就围绕订单系统数据库,写数据库,再操作的行为。所有的业务模式,在之前都是围绕着一张订单表去开展的。这个导致了后面我们很多的业务都没有办法继续拓展,所以在这个环节里面,大家遇到的问题就是,拆清你的业务和架构,这个是工程师给的一个提案。大致的意思就是要把服务里面分开,比如说按照用户服务做一些划分,按照一些主线做划分,每一个划分出来的业务系统,它跟商家左右关联。其中有一些部分,比如左边这部分,都是我们一些技术组成。在整个这里面有很多技术,下面我会提到很多,经常大家提到的卡斯卡,包括敏捷开发安全平台,都是整个系统不可获缺的部分。大家应该产出完整技术架构图,指着这张图老板说,在哪个阶段会有什么东西,这样对于一个非技术的老板来说,他可以更明确他想要的是什么东西。按照一个解决方案,一个月不出问题,两个月就会出问题,三个月就会出问题。这样有时候老板就会指责你,我们没有太清楚去呈现我们对于业务和技术结构的理解,以及在哪个阶段可以实现什么样子的一个状态。其实这个是我今天要跟大家分享的观念,更多要解决一些业务观念和思维方面的问题。
海客讨论(0条)

头像

0/300

微博发布

部分图片内容来自于网友投稿

111.43ms