什么是分布式?
简单的理解就是,许多服务器相互协作支持,共同完成一系列任务的系统架构,就像一个完善的大公司,有很多员工,有负责产品的,有负责实施的,有负责开发的,有负责销售的,大家协同工作,共同服务好客户一样。
为什么用分布式?
1、 节约服务器资源,灵活部署,传统的集群架构存在大量的资源耗费,业务量少的模块也会部署到同样多的服务器上,使用分布式可以针对不同子系统的业务量去增加或减少服务器。
2、 模块解耦和,成立不同业务部门负责不同的子系统,降低开发难度,提升开发效率
3、 解耦和的同时,也提升了系统的可扩展性,相比于集群架构,新增或修改模块对系统的影响小得多。
如何分布式?
1、 将一整个大系统按需求分解成许多子系统
2、 用RPC框架或消息中间件做节点通信
分布式和集群的关系?
分布式:将一整个大业务拆分成多个子系统,分别部署在不同的服务器或集群上
集群: 同一个业务,部署在多个服务器上,所有的服务器运行同一套业务代码
比如我们可以把一个电商平台拆分成:用户、商品、订单、交易等多个子系统
集群可以保证服务的高可用,而分布式可以使大型系统用更少的资源获取更高的服务性能
什么是大型网站
1、访问量(TPS、QPS)
2、数据量(存储数据量)
电商平台系统架构的发展
容器:tomcat;数据库存储:MySQL
网络层面的知识:TCP/UDP
第一版应用,单体服务
第二版 服务器负载越来越高,将数据库服务器和应用服务器分离
第三版 应用服务器做集群
1、session丢失问题
方案一:Nginx的IP_HASH算法
方案二:分布式session
第四版 提高数据库性能,读写分离
1、数据库读写分离怎么操作
2、数据库的数据同步
3、数据库路由 mycat
第五版 减轻读请求给数据库带来的压力,建立搜索引擎
1、 搜索引擎的索引数据怎么去做同步,实时增量同步? 还是定时全量同步?
第六版 解决访问量持续增高,引入缓存机制
1、如何应对持续增高的访问量?
缓存、 限流、 降级