zoukankan      html  css  js  c++  java
  • 大型网站架构系列:电商网站架构案例(1)(转)

    大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。

    根据实际需要,进行改造,扩展,支持千万PV,是没问题的。

    本次分享大纲

    1. 电商案例的原因
    2. 电商网站需求
    3. 网站初级架构
    4. 系统容量估算
    5. 网站架构分析
    6. 网站架构优化
    7. 架构总结

    电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。

    一、电商案例的原因

    分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。因此,我们采用电商网站作为案例,进行分析。

    二、电商网站需求

    客户需求:

    • 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;
    • 用户购买时可以在线与客服沟通;
    • 用户收到商品后,可以给商品打分,评价;
    • 目前有成熟的进销存系统;需要与网站对接;
    • 希望能够支持3~5年,业务的发展;
    • 预计3~5年用户数达到1000万;
    • 定期举办双11,双12,三八男人节等活动;
    • 其他的功能参考京东或国美在线等网站。

    客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。

    其他的略~~~~~

    需求功能矩阵

    需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。

    本电商网站的需求矩阵如下:

    网站需求

    功能需求

    非功能需求

    全品类的电子商务网站

    分类管理,商品管理

    方便进行多品类管理(灵活性)

    网站访问速度要快(高性能)

    图片存储的要求(海量小图片)

    用户可以在线购买商品

    会员管理,购物车,结算功能

    良好购物体验(可用性,性能)

    在线支付或货到付款

    多种在线支付方式

    支付过程要安全,数据加密(安全性)

    多种支付接口灵活切换(灵活性,扩展性)

    可以在线与客服沟通

    在线客服功能

    可靠性:即时通讯

    商品打分评价

    商品评论

    目前有成熟的进销存系统

    对接进销存

    属于约束条件

    对接时要考虑数据一致性,鲁棒性

    支持3~5年,业务的发展

    属于约束条件

    伸缩性,可扩展性

    3~5年用户数达到1000万

    约束条件

    举办双11,双12,三八男人节等活动

    活动管理,秒杀

    突增访问流量(可伸缩)

    实时性要求(高性能)

    参考京东或国美在线

    参考条件

    以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。

    三、网站初级架构

    一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。

    这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,N多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。

    如下图:

     

    但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子。

     

    (1)       使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署)

    使用数据库主备模式,实现数据备份和高可用;

    四、系统容量预估

    预估步骤:

    (1)       注册用户数-日均UV量-每日的PV量-每天的并发量;

    (2)       峰值预估:平常量的2~3倍;

    (3)       根据并发量(并发,事务数),存储容量计算系统容量。

    客户需求:3~5年用户数达到1000万注册用户;

    每秒并发数预估:

    (1)       每天的UV为200万(二八原则);

    (2)       每日每天点击浏览30次;

    (3)       PV量:200*30=6000万;

    (4)       集中访问量:24*0.2=4.8小时会有6000万*0.8=4800万(二八原则);

    (5)       每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);

    (6)       每秒并发量:16.7万/60=2780(约等于);

    (7)       假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。

    (8)       1毫秒=1.3次访问;

    没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)

    服务器预估:(以tomcat服务器举例)

    (1)       按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150]

    (2)       高峰期:需要30台服务器;

    容量预估:70/90原则

    系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,IO类似。

    以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此CPU,硬盘,网络等不再进行评估。

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/NetPig/p/9915870.html
Copyright © 2011-2022 走看看