童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

电商技术解密:如何让用户快速地打开商品详情页?

2月22日 金钟寨投稿
  如何尽量减少用户的流量,减少客户端与后台的交互,让用户在APP上有比较好的体验,这些都是在设计商详系统时候需要面临的挑战。
  今天来跟大家聊聊商详,商详是展示商品详情信息的一个页面,整个购物流程比较重要的一个部分,承载着网站的绝大部分流量。为了提高转化率构成商详的元素非常丰富,有大量的图片、部分商品还有视频介绍、有相对静态的商详模板,有实时变化的价格、促销、库存。
  下面我们先来看下商详上一共有哪些元素组成?
  可以看到商详上的元素非常多,总结下来分为这么几个维度:商品维度(标题、主图、规格参数、商品文描)、分类维度、商家维度、店铺维度。另外还有一些实时性比较高的:价格、实时促销、配送地址、库存、广告等。
  主要面临的挑战有:
  高性能,商详页聚合服务比较多,要保证商详页在12秒内可以打开。
  灵活性较好,可以快速响应页面变更需求。
  具有较好的扩展性,当访问量增加的时候可以随时进行水平扩展。
  要能够做到柔性降级,自带开关。某些底层服务出问题时可以通过开关进行相应降级处理。
  针对商详可以有几种不同的实现方式,用户看到的是同一个商详页,但背后实现的方式却多种多样,下面给大家介绍几种常见的实现。
  第一种实现方式:单机版
  整个网站放在一台机器上,通过几条SQL分别拿到商详需要展示的各种信息,聚合成一个大的接口吐出给前端展示。
  优点:逻辑简单。灵活性较好,可以快速响应页面变更需求。
  缺点:性能比较差,没有扩展性。
  第二种实现方式:缓存银弹
  在第一版的基础上增加各种维度的缓存。可以将主图、商详的HTML模板放到CDN上,每个商品的聚合信息可以放到cache中,不需要每次请求都通过DB获取商品数据。
  优点:可以一定程度上提高性能。
  缺点:需要解决缓存与DB的数据一致性问题,单纯增加缓存面临数据实时性不高,底层数据已经修改,缓存中还不是最新数据。若任何底层数据变更实时更新缓存则修改工作量较大。另外仍然没有解决扩展性问题。当请求量过大,或者商品数据过多将导致性能变差。
  第三种实现方式:分布式服务化
  按照领域进行切分,不同业务领域独立实现分别部署,将商详依赖的底层业务领域分别拆分出来。例如,商品、库存、促销、地址等分别进行服务化。每个子领域的服务自己保证各自的性能。
  优点:具有很好的灵活性。当有业务需求变化的时候,每个子领域内部自行修改,对外部提供的接口协议不变,对外部无感知。并且具有良好的扩展性,当请求量或者数据量比较大的时候,每个子领域都可以分别进行横向扩展。
  缺点:开发难度变大,由于按照领域进行服务划分,往往原来一行SQL可以搞定的事情。现在要涉及到多个领域一起配合来修改,需要协商接口协议,各个领域内部仍有不少开发量。
  下面我们来说几个基本的概念,上面提到的服务到底是什么?
  服务:自己自足的、无状态的业务功能,通过定义良好的标准接口,它接受一个或多个请求,返回一个或多个应答。
  服务不应依赖于其他功能或过程;
  用于提供服务的技术,编程语言,不构成定义的一部分;
  服务体现了业务功能,聚焦于流程,服务的主要目标是体现业务功能的“自然”步骤。就服务起作用的业务而言,服务应该代表了一项自足的功能,对应着一项真实世界的业务活动,业务人员应该理解服务干了什么。
  接口和契约(技术层面)
  一项服务是一个处理(多个)消息的接口,返回信息,以及或者改变实体(后端系统)的状态
  前置条件、后置条件(安全意识,不信任原则)
  粗粒度:有助于分离服务提供者的内部数据结构和外部接口
  接口的版本、向后兼容
  上面介绍了分布式服务化的方式来实现商详的技术架构,那么这样是不是就完美了?在实际情况下即使这种架构还是有很多不可控的因素会影响整个商详的性能。最重要的一个就是对外部服务的依赖。如果外部服务出现抖动那么整个商详页也会随之出现不稳定。尤其商详是个比较大的聚合服务,底层依赖的服务比较多,任何一个出问题都会受到影响,那么商详出错的概率就会比较大。如何解决这个问题呢?
  一种方案是要求所有底层服务各自保证自己的稳定性,这需要有比较完善的监控体系,能够快速找到出问题的点,然后进行修正。这种方案属于比较理想状态,对外部有强依赖。这需要有一个比较靠谱的团队,团队中每个人负责的领域稳定性、健壮性都比较高,那么这种方式是比较好的,领域的划分比较清晰,各自的职责也比较清晰。大家各自把自己的领域做好,那么整个网站的效率都比较高。
  这对整个团队要求比较高,这种团队是存在的,但是当公司业务发展比较快,团队人数增长也比较快的时候,这时候团队的质量就比较难保证了,就会出现某一个领域或者某几个领域质量不是很高,就会导致整个服务调用链都不稳定,对整体网站影响较大。那么出现这种问题时如何解决呢?
  互不信任原则
  对外部不信任的原则是服务自我保护最重要的方式,尽量降低外部服务出问题时对本服务的影响。对于一个写服务来说,一定要校验外部服务调用的所有参数是否合法,对每一个调用方分配场景ID记录调用来源,并且自己要做幂等去重处理。设计系统时首先想到对于这个外部调用一旦失败该如何处理?是否有相应的降级策略?对于不同调用失败的场景一定要清晰记录错误信息方便后面调试跟踪解决问题。
  数据闭环
  数据闭环即数据的自我管理,或者说是数据都在自己系统里维护,不依赖于任何其他系统,去依赖化;这样得到的好处就是别人抖动跟我没关系。
  数据异构:是数据闭环的第一步,将各个依赖系统的数据拿过来,按照自己的要求存储起来;
  数据原子化:数据异构的数据是原子化数据,这样未来我们可以对这些数据再加工再处理而响应变化的需求;
  数据聚合:将多个原子数据聚合为一个大JSON数据,这样前端展示只需要一次get,当然要考虑系统架构,比如使用Redis,Redis又是单线程系统,我们需要部署更多的Redis来支持更高的并发,另外存储的值要尽可能的小;
  数据维度化:对于数据应该按照维度和作用进行维度化,这样可以分离存储,进行更有效的存储和使用。
  下面是一种相对比较简单的维度的划分:
  商品基本信息,标题、扩展属性、特殊属性、图片、颜色尺码、规格参数等;
  商品介绍信息,商品维度商家模板、商品介绍等;
  非商品维度其他信息,分类信息、商家信息、店铺信息、店铺头、品牌信息等;
  商品维度其他信息(异步加载),价格、促销、配送至、广告词、推荐配件、最佳组合等。
  降级开关
  当底层系统出现问题时候要能够做到通过开关的配置屏蔽底层系统的波动对商详的影响,例如当底层的库存系统出现问题时可以通过开关进行配置商详屏蔽调用库存接口,默认所有商品有库存,这样库存数量可能不是最准确的,但至少可以保证用户正常浏览商详页不至于由于底层系统的波动导致整个商详页面打不开。在系统设计时候要尽可能的多预留降级开关,能降级的地方都要做好降级的准备,只有这样才能保证商详的高可用。
  异步并发
  假设一个读服务是需要如下数据:
  数据A10ms
  数据B15ms
  数据C20ms
  数据D5ms
  数据E10ms
  那么如果串行获取那么需要:60
  而如果数据C依赖数据A和数据B、数据D谁也不依赖、数据E依赖数据C;那么我们可以这样子来获取数据:
  那么如果并发化获取那么需要:30能提升一倍的性能。
  假设数据E还依赖数据F(5ms),而数据F是在数据E服务中获取的,此时就可以考虑在此服务中在取数据ABD时预取数据F,那么整体性能就变为了:25ms。
  上面我们聊了聊关于商详的部分技术实现方案,下期将跟大家聊聊电商的抢购系统的哪些事儿,敬请期待!
