《购物商城开发计划》由会员分享,可在线阅读,更多相关《购物商城开发计划(11页珍藏版)》请在金锄头文库上搜索。
1、购物商城开发计划 购物商城开发计划 一、前言从优梦优2.0诞生到试运营,经历了3个月的时间,从无到有,我们克服了困难,使之能够正常的运行,但是由于种种原因,优梦优的缺陷却愈来愈明显,从功能上,未来的潜力上,都存在着很多的不足,为了优梦优能够更好的发挥电商网站的作用,为了以后愈来愈大的访问量,为了优梦优能够更安全、更稳定,优梦优3.0开发势在必行。 二、开发思路结合优梦优2.0,以及现有行业里成功的网站京东、唯品会等,去芜存菁,吸收成功网站的优点、去除优梦优1.0的问题,借鉴成功网站的经验,快速的、正确的开发优梦优3.0,使之达到现有行业中较高的水平,并把追求完美这一理念永远的执行下去。 1、硬
2、件优梦优3.0的硬件规划是建立在日访问量的基础上的,我们初期规划日pv千万级,那么需要的硬件规模大约是一台负载均衡,一台web服务器,两台数据库服务器,一台图片服务器,一台搜索服务器,一台缓存服务器,一共是7台。 我们把7台服务器分为请求层、业务层、存储层、支撑层。 每一层的服务器的数量都是可以增加的,也就是说随着业务量的增加,现有设备不能满足需求后,可以随时增加设备。 2、模块化为了使优梦优的性能更加出色,功能之间的耦合性降低,更好的扩展,所以把系统的功能按照业务类型分成各个模块。 交易中心(Trade Center)、商品中心(Item Center)、店铺中心(Shop Center),
3、这些中心级别的服务只提供原子级的业务逻辑,如根据ID查找商品、创建交易、减少库存等操作。 业务系统(Trade Manager,交易业务)、(Item Manager,商品业务)、(Shop Manager,店铺业务)、Detail(商品详情),例如,拍下一件普通商品要对订单、库存、物流进行操作,拍下虚拟商品不需要对物流进行操作。 会员系统、评价系统、用户信息系统。 系统这么拆分的好处显而易见,拆分之后的每个系统可以单独部署,业务简单,方便扩容;有大量可重用的模块便于开发新的业务;能够做到专人专事,让技术人员更加专注于某一个领域。 3、中间件硬件和系统之间,系统与系统之间,不是简单的部署就能亲
4、密无间的合作,还需要许多中间件来配合使用。 这些中间件都是一个个的系统,完成不同的功能。 负载均衡、图片处理、缓存、消息通信、分布式内容系统等等。 4、性能4. 1、功能性功能性指与一组功能及其指定的性质有关的一组属性,这里的功能是指满足明确或者隐含的需求的那些功能。 具体包括*适合性与规定任务能否提供一组功能,以及这组功能的适合程度有关的软件属性,例如面向任务系统中由子功能构成的功能是否合适,表容量是否合适等等。 *准确性与能否得到正确或者相符的结果或者效果有关的软件属性。 *互操作性与其他指定系统进行交互的能力有关的软件属性。 *依从性使软件遵循有关的标准约定法规及类似规定的软件属性。 *
5、安全性即与防止对程序技术局的非授权的故意或者意外访问的能力有关的软件属性。 如用户权限、动态口令、数据库字段加密等。 4. 2、可靠性可靠性之与在规定的一段时间和条件下软件维持其性能水平的能力有关的一组属性。 具体包括*成熟性与有软件故障引起失效的频度有关的软件属性。 *容错性与在软件故障或违反指定接口的情况下维持规定的性能水平的能力有关的软件属性。 如离线录入支持等。 *易恢复性与在是小发生后重建其性能水平并恢复直接受影响数据的能力,以及为达到此目的所需时间和努力有关的软件属性。 如表单数据自动保存等。 4. 3、易用性易用性是与一组规定或者潜在的用户为使用其软件所需做的努力和对这样的使用所
6、作的评价有关的一组属性。 具体包括*易理解性与用户为人质逻辑概念即其应用范围所花的努力有关的软件属性。 *易学习性与用户为学习软件应用所花的努力有关的软件属性。 *易操作性与用户为操作和运行控制所花的努力有关的软件属性。 如带首字母筛选功能的下拉列表等。 4. 4、效率效率是指与在规定的条件下软件的性能水平与所使用资源量有关的一组属性。 具体如下*时间特性与软件执行器功能时响应和处理时间及吞吐量有关的软件属性。 如数据缓存等。 *资源特性与在软件执行其功能时所使用的资源数量及其使用时间有关的软件属性。 如数据压缩等。 4. 5、维护性维护性是指与进行指定的修改所需的努力有关的一组属性。 具体包
7、括*易分析性与为诊断缺陷或者失效原因及为判定待修改的部分所需努力有关的软件属性。 如日志记录系统等。 *易改变性与进行修改排除错误或者适应环境变化所需努力有关的软件属性。 *稳定性与修改所造成的未预料结果的风险有关的软件属性。 *易测试性与确认已修改软件所需的努力有关的软件属性。 4. 6、可移植性可移植性是指与软件可从某一环境转移到另一环境的能力有关的一组属性。 具体包括*适应性与软件无需采用有别于为该软件准备的活动和手段就可能适应不同的规定环境有关的软件属性。 如全球技术支持等。 *易安装性与在指定的环境下安装软件所需努力有关的软件属性。 如在线更新、安装包自动生成等。 *遵循性使软件遵循
8、与可移植性有关的标准或约定的软件属性。 *可替换性与软件在该环境中用来替代指定的其他软件的机会和努力有关的软件属性。 5、新技术应用软件开发技术,是目前世界上更新速度最快的,每一天都有新的技术,新的框架应用出现,xx年应用最多,也是发展前景最好的node.js技术,需要应用到优梦优上。 而app技术目前发展的形势为原生与动态结合,所以应发展需要,也要应用在优梦优上。 至于以后的新技术,我们认为只要有用,适合优梦优,那么就可以应用到系统当中。 三、架构描述这不是方案,只是一个期许,一个想要达到的目标,所以说描述。 我把优梦优3.0分为四个里程碑,从低到高,结合版本迭代,实现最终目标。 里程碑一5
9、0万用户优梦优2.0最初的系统很小,Web服务和一个数据库服务在一台服务器上。 使用的是双CPU、8G内存的系统。 单个数据库就意味着所有数据都存储在一个地方,同时由Web服务器处理用户请求。 结果是不幸的,性能测试结果,只能支持20万用户级的访问,并发三位数以下。 这不是一个大型网站,只能说是一个微型网站。 如果用户级到达50万,那么现有的架构能支撑吗?答案是否定的,所以,第一个里程碑来了,在2个版本迭代后,网站的架构要达到2台web服务器,并能够随时增加;3台数据库服务器,做主从分离,读写分离。 当一个服务器宕机时,可以无缝切换到正常的服务器上,这里还要增加一个心跳机制。 运行在3个SQL
10、 Server数据库服务器上一个为主,所有的新数据都向它提交,然后由它复制到其他两个;另两个全力向用户供给数据。 只要增加数据库服务器,加大硬盘,就可以应对用户数和访问量的增加。 但和Web服务器不同,增加数据库可没那么简单。 如果一个站点由多个数据库支持,必须考虑的是,如何在保证数据一致性的前提下,让多个数据库分担压力。 里程碑二百万用户注册数到达1百万至2百万区间后,数据库服务器开始受制于I/O容量即它们存取数据的速度。 这一次的数据库架构按照垂直分割模式设计,不同的数据库服务于站点的不同功能,如登录、商品资料和购物。 垂直分割策略利于多个数据库分担访问压力,当增加新功能时,可以投入新的数
11、据库予以支持它。 用户到达2百万后,还可以从存储设备与数据库服务器直接交互的方式切换到SAN(Storage AreaNetwork,存储区域网络)用高带宽、专门设计的网络将大量磁盘存储设备连接在一起,而数据库连接到SAN。 这项措施可以极大的提升系统性能、正常运行时间和可靠性。 里程碑三5百万用户当用户继续增加到5百万后,垂直分割策略也开始难以为继。 尽管站点的各个应用被设计得高度独立,但有些信息必须共享。 另外一个问题是,个别应用增长太快,那么专门为它服务的数据库就有巨大压力。 这时需要对架构进行“向外扩展”部署大量相对便宜的服务器来分担数据库压力。 一般来说,大型站点倾向于向外扩展,因为
12、这将让它们得以保留通过增加服务器以提升系统能力的后路。 但成功地向外扩展架构必须解决复杂的分布式计算问题。 分布式计算架构它在物理上分布的众多服务器,整体必须逻辑上等同于单台机器。 拿数据库来说,就不能再像过去那样将应用拆分,再以不同数据库分别支持,而必须将整个站点看作一个应用。 数据库模型里只有一个用户表,支持个人资料和其他核心功能的数据都存储在相同数据库。 既然所有的核心数据逻辑上都组织到一个数据库,那么必须找到新的办法以分担负荷显然,运行在普通硬件上的单个数据库服务器是无能为力的。 这次,不再按站点功能和应用分割数据库,我把用户按每百万一组分割,然后将各组的全部数据分别存入独立的SQL
13、Server实例。 这样,每台数据库服务器实际上可以运行两个SQL Server实例,也就是说每台服务器服务大约2百万用户。 以后还可以按照这种模式以更小粒度划分架构,从而优化负荷分担。 当然,还是有一个特殊数据库保存了所有账户的名称和密码。 用户登录后,保存了他们其他数据的数据库再接管服务。 特殊数据库的用户表虽然庞大,但它只负责用户登录,功能单一,所以负荷还是比较容易控制的。 里程碑四千万用户在这个里程碑中,需要启用新的策略以减轻存储系统压力,即增加数据缓存层位于Web服务器和数据库服务器之间,其唯一职能是在内存中建立被频繁请求数据对象的副本,如此一来,不访问数据库也可以向Web应用供给数
14、据。 换句话说,100个用户请求同一份资料,以前需要查询数据库100次,而现在只需1次,其余都可从缓存数据中获得。 当然如果页面变化,缓存的数据必须从内存擦除,然后重新从数据库获取但在此之前,数据库的压力已经大大减轻,整个站点的性能得到提升。 缓存区还为那些不需要记入数据库的数据提供了驿站,比如为跟踪用户会话而创建的临时文件。 综述这只是个描述,没错,四个里程碑是我参考资料得出的结果,还是比较符合优梦优发展的轨迹的。 在描述中,里程碑并不是不可逆的,比如缓存系统从现在开始就可以开发使用。 但是在四个里程碑中,还有大量的技术需要填充,这需要人力、时间和财力。 描述中,我只描述了架构,对于软件功能没有说明,是因为商城发展到现在,商城功能基本上固定的,而个性化的功能,则需要产品经理,根据市场形势,用户习惯,针对性的提出及开发。 而商城最重要的两个瓶颈,请求与存储,是制约商城发展的最重要的因素。 所以在架构上花费更多的精力,是优梦优3.0主要考虑的。 四、实现功能计划 1、系统功能计划1. 1、修复已知BUG1. 2、设计新订单系统1. 3、设计新购物车系统1. 4、设计新优惠券系统1. 5、设计新购买系统1. 6、设计新商品发布系统1. 7、