正文
图一:拆之前的架构
图二:拆后的架构
在拆的过程中抽象了很多基础系统:如分布式消息流、数据库中间层、基础业务服务化(用户服务、订单服务等)……
作为创业公司,“拆”的过程不允许耽误业务的发展。在业务发展中寻求技术优化,不耽误业务,与业务发展寻求一个契合点,需要有很强的业务理解力和技术把控力。目前,我们还走在整体服务化的路上。
多级缓存架构在大促这种大流量期间,针对于大量的“读”接口是意义巨大的,也是保证了大促期间业务稳定的重中之重,我们
以商品详情页为例
作一下介绍。
电商的流量大入口除了首页等导流页面外,商品详情页无疑是流量的集中点。而双十一、99等大促,详情页的访问量又达到历史之最。
详情页看似简单,但其有很多的业务逻辑:比如商品改价、库存变更、sku变更、评论评价等各类与数据强相关的业务逻辑。而详情页有一个非常大的特点,就是基本以读请求为主,因此,针对详情页这类的业务,我们创建多级缓存架构。
多级缓存架构根据业务流量的变化,是一个漏斗模型的系统架构,下层的流量越小,系统就越稳定,目前我们多级缓存架构主要是三层。
第一层是CDN,这一层主要缓存的是大促期间的主会场、分会场、秒杀商品的静态页、商品的富文本详情页、商品属性页等。这部分页面都是大促期间流量最大的,也是最要求速度和体验的,放到CDN,用户根据就近节点进行访问,大大加快了访问速度,并且减少了服务器层的压力。
第二层,我们用Nginx+Lua+OpenResty做了代理层缓存,这层缓存主要缓存住了提供给客户端的API接口的数据,这层cache根据商品的业务需要,会在活动规定时间内决定其cache有效性,一旦商品所在的活动失效,才会走到下一个层次——业务层;而99%以上的流量都在这一层给抗住了。
下图是本层的一个过程图。