eshop1-大型电商架构演进
1. 项目初期

2. 服务器分离

以上的服务分离架构,即使文件服务crash 了,但是application server 和 Database Server 继续可以访问运行
3. 基于并发访问越来越高,数据库压力越来越大,引入分布式缓存

80%的数据访问基于20%的业务数据上,28原则
分布式缓存思考
(1).那种业务数据适合远程分布式缓存
(2).那种业务数据适合本地缓存
(3).分布式缓存扩容的时候存在的问题,如何解决,算法有哪些
(4).基于这种架构,我们需要解决的问题
4. QPS 访问越来越高,Application Server 将会出现瓶颈,增加负载均衡调度服务器

思考的问题
(1).负载均衡的调度策略有哪些,各有什么优缺点,例如轮训(实现简单,不考虑服务器的处理能力),权重(考虑服务器处理能力),地址散列(原IP地址散列,目标地址散列, 实现同一个用户访问同一个服务器)
(2).假设一个场景,一个用户第一次访问A 服务器,session信息被存储到A服务器上,但是由于负载均衡服务器,同一个用户第二次访问的时候,访问了B服务器,但是B服务器上没有用户的session信息,因此解决session管理的问题

上图session 管理缺点
(1).某一个application server 重启了,这时候session 全部消失
(2).第二种session解决方案,session copy


(1). 解决session共享问题
(2).缺点Cookie长度是有限制的
(3).Cookie 保存在浏览器上,不安全
因此出现了一下方案

缺点
(1).Session server 是单点,如何保证系统正常的运行
(2).我们可以考虑session server 集群
(3).适用于Web服务器session 服务器多的场景
5. 当用户量达到一定数量时,数据库就会出现瓶颈,如何解决,数据库的读写分离

应用接入多数据源
应用程序也应该需要相应的变化
data access module 数据写入模块,是开发人员不知道读写分离的存在,多数据源对业务代码无侵入性
当数据的IO非常大的时候,我们的主库与附库在跨机房传输的时候,又是一个要解决的问题?
6. 增加CDN 与反向代理服务器,可以很好的解决不同的地区访问速度的问题

反向代理可以缓存用户数据,这个时候我们的文件服务器可能会出现了瓶颈
7. 文件服务器分布式集群

分布式文件系统
(1).是否需要备份服务器
8. 这个时候,数据库又出现瓶颈,专库专用的原则(micro service的设计理念),进行数据的垂直拆分,解决写数据并发量大的问题

问题:
(1). 跨数据库的事务
(2).可以使用分布式事务
(3).或者去掉事务,或者不使用强制性事务
随着数据量,访问量的变大,我们每个业务的数据量已经达到单个数据库的瓶颈,这个时候进行数据库水平拆分

解决单数据库的问题
拆分的时候注意点:
(1). SQL的路由问题
(2).既然user表进行了分库,但是面临的另外一个涉及分页的问题
9. 当解决这以上问题之后,我们的搜索又会出现瓶颈,把应用服务器的搜索功能独立出来,架设一个搜索引擎服务器

