Week5 学习总结

用户头像
wyzwlj
关注
发布于: 2020 年 07 月 06 日

一、缓存技术

1、缓存介绍

    1)是什么

    2)为什么用缓存?为什么能提高性能?

2、什么时候用缓存?

    1) 什么情况下适合使用缓存:

        a. 系统的读大于写,读写比大于2:1时,缓存才有意义

        b. 允许一定程度上的数据不一致性:通过业务手段,如用户提醒等处理 处理不一致性问题

    2) 什么情况下不适合使用缓存:

        a. 频繁修改数据

        b. 没有热点数据:不符合二八原则,缓存没有价值

3、怎么使用缓存?

    1)缓存相关技术

        a. 应用层缓存

        b. 代理缓存:客户端技术

        c. 反向代理缓存&多层级反向代理缓存

        e. CDN

    2)缓存使用效果衡量

        a. 缓存命中率

        b. 影响缓存命中率的指标:缓存键集合的大小、缓存使用的内存空间、缓存对象的生存时间

4、缓存分类

    1)通读缓存

        a. 代理缓存、反向代理缓存、CDN 都是通路缓存

        b. 缓存服务缓存资源,请求未命中时,缓存服务会获取实际数据

        c. 客户端连接的是缓存服务,而不是原始服务

    2)旁路缓存

        a. 客户端请求数据时,先从对象缓存中取,取不到时再从应用服务中取

        b. 客户端同时连接对象缓存和应用服务

5、缓存实现方案

    1)本地缓存

    2)分布式对象缓存

        a. 集群管理:

            ->分布式&集群的区别:一堆机器即可构成一个分布式系统,集群指一个特定领域的软件部署在多                台服务器上并作为一个整体提供一类服务

            ->核心是路由算法:一致性hash算法

6、缓存使用过程中面临的问题

    1)缓存失效

    2)缓存雪崩

    3)缓存预热

    4)缓存穿透

二、异步调用&消息队列

1、同步调用 VS 异步调用

    1)什么是同步调用

    2)什么是异步调用

    3)两者的区别:无法实时拿到处理结果、更加高效

2、基于消息队列实现的异步调用框架

    1)消息生产者+消息队列+消息消费者

    2)点对点模型:发生给指定的消费者、只被消费一次

    3)发布订阅模型:可以被消费多次

3、消息队列&异步调用的好处

    1)提升性能

    2)更好的伸缩性

    3)削峰填谷

    4)失败隔离&自我修复

        a. 生产者和消费者之间不直接依赖,两者相互隔离

        b. 简化了服务的部署,降低了管理难度

    5)系统解耦

4、事件驱动架构-EDA(发布订阅模式)

    1)架构模型

    2)请求响应型架构 VS 事件驱动型架构

        a. 更高的性能

        b. 更低的耦合性

5、相关MQ产品

    RabbitMQ、ActiveMQ、RocketMQ、Kafka

三、负载均衡架构

核心的两个问题:如何转发用户请求+如何路由

1、如何转发用户请求

    1)HTTP重定向:性能问题(多一次请求)+安全性问题(服务器暴露)

    2)DNS负载均衡:

        a. 解析的IP不是应用服务器的,而是反向代理的IP

        b. 无法进行故障转移,应用服务器异常时,由DNS缓存的原因,导致部分用户不可用

    3)反向代理&IP负载均衡:转发请求时修改IP地址

        a. 3层负载均衡 VS 7层负载均衡

        b. 如何进行IP地址的负载:DNAT

        c. 反向代理服务器的网卡性能会成为瓶颈(响应的出口带宽)

    4)数据链路层负载均衡:转发请求时修改MAC地址

        a. 所有应用服务器都会收到用户请求,但是会根据MAC地址判断是否需要进行处理

        b. VIP 

2、如何路由-负载均衡算法

    轮询、加权轮询、随机、最少连接、源地址散列

3、应用服务进行负载均衡处理(集群化)后面临的问题:Session管理

    1)问题是什么:单机情况下,Session可交由Web容器管理,使用负载均衡的集群环境中,不能再由Web容器管理,因为用户的前一次请求和下一次请求可能分配到集群的不同机器上,交由Web容器管理会导致Session找不到

    2)解决手段:

        a. session复制

        b. session绑定:通过客户端的IP地址,计算请求的应用服务器

        c. 利用cookie记录session

        d. 建立Session服务器

四、分布式数据库

1、MySQL复制

    1)主从复制

    2)一主多从

        a. 分摊负载、专机专用、便于冷备&热备、高可用

        b. 无法解决主服务器宕机的问题

    3、)主主复制

        a. 主主失效恢复、主主失效维护过程

2、MySQL复制注意事项

    1)主主复制的两个数据库不能并发写入

    2)复制只是增加了数据的读并发处理能力,没有增加写并发处理能力和存储能力

    3)更新表结构会导致巨大的同步延迟

        a. 更新表结构的时候,关闭数据库复制,手动执行DDL更新完每台设备的表结构后,再开启复制能力。不要通过数据库的复制操作,实现DDL的同步

        b. 增加表结构的时候,先升级数据库,再升级应用;移除表结构的时候,先升级应用,在升级数据库。注意升级的先后顺序,保证兼容性



用户头像

wyzwlj

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
Week5 学习总结