分布式架构——分布式架构的演进过程(下)
上一篇博客简单介绍了分布式的发展历史和基本概念
本篇博客则将以电商系统为例,详细介绍分布式发展的过程
假设我们的电商系统中只有三个模块:用户模块,交易模块和商品模块
阶段一:单应用架构
在网站创建初期,经常把所有的东西都在一台机器上部署,这个时候的架构是单应用架构,优点是效率非常高
阶段二:应用服务器和数据库服务器分离
网站上线了,随着时间推移,访问量开始逐渐增大,服务器逐渐的就扛不住了,这个时候就要考虑加机器了,这就进入了第二阶段。
这个阶段增加机器的主要目的是将web服务器和数据库服务器进行拆分,这样不仅提高了单机的负载能力,也提高了容灾能力
第三阶段:应用服务器集群
然而随着访问量的持续增加,单台服务器已经无法满足需求。假设数据库服务器的还未遇到性能问题
此时可以增加应用服务器,这就进入第三阶段——应用服务器集群。
在这个阶段有些问题就逐渐显现出来了,比如:
(1)用户的请求该由哪一台机器进行处理? ——负载均衡(F5/apache/nginx)
(2)如果用户每次请求的机器不同,那么session如何维护?
1、session同步
2、通过第三方存储(redis等)存储session
3、跳过容器对象
这样架构就变为了以下模式。
阶段四:数据库读写分离
随着业务量进一步增加,数据库服务器的I/O能力会存在瓶颈。
首先考虑的是加机器,但是如果直接一分为二,每次读写还要额外判断数据应该在哪台机器上。
基于电商系统数据库读多写少的特点,可以将一个服务器作为写库,另一个库设为读库,
并设置主从同步进行复制。
这样也会带来数据库不一致的问题,这个问题后期有时间会单独讨论。
实际上,如果读库的量远大于写库的访问量,需要设置多个读库时,可以采取以下的结构
阶段五:引入缓存机制
对于热点数据,没必要每次都去数据库中读取,应该使用 redis、memcache等将这些数据缓存起来
至此,分布式架构的基本框架已经形成。
阶段六:数据库的水平、垂直拆分
数据库永远是最容易造成瓶颈的地方之一,例如阿里巴巴09年“去IOE运动”就是为了解决数据库扩展性瓶颈问题。
在整个架构的编号过程中,所有的数据还是在同一个数据库中的,因此我们可以考虑对数据进行拆分
其中:
垂直拆分就是把不同业务的数据拆分到不同的数据库中
水平拆分则是把同一个表中的数据拆分到两个甚至更多的数据库中,有些公司的数据库是按照日期分为31*N个数据库
阶段七:应用拆分阶段
随着需求的不断提出,应用的体量也越来越大,因此需要按照领域对业务进行拆分
至此,完整的分布式架构演进过程结束
tips:分布式架构和微服务架构
分布式:
- 不同模块部署在不同服务器上
- 作用:分布式解决网站高并发带来问题
而微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务是可以部署在一台服务器上的。
如果有兴趣,可以加群一起学习。
分布式架构——分布式架构的演进过程(下)相关推荐
- Java后台架构-分布式-高可用-集群-负载均衡-正向代理和反向代理
双 11 即将来临,本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最 ...
- 架构设计(2)---分布式架构的演进过程
分布式架构的演进过程 一.分布式架构的发展历史 1946年,世界上第一台电子计算机在美国的宾夕法尼亚大学诞生,它的名字是:ENICAC ,这台计算机的体重比较大,计算速度也不快,但是而代表了计算机时代 ...
- 淘宝千万级并发分布式架构的14次演进
一.概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. ...
- 分布式架构的发展及演进
分布式架构的发展及演进 1. 为什么使用分布式架构 1946年,世界上第一台电子计算机在美国的宾夕法尼亚大学诞生,它的名字是:ENICAC ,这台计算机的体重比较大,计算速度也不快,但是而代表了计算机 ...
- 调度框架学习笔记(3)—— 集群调度框架的架构演进过程
本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...
- 关于分布式多级缓存架构,也许你一直考虑的太简单了
这篇想聊的话题是:「分布式多级缓存架构的终章」,如何解决大流量.高并发这样的业务场景,取决于你能不能成为这个领域金字塔上层的高手? 能不能把这个问题思考清楚决定了你的成长速度. 很多人在一个行业5年. ...
- 浓缩精华的架构演进过程,我连看了六遍!
" 业务驱动技术的发展是亘古不变的道理.最开始的时候,业务量少,业务复杂度低,采取的技术也相对简单,基本满足用户对功能的需求. 作者:崔皓,来自51cto技术栈 简介:十六年开发和架构经验, ...
- 阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程
阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架 ...
- 【分布式】分布式架构-ESB SOA
一.前言 1.前言 转载:添加链接描述 上篇文章,我们聊到了分布式架构的演进过程,那本文我们就来聊一聊目前主流的分布式架构以及分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了.分布式架构中 ...
最新文章
- 融资2.1亿商汤领投,他要用VR+AR解决无人驾驶的路测难题
- CentOS 6.8 部署腾讯蓝鲸运维平台
- Docker 制作镜像-redis
- pandas的reindex功能
- mac mysql安装_Mac下MySQL的安装【手摸手系列】
- Linux文件夹操作
- java反射 优缺点_Java反射机制的原理与使用(反编译)
- python生成器yield原理_python生成器generator,yield
- php ci get,CI框架查询语法
- 儿童专注力训练之找不同2、数数
- 【HLA】初识HLA/RTI
- tobit回归模型matlab,Eviews中如何操作tobit模型
- 51单片机基础——串口通信发送字符ab控制流水灯
- 音频编码方案之间音质比较(AAC,MP3,WMA等)
- 导航栏保持居中并使用swiper作为轮播图进行背景轮播背景
- 想成为我的同事,不会点Linux怎么行!
- linux认证考试有哪些
- ¥1-2 例2.2 将两个集合的并集放到线性表中
- 如何用u盘做系统盘?
- PyTorch学习笔记——图像处理(transforms.Normalize 归一化)