分布式专题学习笔记01——分布式架构
一 什么是分布式
分布式系统就是多台计算机节点通过网络通信,相互协调,共同完成工作的系统。
分布式需要解决的两个问题:
1 任务分配
2 节点通信
二 分布式与集群的关系
电商:用户,商品,订单
分布式:一个业务拆分成多个子系统,部署在不同的服务器上
集群:同一个业务部署在多台服务器上
三 计算机发展历史
四 大型架构演进过程分析
什么是大型网站:
1 访问量高(tps,qps)
2 数据量大(存储数据量)
电商平台的发展:
用户,商品,订单
容器:tomcat,jsp,servlet
数据库存储:mysql
初级架构,数据库和应用服务器部署在同一台服务器,足以应付请求
随着访问量的增加,数据的积累,服务器性能降低,此时可以将数据库单独部署到一台服务器
随着用户的增加,业务量的新增,单台应用服务,不足以支持业务的需求,此时可以将考虑将应用进行集群部署
此时就需要解决两个问题
1 session共享问题
cookie中保存的是JESSIONID
解决session跨域请求
1 session sticky 保证每次请求都在同一台服务器
2 session replication session复制
3 session 集中存储
4 cookie (主流)
5 access_token(userId/token/timestamp)
存储在db,存储在缓存服务器(redis)
2 如何做请求转发
随着应用服务器集群的增多,数据库io逐渐成为整个系统架构的瓶颈,整个系统中,对数据库读操作比较多,写操作比较少,可以选择性能比较好的数据库服务器用的读操作服务器,性能一般的数据库服务器用作写服务器,实现数据库的读写分离
此处需要解决三个问题
1 数据库的读写分离怎么操作
2 数据库之间的数据同步
3 数据路由(那些请求走读数据库,那些请求走写数据库)
为了提高系统搜索的响应时间,引入了搜索引擎
引入搜索引擎以后,需要解决以下问题
搜索引擎的索引数据怎么去做同步?是实时增量去做同步,还是定时全量做同步。
访问量持续增长时,可以采取以下措施
1 缓存
2 限流
3 降级