https://mp.weixin.qq.com/s/WepFVXw17C7TYr7XMW3KOQ

1.互联网应用与传统应用的区别

互联网应用高并发,高访问量(tps,qps),海量数据

2.什么是分布式

分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段**。主要解决的问题:
(1)任务分解
(2)节点通信

从理念上讲,分布式的实现有两种形式:
水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;
垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。

3.分布式与集群的关系

电商平台: 用户、 商品、订单、 交易
分布式: 一个业务拆分成多个子系统,部署在不同的服务器上
集群: 同一个业务,部署在多个服务器上

4.计算机的发展史

(1)1946 情人节 第一台计算机
(2)1964 IBM 大型主机 SYSTEM/360 (超强的计算能力,高可靠性)—》带动了软件架构往集中式发展,主流
(3)x86 CPU
(4)RISC CPU 小型机

5.分布式架构的发展

(1)时机成熟
随着互联网,用户,产品的发展
PC性能的不断提升
大型机,小型机很贵,维护麻烦,金融电信才用的起,主机挂了,业务就挂了

(2)企业必须要做
去IOE(IBM小型机,Oracle Rac,EMC存储设备)淘宝2013年提出
替换为(PC机,mysql ,)mysql被oracle收购,其开发人员新开发了MariaDB

(3)单机计算机架构-》分布式架构
分布式架构的演变 - 图1
该图是冯·诺依曼模型,最初的计算机设计稿,我们可以把分布式理解为一台超级计算机,输入设备对应的是消息、输出设备对应的是用户、存储器对应的是数据库、运算器对应的是我们的应用程序、控制器对应的是我们的负载均衡、

6.架构的发展演变过程

(1)一台服务器
分布式架构的演变 - 图2
(2)单击负载越来越高,数据库服务器和应用服务器分离
分布式架构的演变 - 图3
(3)应用服务器做集群
分布式架构的演变 - 图4
问题:
1.session不同步:cookies,access_token解决
2.前端请求如何转发:apache,nginx
3.流量全部进来之后,数据库层面压力就出现了
升级第4版解决问题

(4)数据库的高性能操作

分布式架构的演变 - 图5

1.数据库读写分离怎么操作
2.数据库的数据同步
3.数据库路由 mycat

如果是电商平台还需要搜索引擎
1.搜索引擎的索引数据怎么去做同步,实时增量同步? 还是定时全量同步?

(5)解决访问量持续增高,引入缓存机制
用户量是没有上限的
缓存、 限流、 降级
分布式架构的演变 - 图6

用户持续进来,那么数据库瓶颈越来越明显

(6)数据库的水平/垂直拆分
一张表限制一千万数据
数据库按照不同业务维度拆分
应用按照不同业务维度拆分(此时还不算分布式,此时拆分的是业务模块,模块之间没有交互)
分布式架构的演变 - 图7

(7)应用拆分,不同模块之间可以进行消息通信
分布式架构的演变 - 图8

(8)最终
分布式架构的演变 - 图9