课程名称:Java架构师-技术专家
课程章节: 第7周 集群架构:主从复制高可用Redis集群
主讲老师:慕课讲师团:Geely、风间影月、阿神……
课程内容:
1. 分布式架构概述
负载均衡解决方案:nginx 部署集群和负载均衡,配合 lvs和keepalived 实现了 高性能、高可用的集群负载均衡。
当一个架构进阶为集群以后 ,对于项目本身来讲,还是一个个体,是单个应用,是单独部署的一个webapp。如果一个请求经过的业务链比较长,比较的耗时,这个时候就应该采用分而治之的手段来拆解系统。将系统拆分成分布式系统。这样分布式的运算能力要远远的超过单个计算机计算机节点的运算能力。处理用户的请求也会更加的得心应手。
1.1、什么是分布式架构
不同的业务(功能模块)分散部署在不同的服务器(为单个服务进行了降压,提升了整体的运算能力)
每个子系统负责一个或者多个不同的业务模块。
服务之间可以互相交互通信。
分布式系统设计对用户透明。
可以发展为分布式集群架构(微服务架构其实是属于分布式系统中的一种,但是分布式系统并不是微服务,微服务是分布式的一个子集)
1.2、分布式架构优点
业务解耦,每个单个计算机的性能肯定是没有办法满足庞大的业务量。此时就需要有多台计算机应对同一个请求。
系统模块化,可重用化。(不同系统的 controller 都可以依赖同一个 service,这样 service 也是可以重用的。 )
提升系统的并发量,拆分之后,用户的流量是会被打散的,这样整体的并发量就上去了。
优化运维部署效率,(单体是单个包,分布式的话包变得很小)
1.3、分布式架构优点
业务解耦,每个单个计算机的性能肯定是没有办法满足庞大的业务量。此时就需要有多台计算机应对同一个请求。
系统模块化,可重用化。(不同系统的 controller 都可以依赖同一个 service,这样 service 也是可以重用的。 )
提升系统的并发量,拆分之后,用户的流量是会被打散的,这样整体的并发量就上去了。
优化运维部署效率,(单体是单个包,分布式的话包变得很小)
1.4、分布式架构设计原则
异步解耦,分布式是将耦合的模块进行了一个解耦,所以相互进行通信的时候服务之间通信的时候能够使用异步就先使用异步,实在不行再使用同步(异步的效率远远高于同步,异步需要使用到消息队列)
幂等一致性,分布式系统中,用户的请求可能会经过多个子系统,这个时候就要保证用户的请求不管是查询还是增删改,数据的一致性是需要得到保证的。(增加的时候就需要保证用户重复提交,数据库不会多出重复记录),幂等主要是针对增加和修改。
拆分原则:系统拆分的原则有多种,比如可以根据业务去拆(门户子系统,用户中心子系统,搜索子系统,文件处理子系统)。根据系统功能去拆的话,我们可以将文件系统进行拆分(文件上传、文件下载子系统)
融合分布式中间件。Redis作为缓存、Zookeeper作为协调、MQ作为消息队列。
容错高可用,分布式系统如果单点部署,也是会存在单点故障的,发生了故障,业务系统就无法提供服务了。分布式系统也需要采用集群的形态,让系统更好的为用户提供不间断的服务。
1.5、分布式需要学习的内容
分布式缓存中间件 Redis
分布式会话与单点登录
分布式搜索引擎 Elasticsearch
分布式文件系统
分布式消息队列
分布式锁
数据库读写分离和分库分表(数据库表全局唯一主键 id 设计)
分布式事务与数据一致性
接口幂等性与分布式限流
2、 使用 Redis 的原因
集群架构的弊端
多级负载.
此时的数据库是最薄弱的模块,就需要引入缓存来缓解数据库的压力,读写比例二比八。
使用Redis 提高系统读取的性能,整个系统的并发性能都会得到提升。
3、什么是NoSQL
Redis 是归类为 NoSQL 的,所以需要先了解一下什么是 NoSQL
MySQL、Oracle、等都是关系型数据库,
NoSQL的全称是 Not Only SQL,即它除了做数据存储以外,还有其它的一些功能。
传统项目使用纯关系型数据库,访问量不会很大,并发量也不会很高。
随着互联网和大数据的发展,已经不适合把超大量的数据提供出去做并发型的查询。因为数据库单表的性能是有限的。普通关系型数据库只能达到 400-500 万
一旦数据量庞大了以后,NoSQL就横空出世了。
NOSQL 水平(横向)扩展方便高效,增加删除缓存能够做到非常的高效
高性能读取
可以搭建集群,实现高可用
存数据,做缓存(缓存可以持久化)。
NoSQL常见分类
键值对数据库 Reids 、Memcache
列存储数据库 Hbase 、Cassandra
文档型数据库 MongoDB
图形数据库 Neo4J、FlockDB
3.1、什么是分布式缓存
在高并发的场景下,通过分布式缓存,是可以提升读取速度的。(写操作是需要入库的,遵循二八原则(在互联网的环境下,百分之八十的操作都是读操作))
分布式计算领域,将系统垂直的进行拆分以后,就需要使用缓存来提升系统整体的读性能。
为数据库降低查询压力(缓存承担查询功能之后,数据库的查询压力就会降低,数据库是整个项目的瓶颈所在)
跨服务器缓存
内存式缓存。内存的读取效率是远远高于硬盘存储的数据的。可以让大多数的请求去命中缓存,而少量的请求在有需求的时候才会去访问到数据库,从而就可以增加提高整个系统的并发量,能够减少数据库的压力,为其进行降压。
4、什么是 Redis
NoSQL
分布式缓存中间件
key-value 存储。类似于 hashMap,可以存储一些字符串,list、set集合等数据。
提供海量数据存储访问。
数据存储在内存里,读取更快。
非关系型 、分布式、开源、水平扩展。
课程收获:
通过今天的学习:
- 深刻理解了分布式架构出现的原因,分布式架构的优点、缺点、设计原则等
- 了解了分布式架构需要学习的内容
- 了解了什么是 NoSQL
- 了解了分布式缓存
- 了解了什么是Redis
开始学习分布式架构,从 分布式缓存Redis 开始: