首页 > 编程知识 正文

分布式电商系统项目总结,大型分布式网站架构设计与实践

时间:2023-05-05 13:10:46 阅读:142273 作者:2221

分布式架构设计之电商平台

什么是软件体系结构? 虽然每个人的答案都不一样,但我认为优秀的软件体系结构除了业务功能外,还具有一定的高性能、高可用性、高可扩展性、可扩展性等非功能性需求。 另一方面,软件体系结构由业务体系结构和技术体系结构两部分组成。 有了业务结构,就有了软件体系结构,可以满足业务需求。 因此,在设计软件体系结构时,必须分为业务体系结构设计和技术软件体系结构设计。 两者不能分离哦。 然后,以实际运行的EC平台为例,说明EC平台体系结构设计。 由于不同行业的产品、系统业务不同,催生的系统软件的实现要求和架构设计不同。

l体系结构设计的必要性

lEC平台的需求

l平台的业务体系结构

l平台的技术体系结构

l平台体系结构总结

一.体系结构设计需要

架构师,我想很多人都知道,其实这个职位的头衔最早不在IT领域。 那是近年来由互联网的发展引起的需求。 现阶段数据量高、并发性强的活动使得许多传统技术人员望尘莫及,企业越来越关注系统架构的重要性,于是不同行业开始招聘架构技术人员,架构应运而生。

1、体系结构设计条件

我个人不建议具备以下条件的人赶紧建立架构。 其实,架构师的头衔并不像想象的那么神秘。 到底是什么节点的同学呢?

a、对架构不感兴趣,但需求很紧

b、进入IT行业,年限不足4年的;

c、主观能动性弱,安于现状的;

请注意,以上只是个人考虑,不具有代表性。 如果能循序渐进的话,秒杀上面的一些不满只是时间问题。

2、体系结构设计的好处

a、更好地理顺业务结构体系

b、更好的扩展、维护及性能优化;

c、更好适应企业业务弹性推进

d、更好适应大数据的清洗和应对;

e、更好的稳定性、低成本、快速迭代

3、架构设计注意事项

体系结构设计应该关注的是如何构建体系结构,而是基于业务需求的严密分析,以及为了实现这一需求,需要更好、更长远地发展什么样的技术否则,体系结构设计就会适得其反,增加不必要的工作量。 那么,详细说明架构设计的战略。

二.电商平台需求

1、客户需求

a、网上购物、网上支付或货到付款

b、购买商品后,客户可以与客户取得联系;

c、商品采购过程、物流的管理和跟踪;

d、收到商品后,商品、物流评估评分;

客户需求最高,代表了企业的核心需求。 当然,企业的需求还包括许多其他非功能性的需求。 具体请参考需求组织部分。

2、整理需求

客户需求

功能要求

非功能要求

在网上购买商品

购物车、结算、会员管理

用户体验(性能、可用性)

在线与顾客沟通

在线支持功能

实时通信能力

网上或货到付款

多种支付方式,包括网上或货到付款

安全、加密、多种支付方式灵活切换

网上商品物流评论评分

商品、物流评价评分

物流系统对接

以上只是对电商平台的需求进行了简单的列举,还没有列举出很多需求。 在这里,只是为分析和设计EC平台的框架做准备。 具体其他需求请参考京东、淘宝等商城。

三.平台业务结构

根据业务需求进行子系统模块划分,可以划分为商品子系统、购物子系统、支付子系统、物流子系统、客户服务子系统、评论子系统; 非核心需求可以划分为呼叫子系统、注释子系统和接口子系统。 另外,根据各子系统的核心等级,可以分离出核心子系统和非核心子系统,前者包括商品子系统、购物子系统、支付子系统以及物流子系统; 后者包括注释子系统、呼叫子系统和接口子系统。 需要注意的是,一般大型电商平台的物流系统是单独分离的系统(入库、出库、库存管理、配送管理及商品管理),这里划分子系统的主要目的是展示核心体系结构,在该体系结构中

1、业务分割目的

a .为了解决各模块子系统之间的耦合、维护及可扩展性;

b、容易单独部署子系统,避免集中部署出现一个问题,不能全部使用;

c、指派专门团队,负责具体子系统,最大化生产安排;

D .支持大数据,在压力较大时保护核心子系统正常使用;

2、业务结构图

上面的业务结构图将核心业务和非核心业务进行划分,同时各系统必须独立部署实现,可以控制大数据量,使各系统独立运行,提高可用性,必要时可以暂停非核心系统

的资源开销,保证核心业务正常为用户服务。

 

四、平台的技术架构

在上面业务架构图基础上,我们需要一个技术架构的演变过程,一切只为满足用户的体验和支撑为前提,所以技术架构的搭建不是一蹴而就的,而是随着业务的不断衍变,系统的架构会逐渐完善更新,以实现应对业务数据量的冲击。

 

1、基本的架构设计

记得很早的时候,很多中小企业所采用的架构设计十分简单,基本使用一台服务器来满足一切需求部署,比如:一台服务器同时用作应用部署、数据库存储以及图片存储等,不料的是待用户数据达到50万以上,系统出现很多性能问题,尽管对数据库和程序做个各种性能优化,结果仍无明显改善,架构如下:

 

后来,IT程序猿发现图片的读写严重影响了系统性能,并将图片单独存放在独立服务器中,并且在架构中引入了Cache中间件,比如:Memcache,这种做法是可取的,而且比原来性能提高了1-2个性能级别,架构设计如下:

 

 

2、初级的架构设计

前几年,一般的电商网站的做法是选用三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统,做到将各个规模庞大并耗用性能的部分剥离到不同服务器设备,再配备必要的缓存中间件,基本可以满足近1000万的数据量,具体的架构图如下:

 

但是,目前主流使用的网站架构已经不同,大多采用集群的方式来实现负载均衡和高可用性,架构可以是下面的样子:

 

注意:

如果涉及到多台网站服务器的话,就会存在Session如何同步的问题,一般也是最为常用的做法,就是使用Cache中间件来存储和管理Session信息。

 

3、优化的架构设计

这里为解决高并发,高可用的大型电商网站的架构设计方案,主要采用了分布式、集群、负载均衡、反向代理、消息队列及多级缓存技术。该架构设计方案,是现今比较流程的大型电商网站采用的架构模式,比如:淘宝、京东等,也许会有细微不同的地方,但大同小异哦!具体的架构图方案如下:


3.1、应用集群部署

 

3.2、分布式

分布式,即为借助互联网环境连接不同服务器,并各个连接的服务器之间通信交互,提供服务异步调用和返回的通信机制。在这里,主要就是实现商品评论、购物客服、支付接口及物流打分系统各自所在服务器间的通信化,我们可以通过RPC协议直接在他们之间交互通信即可,而上面优化的架构即为分布式架构。

 

3.3、集群

集群,分为服务器集群、数据库集群及缓存中间件集群等,但这里主要指的是数据库的集群设计。数据库集群,可以实现主备数据库,做到读写分离以及高可用的实现。大型网站需要存储大规模的数据量,需要实现高可用、高并发、高性能的系统设计,一般采用冗余的方式进行系统设计,具体如下架构:

 

冗余方式设计数据库集群,最为常用的方式为:读写分离和分库分表了。主数据库服务器只负责写入数据,而备用服务器数据库只负责读取数据,可以做到降低数据库的IO压力;另外,如果业务系统比较庞大,可以进一步根据业务的关系度及增长频率分库,若库中的但表数据量比较大,可进一步分表,具体的分库分表可查看我的博客文章数据库的分库分表。

 

3.4、消息队列

消息队列,是分布式系统的常用组合,其可以解决子系统或模块间的异步通信,实现高可用,高性能的通信系统,比如:可以用在购物和配送环节,如下:

A、用户下单后,写入消息到队列,并立即返回结果给客户端;

B、库存子系统,读取消息队列,完成消减库存;

C、配送子系统,读取消息队列,并进行配送货品;

 

目前常使用的MQ技术有:Rabbit MQ、Active MQ、Zero MQ及MS MQ,需要根据具体的使用场景进行选择。具体的架构如下:


3.5、缓存策略

缓存,是一种缓解系统压力的存储技术,主要使用在缓存数据库IO压力而设计。按照位置的不同,可以分为本地缓存和分布式缓存两种,本篇架构采用两级缓存,一级缓存为本地缓存,二级缓存为分布式缓存。而一级缓存一般用来缓存基本不变或规律变化的数据,二级缓存用来缓存所有需要的数据信息,应用程序首先访问一级缓存;如果一级缓存没有需要的信息,那么取访问分布式缓存,如果分布式缓存也没找到需要的信息,最后去访问数据库获得数据。另外,根据业务需要,缓存分为自动过期和触发过期,具体的架构图如下:

 

3.6、服务抽象化

抽象化概念,可以很好的实现低耦合,高拓展作用,我们可以将各个子系统公用的功能或模块抽取出来,封装为共有的服务组件或接口,供各个现有子系统或是新增系统调用,这也是SOA架构的基础思想,具体的架构如下:

 

五、平台架构的总结

这里主要总结的是优化架构,架构按层次结构罗列组织,共分为四层,分别为负载均衡代理层、应用集群系统层、分布式服务层及数据资源层,层次分工明确,高拓展,低耦合,负载均衡、集群、分布式及缓存等技术的使用,架构如下:

 

 

 

 

好了,电商平台的架构设计就介绍到这里,本篇主要是介绍架构设计的思路及应用的核心技术,供在架构设计的同学参考借鉴哦!由于作者水平有限,如有不对或是误导的地方,请不吝指出讨论(QQ群:497552060(新))。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

好了,电商平台架构的初级设计就到这里,由于作者水平有限,如有不正确或是误导的地方,请不吝指出讨论(技术交流群:497552060(新))

转载请标明出处,原创文章来之不易,标明转载地址:http://blog.csdn.net/why_2012_gogo/article/details/52823761,谢谢

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。