投诉 评论 转载

面对复杂项目,如何提高设计方案的可行性?你一定知道这种感觉,当你向团队其他成员展示你的设计方案的时候,没有人向你点头微笑,也没有人对方案表示肯定。今天这篇译文分享了作者管理复杂设计项目时的一些经验。你一定知道这……一款比价产品的设计之路本文抛开技术不谈,尝试从产品的角度去探讨一下,如何去设计一个基本款的自动比价产品,分别有哪些阶段,每个阶段应该输出什么。对于电商企业,比价系统就像内裤,穿上了感觉区别不明……设计经验:从人和产品的复杂性切入从小到大我的理想一直都是做一名设计师,喜欢满世界的逛,喜欢把自己一个人关在房间里写写画画。工作后真的成了一名设计师,才发现设计其实只是设计师工作职责中一个很小的部分,或者说需要……当代网站10大最常见和最具破坏力的错误设计早在1996年,我们就汇总了网站的10种错误设计。今年,我们访问了215位英美用户,就当代网站存在的错误设计进行了新一轮大规模可用性研究。从小型的地方性商业网站、娱乐网站,到非……设计师做需求分析,如何避免这4个误区?说到“需求”,简简单单的两个字,却困扰了很多的设计师和产品经理。迷茫的设计师一边做一边猜,猜不对就改,改了还不对,回去再继续改。总会有人给你提各种各样的意见,你按他们的意见去改……关于电商设计的那些事儿,此文讲的最全面!本文将从电商发展史出发,接着讲了电商设计的发展趋势以及电商设计师会在哪些领域活跃,最后是从三方面讲述了电商设计这条路该如何走好。详情如何,不妨往下一读。一、电商发展历程……产品设计的思考方式:视觉的亮点与轻重(三)通常,考虑到用户的认知成本和学习成本,大多数界面都可以追随已有的行业惯例(例如那些已经影响用户习惯的大应用的做法)、平台的界面设计规范,而在适当的地方做出亮点,控制好界面效果的……产品设计的思考方式:层次(二)产品的视觉体验本身要有意义,而不能仅仅是单纯的好看、漂亮。这里的意义,其中很重要的一点就是体现出层次来。专业人士与非专业的区别,就在于看到一个产品时,不仅仅能看到外在的表象,更……深浅兼顾的入口设置:Lofter的好友邀请流程设计本篇以Lofter为研究对象,为其设计一个邀请好友加入一起玩LOFTER的流程,设计范围由刺激用户发起邀请开始,到成功将邀请发送给朋友为止。好友邀请是当前许多应用产品尤其……电商技术解密:如何让用户快速地打开商品详情页?如何尽量减少用户的流量,减少客户端与后台的交互,让用户在APP上有比较好的体验,这些都是在设计商详系统时候需要面临的挑战。今天来跟大家聊聊商详,商详是展示商品详情信息的一……产品设计的思考方式:优先级(一)想要打造好的产品,无论是互联网的网站、移动应用、微信公众号小程序、内容产品,甚至是实体产品,都需要随时定义各个层面上的优先级,减少损耗。人类拥有无穷的欲望,却只拥有有限的……设计心得:如何提高验证方式的可用性验证码的作用是什么呢?它有哪些类别?怎样平衡用户体验和用户帐号信息、敏感信息安全性之间的关系呢?本人做过一点通行证相关的交互设计工作,现在整理一下和大家分享,并和大家探讨如何提……
职场正能量的语录69条职场正能量的语录简洁的职场的语录48条职场的语录职场正能量的语录职场的语录55条简短的职场的语录75条职场的语录59条职场励志演讲稿职场正能量的语录职场心灵鸡汤语录职场的语录咽喉炎干咳怎么办(干咳久咳咽痒吗?推荐用这些药)国医大师:脚上这个部位,手指点按几下,就。。。民事纠纷起诉期是多久散头发睡觉更健康的人都错了怪不得头发油得快感悟自然作文800字练习册为什么销量很大?国务院物流保通保畅工作领导小组全力打通物流大动脉和微循环年轻人有中风前兆该怎么治疗Word文档另存为时提示无法以指定的文件类型保存怎么办对月同文祯宗兄赋袭人和晴雯虽身处富贵的怡红院,却是那个时代卖儿卖女的一个缩影公司辞退员工什么情况下补偿

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界