秒杀系统设计的时候需要考虑哪些原则或者因素?

提问者:帅平 问题分类:微服务
秒杀系统设计的时候需要考虑哪些原则或者因素?
5 个回答
缝完心脏、一个人活
缝完心脏、一个人活
尽量不要有单点
系统重出现单点在秒杀系统架构中属于一个大忌,因为单点意味着没有备份,风险不可控,一旦发生问题会导致整个系统不可用。避免单点的最好方式就是把服务无状态化,这样服务就可以进行多实例的部署,在必要的时候可以动态的增加或者减少实例数量。
发布于:2周前 (04-18) IP属地:四川省
白鸥掠海
白鸥掠海
依赖要尽量少
这里指的是要完成一次用户请求必须依赖的系统或者服务数量要少。比如商品详情页,这个页面必须强依赖商品信息,但是商品评价,交易列表等这些对于商品详情来说不是必须的,因此这些弱依赖在紧急情况下可以去掉。根据系统的重要性,我们可以给系统进行分级,比如0级系统,1级系统,2级系统等等,0级系统是最重要的,1级系统重要性次之,2级系统重要性更加次之。在商品详情里面,商品系统可以是0级系统,评价系统可以使1级系统。极端情况下可以把评价系统给降级,防止商品系统被评价系统给拖垮。
发布于:2周前 (04-18) IP属地:四川省
浅时光
浅时光
路径要尽量短
这里是指用户发出请求到返回数据这个过程中,需求经过的中间的服务节点数要尽可能的少。这些节点就是业务系统或者系统中间件,比如说消息队列,每经过一个节点,一般都会产生新的网络请求。然而每增加一次网络请求都会增加新的不确定性和延时。从概率统计上来说,假如一次请求经过5个节点,每个节点的可用性是99%的话,那么整个请求的可能性差不多就降到了95%。所以缩短请求路径不仅可以增加可用性,同样可以有效提升性能,并减少延时。
发布于:2周前 (04-18) IP属地:四川省
冷清°
冷清°
请求数尽量少
用户请求的页面返回后,浏览器渲染这个页面还要包含其他的额外请求,比如说这个页面依赖的CSS/JavaScript文件、图片以及Ajax请求等都可以定义为“额外请求”,这些额外请求应该尽量少。因为浏览器每发出一个请求都会建立网络连接,消耗资源,例如建立连接需要进行三次握手,另外如果不同请求的域名不一样的话,还涉及到这些域名的DNS解析问题,可能会耗时更久。所以减少请求数可以显著减少以上这些因素导致的资源消耗。
发布于:2周前 (04-18) IP属地:四川省
空瓶在漂流
空瓶在漂流
数据尽量少
这里是指用户请求的数据能少就少,请求的数据包括上传给系统的数据和系统返回给用户的数据。客户端和服务器的数据在网络上传输需要时间,而且不管请求数据还是返回数据都需要服务器做处理,而服务器在处理网络数据的时候通常都用做压缩和字节编码,这些都非常消耗CPU资源,所以减少用户请求数据可以显著减少CPU的使用。
发布于:2周前 (04-18) IP属地:四川省
我来回答