最近学习这个,开个帖子专门总结一下:
一、一号店的架构演化。http://geek.csdn.net/news/detail/62985
其中提到了:架构层面的规划有业务逻辑层的拆分-SOA服务化,另一个是DB层的水平拆库。
SOA化感悟:订单是电商中的核心业务,还关联着其它很多模块,必然要拆分。其实soa的思想与我们业务中的分层差不多,我指的不只是J2EE项目中的dao,service,controller,这个是非常基本的分层,当然最初设计的人是这个思想,后面的人已经不要考虑了,所以不代表就掌握了这个思想。其实重要的是service层的再分层,这就体现出设计水平的高低了,怎么拆,拆几层,相互调用关系,参数传递,边界等都是要考虑的要素。拆分后一方面可以共用公共的部分,另一方面结构清晰,还有就是分离出异步操作。
我见过别人写的超长的方法,别人看很累,不知道自己回头看有没有这样的感觉,至少分成几个调用关系。学会了拆分,甚至一些设计模式自然就用上了,比如模板模式,比如回调模式。可以说学不会拆分就用不好模式。
DB水平拆库:数据库会成为高并发的瓶颈,虽然我们的小业务中没有分库,但偶尔的大的共享对象用一下copyOnWriteArrayList也是一个道理。读多写少的时候用。而且在之前分析阿里的druid的源码时,我们看到数据源对象的filters用的就是这个,很多很多filterchain对象引用到它,如果不分离,还要加锁,那性能肯定差了远了。水平拆库一般ID是取余的方式,你按买家定单拆分了库,那卖家的数据必然分散多库了,所以最好卖家复制一份按卖家放从库方便卖家读取,但写的时候还是写主库。
二、59store技术架构http://geek.csdn.net/news/detail/74177
经过半年的不断抽象、剥离、重构,现在59已经形成了一整套基础服务体系,以及构建在其之上的众多业务。
SOA化感悟:同样也是基础服务体系的soa化,很难想象不分层,不分模块,如何开发复杂庞大的系统。如何应对变化,如何应对分工,如何应对排错,如何查找瓶颈...
秒杀商品信息全部缓存在Redis集群中,以减缓高并发场景下的系统压力和数据库负载。假设一个商品秒杀库存有5件,库存的信息会被存储在一个Redis集群中,并且留有一定冗余,比如记录秒杀商品库存为8件。
秒杀技术:已经看过一些秒杀技术,比如阻止大量的请求最终到达后台,还考虑数据库锁定等。所以把数据都拿缓存中,甚至也可以用一些锁定对象策略,我试过一个数组对应一类商品,数组里是空对象,得到一个锁才能得到一个商品,最后再写入库中结果。
还有就是用队列方式,想起14年抢上海马拉松名额,网站崩溃了,后来人家用的消息队列。其实钞杀可以用生活场景设想,可能你没设计过系统,但你肯定可以设计好生活中的抢购,至少参与过生活中的抢购吧:
比如想象生活中很多人拥过来抢东西,可以每人领到一张有号码的票,拿到票的人到一排固定的桌子上有位置可以填表买商品。保安大叔不时检查有没有空桌子,有的话正好安排下一个去空桌子。有时候可以随机排几个队,那就安排几个保安负责把本队的人放进空桌子,但会产生共享冲突,要锁定。排队买火车票时,你发现正好有1张票,真正买时没了,没准边上一队伍的人正好也看到1张,先下手了。
还有生活中抢头香吧,一群人冲进来多危险啊,我看只要冲进来3个人就关头道山门,之后看谁先跑到香跟前。
还有新娘抛花,很多人抢,只能一个人抢到,那就干脆随机数。
还有一些品牌店促销,每个店有10个货,但热门的地方一下就没了,远的地方可能还有。那要么就这样了,要么调配货品。可能你听说远的地方有,但过去一看,已经排了15个人了,几乎没机会了,就放弃吧。
生活中的场景多,有时候有先后顺序,有时候简化处理,所以各家的秒杀系统可能也有不同之处,不过商品放缓存中总是比数据库中快。也可以设想东西摆到桌子上比从后面仓库中取快,生活中买鞋子一般店员从后面取,摆的只是样品,促销的嘛直接摆在小车上也是一样道理。这样感觉好理解多了!
分享到:
相关推荐
内容营销是电商领域中的另一大焦点,包括博客文章、视频、社交媒体帖子等。通过创造有价值的内容,商家可以建立品牌形象,吸引并保留客户。会议可能探讨了如何创建吸引人的内容,如何利用内容提高转化率,以及如何...
2. 风险评估:电商运营中的风险包括政策变化、市场竞争加剧、技术更新等。企业需要定期进行风险评估,制定应对措施,降低潜在损失。 3. 成本控制:电商企业的利润很大程度上取决于成本管理。合理控制营销费用、人力...
随着科技的进步,如人工智能、大数据、区块链等新技术的应用,电商模式不断演变,创业者需要持续学习,适应市场变化,才能在竞争激烈的环境中立足。 总结来说,创业教育为电商创业者提供了必要的知识基础,而有效的...
本部分将详细探讨这些关键知识点,并结合提供的资料,阐述如何应对诸如虚假用户注册、欺诈订单、羊毛党等问题。 首先,电商面临的一个主要威胁是虚假用户注册。这通常涉及利用自动化工具如打码平台进行恶意注册,...
以惠当家电器为例,这个主题深入探讨了如何在数字化时代打造并提升一个电商品牌。以下将详细阐述电商品牌建设的相关知识点。 首先,电商品牌定位是核心。惠当家电器在市场中必须明确自己的定位,是高端品质、性价比...
在当前的数字化时代,推荐系统已经成为了我们生活中不可或缺的一部分,从电商购物到视频播放,从音乐推荐到新闻推送,无处不在。标题“9-1+推荐时代的内容理解技术初索”暗示了我们将深入探讨在推荐系统盛行的背景下...
了解并学习最新的反爬策略、爬虫框架更新以及相关法规变动,是保持爬虫技能与时俱进的关键。 总结,Python爬虫涉及的知识面广泛,从基础的HTTP请求到复杂的分布式系统,都需要逐步学习和实践。通过不断地学习和项目...
本文将深入探讨一种特别针对情感分析训练的数据集——"情感分析评论训练数据",并结合深度学习技术,解析其在训练模型过程中的关键作用。 "情感分析评论训练数据"主要包含大量带有标注的评论文本,这些文本主要来源...
根据给定的文件信息,我们可以深入探讨分页技术在IT领域的应用,特别是在数据库查询与结果集处理中的关键作用。分页技术是数据管理和展示中不可或缺的一部分,尤其在处理大量数据时,它能有效地提高系统性能和用户...
商业策略排序的演进过程中,从早期的CTR(Click Through Rate)预估模型到后来的深度学习探索,模型机制不断升级,如采用GBDT+FTRL组合算法,引入更多高阶特征,以应对用户兴趣的实时变化和新用户、新帖子的冷启动...
本教程以"JSP程序设计精彩实例"为主题,深入浅出地探讨了Java Server Pages(JSP)技术在实际项目中的应用。通过一系列的完整实例,包括购物车和BBS论坛等常见应用场景,旨在帮助开发者理解和掌握JSP的核心概念、...
在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的高效展示。"Ajax + Servlet" 分页技术...这种技术广泛应用于各种Web应用,特别是在处理大量数据的场景中,如电商网站的商品列表、论坛的帖子列表等。
在IT行业中,搜索技术是至关重要的,特别是在大数据和互联网领域。"seach 搜索"这个标题暗示我们将讨论关于实时搜索的一些实例。实时搜索允许用户在输入查询时立即得到相关结果,提高了用户体验,尤其是在处理大量...
标题中的“行业分类-设备装置-一种结合图像内容和关键字的信息推荐方法及系统”表明了这个压缩包内容涉及的是信息推荐技术,特别是针对设备装置行业的应用。这种技术可能结合了图像处理和关键词分析来提高信息匹配的...
AJAX分页是这种技术的一个重要应用场景,尤其在数据量大的列表展示中,如电商的商品列表、论坛的帖子列表等。本实例主要探讨如何在JSP(JavaServer Pages)环境中利用AJAX实现分页功能。 首先,我们需要理解AJAX的...
在本篇文章中,我们将深入探讨分页技术的设计,包括其重用性、设计策略以及实现方法,并关注公共的分页应用场景。 一、分页设计的重用性 分页功能的重用性是提高代码效率和减少开发时间的关键。通过创建可复用的...
在Java Web开发中,分页是一项非常重要的功能,它能够帮助用户更有效地浏览大量数据,提高用户体验。在处理如电商商品、论坛帖子等...在实际开发中,应结合具体项目需求选择合适的方法,同时不断学习和优化分页策略。
在这个项目中,我们将探讨以下几个核心知识点: 1. **Spring框架**:Spring作为核心容器,负责管理应用对象(如Bean)的生命周期和依赖注入。在BBS系统中,Spring将用于创建和配置数据库连接、业务逻辑层对象以及...
【描述】:本文主要探讨了2016年电商行业中“直通车”营销工具的运用,特别是在刷单平台受到打击后,商家如何转向真实用户刷单并建立资源共享平台。文章分享了在刷单受限的环境下,通过建立联盟共享资源以提升爆款...