一、分布式架构概述
什么是分布式
一个业务拆分成多个业务模块,部署在不同的服务器里面
- 任务分解
- 节点通信
分布式和集群的关系
电商平台: 用户、 商品、订单、 交易
分布式: 一个业务拆分成多个子系统,部署在不同的服务器上
集群: 同一个业务,部署在多个服务器上
计算机的发展历史
计算机的发展历史
- 1946 情人节
- 1964 IBM SYSTEM/360
超强的计算能力、 高可靠性 - X86 CPU
- RISC CPU 小型机
软件架构往集中式发展, 成为当时软件架构的主流
分布式架构的发展
- 时机成熟了
PC机的性能不断提升 - 企业必须要做
去IOE
IBM小型机 、 Oracle Rac、 EMC存储设备
PC mysql mariadb
2013年5月17号,最后一台IMB小型机下线
单机计算机的架构->分布式计算机架构
架构的发展演变过程
lamp
BAT
什么是大型网站
- 访问量(tps、qps)
- 数据量(存储数据量)
电商平台的发展
用户、 商品、订单
容器: tomcat ;jsp/servlet
数据库存储: mysql
网络层面的知识:tcp/udp
第一版应用
第二版 单击负载越来越高,数据库服务器和应用服务器分离
第三版 应用服务器做集群
集群里面会有一些问题:
- session共享的问题
- 如何做请求转发:CDN、前端的负载均衡器;
第四版 数据库进行读写分离
涉及的三个问题
- 数据库的读写分离怎么做?
- 数据库的同步要怎么做?
- 数据库的路由要怎么做?-mycat
第五版 解决搜索带来的问题
电商平台操作最多就是搜索商品—用搜索引擎,搜索引擎要做集群,
应用搜索引擎也会带来问题:
- 搜索引擎的索引数据怎么去做同步?实时增量同步?还是定时全量同步?----具体怎么做不是固定的,还是要去看业务
第六版 解决访问量持续增高带来的问题
用户是没有上限的,我们可以这样来做,引入缓存机制
- 缓存
- 限流
- 降级
第七版:数据库的水平/垂直拆分
第八版 应用拆分:
架构图示
还有监控,数据采集、日志分析等
数据采集:ELK,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成
解决session跨域共享问题
- session sticky
- session application
- session集中存储:存储db,存储在缓存服务器(redis)
- cookie(主流)
access_token(userid/token/timestamp)
SOA架构和微服务的区别:消息总线的不同