架构师实践日|从服务的角度看电商

架构师实践日|从服务的角度看电商_第1张图片

电子商务是互联网应用中发展期最早且模式最为成熟的商业模式,作为用户和业务规模扩张十分快速的行业,电商平台的架构面临着巨大的考验,往往需要借助第三方来提高系统的可靠性和可扩展能力。在电商服务商的眼里,电商系统具有怎样的特点?对于存储海量数据又要有怎样的保障?如何利用它们获取更大的价值?1月9日,在七牛云主办的架构师实践日——瞩目电商:从架构开发到系统优化专场沙龙,七牛云技术总监庞向才为大家一一解答了这些问题。以下是他的演讲实录。

作为一家专业的云服务提供商,七牛不做电商,但是与电商行业密不可分,因为我们有大量的电商客户。在服务了电商这么久之后,今天我就从分布式系统来讲,从服务的角度来看一下电商系统的特点。

从一个URL说起

从以前传统储存业务的角度来考虑,以下有一个URL,它被我分了几段,都标了不同的颜色,每一个后面都有不同的参数。

http://xxxx.static.yhbimg.com/goodsimg/2016/01/08/09/0163a57304ba0f3c1d20171b1f599a3e33.jpg?imageMogr2/thumbnail/235×314/extent/235×314/background/d2hpdGU=/position/center/quality/90

这个URL是从我们某一个客户上直接复制过来的,域名被马赛克掉了,这个URL是在云存储上的对象存储,即对原始图片做了一个静态资源存储。并且在访问的时候可以进行实时的裁剪,可以把它拉伸扩充成某一个大小,背景可以填充为白色,这个URL的访问已经放在了CDN上去加速。电商网站在跟用户交互时,最多的就是图片的展示,甚至包括短视频。URL还可以支持不同的命名规格的速配,URL它可以存储,可以进行不同的操作,基本上静态资源的管理在这一块的存储、分发和展示应该是足够了。

CDN的管理

对于一个对象来讲,不管是静态的资源图片还是短视频,在数据的存储和处理以外,就是分发的问题。分发对于电商的用户体验是非常重要的,现在几乎所有一定规模以上的的互联网公司,所有的流量分发都是通过CDN去走,而国内电商除了阿里是自建之外,基本上其他传统的都是在CDN厂商里面。CDN的管理上面有几个需要注意的地方。

现在大家一般都找几家这样的CDN做切换,以实现快速的故障恢复和实时的流量告警。还有一些做电商的会说我被攻击了怎么办?足够的带宽保障及流量清洗都是必备的功能。

静态数据生命周期

从基础的服务层面来讲,静态数据有一个生命周期,从商品的图片以及短视频类的制作到大数据存储,这一类基础的非结构化的管理实际上已经很成熟了,直接放在云端,就可以进行多终端、多屏幕的视频分发。它一直在线上,直到有一天商品下架了,这个静态数据才从人的视野里面消失。这一类数据的管理基本上是存储、分发、处理,再到最后的一个归档,生命周期过去以后,这些东西都看起来就不太有价值了。

世界还是动态的

其实静态数据只是展示给外界的而已,这些图片界面只是数据很小的一部分,业务逻辑的一些计算,比如SKU、定价策略,以及现在搞各种秒杀,你安全规则的匹配有没有防欺诈的事件在里面和防攻击都是需要考虑的。为什么把数据Cache的管理放在这里,因为正常来讲计算机的加速大部分层面还是要Cache的,现在除了秒杀,很多时候大家的推荐部分都逐渐转向智能推荐。还有涉及到一些信用的、历史性的经营分析,以及未来经营一些预测等。

带来的问题