data access module 链接着数据库,搜索引擎,NoSQL Server
该架构也不是最后的架构,根据实际的业务来决定,例如以上的架构负载均衡服务器是一个单点,因此仍然可以继续提升优化空间
eshop1-大型电商架构演进的更多相关文章
- 大型电商业务架构 IT大咖说 - 大咖干货,不再错过
大型电商业务架构 IT大咖说 - 大咖干货,不再错过 http://www.itdks.com/dakashuo/new/dakalive/detail/591
- [刘阳Java]_大型电商网站架构技术演化历程
今年的双十一已经过去一段,作为技术小咖啡,我们先说一下大型电商网站的特点:高并发,大流量,高可用,海量数据.下面就说说大型网站的架构演化过程,它的技术架构是如何一步步的演化的 1. 早期的网站架构 初 ...
- Spark大型电商项目实战-及其改良之番外(1)-将spark前端页面效果高效拷贝至博客
Spark大型电商项目实战-及其改良这个系列的时间轴展示图一直在变....1-3篇是用图直接表示时间轴,用一段简陋的html代码表示时间表.第4篇开始才是用比较完整的前端效果,能移动.缩放时间轴,鼠标 ...
- C# 大型电商项目性能优化(一)
经过几个月的忙碌,我厂最近的电商平台项目终于上线,期间遇到的问题以及解决方案,也可以拿来和大家多做交流了. 我厂的项目大多采用C#.net,使用逐渐发展并流行起来的EF(Entity Framewor ...
- 电商架构设计-通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性
个人观察 1.通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性. 2.单一职责原则SRP,真的很关键,广大程序员需要不断深入理解这个原则. 3.架构图是架构师的重要输出,通过图 ...
- C#大型电商项目优化(二)——嫌弃EF与抛弃EF
上一篇博文中讲述了使用EF开发电商项目的代码基础篇,提到EF后,一语激起千层浪.不少园友纷纷表示:EF不适合增长速度飞快的互联网项目,EF只适合企业级应用等等. 也有部分高手提到了分布式,确实,性能优 ...
- 小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫:Selenium 获取某大型电商网站商品信息
目标 先介绍下我们本篇文章的目标,如图: 本篇文章计划获取商品的一些基本信息,如名称.商店.价格.是否自营.图片路径等等. 准备 首先要确认自己本地已经安装好了 Selenium 包括 Chrome ...
- vue大型电商项目尚品汇(前台篇)day01
学完vue2还是决定先做一个比较经典,也比较大的项目来练练手好一点,vue3的知识不用那么着急,先把vue2用熟练了,vue3随时都能学. 这个项目确实很经典包含了登录注册.购物车电商网站该有的都有, ...
随机推荐
- Linux操作系统服务器学习笔记一
初识Linux: Linux 是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...
- Caffe2 创建你的专属数据集(Create Your Own Dataset)[9]
这一节尝试把你的数据转换成caffe2能够使用的形式.这个教程使用Iris的数据集.你可以点击这里查看Ipython Notebook教程. DB数据格式 Caffe2使用二进制的DB格式来保存数据. ...
- sprintf 、vsprintf 、_vsntprintf
转载:https://blog.csdn.net/anye3000/article/details/6593551 sprintf函数的定义为: int sprintf(char *szBuffer, ...
- Atcoder Beginning Contest 134E(二分查找(upper_bound),思维)
#include<bits/stdc++.h>using namespace std;int a[100007],f[100007],ans,n;int main(){ cin>&g ...
- jquery 单选框 radio是否选择问题
业务需求是当用户勾选中的时候删除数据,取消勾选的时候数据取消 //单选事件,获取到每行数据ID $('.checkItem').change(function(){ // checkItem是给rad ...
- 「CF438D The Child and Sequence」
一道CF线段树好题. 前置芝士 线段树:一个很有用数据结构. 势能分析:用来证明复杂度,其实不会也没什么关系啦. 具体做法 不难发现,对于一个数膜一个大于它的数后,这个数至少减少一半,每个数最多只能被 ...
- SRS命令
下载源码: git clone https://github.com/ossrs/srs.git 编译: cd srs/trunk ./configure && make 开启服务: ...
- 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...
- JavaScript图形实例:图形的平移和对称变换
1.1 六瓣花平移变换 平移变换是指图形从一个位置到另一个位置所作的直线移动.如果要把一个位于P(x,y)的点移到新位置P’(x’,y’),如图1,则只要在原坐标上加上平移距离Tx和Ty即可. 即 ...
- S7-300 符号IO域的组态 HMI变量指针化的方法以及应用,在一个IO域显示多个温度值的办法
应用工业场景 例如需要测试很多个节点的温度值的时候,需要监控的位置很多,如果HMI的画面很小, 可以使用符号IO域和变量的间接寻址 符号IO域接近于VB中的combo 控件 实现上图的界面 : 上图界 ...