这一块来讲,当静态数据已经有足够的基础设施去处理的时候,那计算的事情要怎么做?电商主要还在于商。但是有一个问题,就是据我了解,前面需要的那么多计算的逻辑以及各种模块,从我们云的角度也就是基础设施的角度来讲,无非是从资源层面来考虑这些问题。一个是应用之间的这种多样性,然后它在补充数据变化的时候就会带来对计算资源需求的不确定性,其实你很难一下就规划到位的。对一个简单的系统来讲,一旦涉及到所谓的扩拓展了,那系统部署就出来了。系统部署复杂了以后,伴随而来的就是你的监控以及它的管理。当你的系统上线很负责的时候,研发人员有一段时间就做运维去了,开发周期也会面临着不确定性。其实总体来讲,就是从计算机系统,从最初的一个单进程慢慢变成多业务耦合,当然官工可能会问什么叫耦合对吧?现实一点,比如说作为一个程序级别的架构也好、研发也好,这些都是现实要去考虑的问题。

软件定义X

我们在想有没有东西去适当简化一些东西,让程序员的生活相对好一点。Container技术很多年前就存在了,在电商行业,京东去年有开过一个发布会,基本上是说我们所依赖的这些基础设施,我们获取资源的途径能不能更简便一些,交付能够更快一些?现在基本上到网络层的资源都被虚拟化了,这得益于应用层的打包技术,它可以快速基于版本进行分发。后面就是说,基础网络在数据中心内部已经倾向于做所谓的大而成,但是这个大而成不是裸的大而成,是基于三层Relay的SDN,这个可以保持基础网络的弹性。交换层面以及包括计算的实际打包,放在Container里面以后,意思就是说每一个请求过来到每一层都通过我的软件,我可以精准的去记录一些你的东西,这些是相当于性能监控,包括Container级别的资源监控。再配合应用出口处的弹性ELB这些服务,保证在后端实例可以快速生成及销毁的情况下,我的计算数能够快速的被后端的这些实例给吃掉。然后就是各种版本的升级、灰度、回滚,在Container上可以选择灵活性的灰度,版本的灰度你可能需要复制粘贴再重启。当前我们想象中的,其实已经是大家都实现了一些技术,这样子给上面复杂类的计算应用提供一个最基础的环境。

计算能力服务化

从计算能力角度来讲所谓的服务化,就是我只自定义一次的时候,可以招之则来,挥之即去。现在各种云随着数据规模的增长,它底层只要多机器就可以了,只要加物理机器加硬盘。随着并发的增高,在业务处理的逻辑层都可以横向的扩充实例,可以定义扩容时候是什么样子,到一定阶段自动扩张。等你的资源,比如说实例已经跑到500个以上的时候,或者说你的业务本身比较耦合了,本身相互有依赖的时候,当用户请求进来,它的处理逻辑,处理模块越来越多时,我要保证每一个阶段服务的相应,以及这些实例全局的运维能力,这些东西要事先可编排,可预测,再也不需要到机器上看CUP内存。这些东西还是离业务太远了,我们希望做的是能真正监控的是和业务非常接近的业务指标,而不是说计算机的硬件指标。

基于PaaS积木型的应用

未来从业务的角度出发,从应用的角度出发,我们希望不管上层跑的是什么样的业务系统,以及什么样复杂的业务逻辑,当前计算机在这个阶段,不管它再去怎么云化,对于这些主机上来讲,比如说RDS关系型的数据库,它是服务还是不是服务也好,服务了以后就把以前需要运维的事情打包了,已经做的相对有固化的逻辑,以及固化的模式在很健康的跑着而已。然后就是Cache,再就是时间序列的一些管理,因为你要根据过去的历史来预测现在是否健康以及未来会是一个什么样的趋势。然后EMR,还是要去做一些经营型的分析,能够比较智能的知道我哪些数据需要可视化,以及什么样的形式可视化,不管是老板,还是基层运维或是产品的运营,其实这一块还是非常重要的,是在工程流程战里面必不可少的流程服务,以PaaS的方式提供出来作为应用的平台堆叠在一起。最后是CDN,就是所有数据中心的服务要传送给手机也好,家里的PC也好。不管是动态的,静态的,都有一些安全性的考虑,我可以从里到外,从数据流的角度去看,这些东西有一个积木型的应用,起码计算平台和这些框架都要在,剩下就是专注于填一些业务逻辑进去。

图1是对于上面的总结,这些东西因为每一块都比较多,所以也不会有太多的细节在里面,这边不涉及电商业务,纯粹是说当前有前端有后端,或者有用户介入层面的应用来讲,根据不同的功能属性去分层。一边是非结构化的数据,一边是结构化的业务数据,上面一层基本上是APP,这个事情都已经做了好多年了。

架构师实践日|从服务的角度看电商_第2张图片

图1 面对应用服务架构

这张图最下面那个大的蓝色的背景,我希望是说它就是一个通用的,可以获取各种计算资源,以及计算平台的一种能力的一个系统,完全业务归业务,资源归资源,框架归框架的。

服务于流动的数据

然后最主要的是,我们做计算机系统来讲,其实服务的是这些变动的数据,你所有问题的产生都是因为不同纬度上数据的增加,不管商品条目的增加还是商品属性的增加,还是你业务场景模式的增加。你当前用户的数据收集这个是非常夸张的,今天收了一个表,明天你访问所有网站上面都是表,就是说数据流动是很快的,这些数据不管是在广告行业还是电商行业就这样被用了。

关于隐私的保护和安全这一块,你若干年前用的密码和用户名,都在外面已经流传的非常广了,包括公共云上面经常会有爆各种订单信息泄露。这一块就是说从最开始的架构上面开始要去考虑这些事情要怎么去规划,从数据的收集存储到它的流转每一个环节都要考虑它的安全。

专注于体验

大家既是这些系统的制造者,又是它的使用者的时候,那就是对用户来讲会有一些最原始的诉求,访问用户网站的时候,不管你的基础是什么,用不用CDN还是回你的原站,都希望是流畅的。像过去讲的纸尿裤和啤酒的故事,这些东西没有必然的因果关系,但是它有关联性,用户去访问一个网站的时候,我不希望搜过一个手表以后,到处推荐的还是手表,而且是不同型号的,这个是没有必要的。当然还有一些是搜索,现在搜索已经不是说搜什么显示什么,而是搜什么显示更多关联的搜索,关联出来的东西可能是你想要的,大部分情况是你不想要的。然后在整个的流程里面,为什么说会有一个相对比较安心更流畅的过程要去考虑?你总是觉得这个网站对你了解太多了,这个应用知道你的东西太多了,他们知道了也许你认为他们不该知道的事情。相对闭环的体验和迭代的验证,这里面你去收集用户信息的时候,关于用户的停留时间这一类的数据,其实在最终的设计里面你要有一个数据完整闭环的通道,至少说我干了这个事情有没有意义,意义在哪里。

从我们基础服务的角度来讲,未来我们是为这些数据流来服务的,哪一个地方比较热或者用户比较多,那我们未来的基础设施就会向哪一方面去投入,去研发,更多面向应用的一些基础的计算平台以及业务平台,我们慢慢的从静态的非结构化的数据慢慢向更有规律的,去做一些更有意义的计算型的数据提供我们的基础设施。反过来这些数据会注入到各种算法里面去,这些算法又会提供各种产品的行为,再来影响我们的行为。不知不觉最终我们被这些数据所左右,我们被这些数据所塑造,我们是这些数据的一部分。

本期另外两位演讲嘉宾的精彩分享将于明后两日陆续更新,敬请期待!更有PPT和现场演讲视频资源大放送,尽在“七牛架构师实践日”官网,猛戳这里进入查看,并且可以及时获得最新活动讯息哦,期待你的加入~

「七牛架构师实践日」——这里只谈架构

七牛架构师实践日是由七牛云发起的线下技术沙龙活动,联合业内资深技术大牛以及各大巨头公司和创业品牌的优秀架构师,致力于为业内开发者、架构师和决策者提供最前沿、最有深度的技术交流平台,帮助大家知悉技术动态,学习经验成果。

你可能感兴趣的:(架构师实践日|从服务的角度看电商)