第 5 周 - 学习总结

用户头像
大海
关注
发布于: 2020 年 07 月 07 日

# 1 分布式缓存架构

1. 缓存的关键指标:缓存命中率。

2. 影响缓存命中率的主要指标:

- 缓存键集合大小

- 缓存可使用内存空间

- 缓存对象生存空间

3. 通读缓存和旁路缓存

- 传统的银行也有高并发和大流量,并发也就是几百几千几万,业务是在柜台发生,面向柜员用户。

- 但是现在面向几亿的互联网用户开发应用。

# 2 消息队列与异步架构

1. 同步调用和异步调用。

2. 消息队列构建异步调用架构

- 点对点模式:消息只被处理一次

- 发布订阅模型:多个消费者可以订阅同一个消息,有多少个消费者消费,就有多少个消息队列。订阅以topic为单位。

3. 消息队列的好处

- 缓存处理的是读的问题,多次读取的高速存储。redis缓存不能用来写数据,写数据是nosql的作用

- 消息队列解决的是写的问题,实现异步处理,提升处理性能。生产者往队尾写数据,消费者从对头获取数据。消息队列一方面是提升用户的响应速度,另一方面保护了对并发比较敏感的服务器,如数据库,以数据库可以承受的速度写数据。

- 更好的伸缩性,可以把某个功能单独放到消息队列中,单独伸缩这个功能的后端服务器

- 削峰填谷:系统的用户请求超过了系统的处理能力

- 失败隔离和自我修复

- 解耦:不关心位置、方法名、参数。耦合表面积

4. 。

# 3 负载均衡架构

1. 请求如何分发

- HTTP重定向负载均衡:

- 地址写到响应头里,每一次访问的服务器不同,每一个用户访问的服务器不同。

- 添加新服务器,把新服务器地址添加到负载均衡服务器。

- 这种模式每个服务器一般设计为无状态服务器,每一个服务器不存储状态。

- 现实中很少使用这种负载均衡,性能不好,要进行两次http请求,请求-响应-请求-响应;另外用户直接访问应用服务器,一般应用服务器不配公网地址,配内网地址,因为应用服务器不叫脆弱。

- DNS负载均衡:

- 性能较好,域名解析的结果被缓存起来,不用每回都进行两次请求。

- 大型网站域名解析的地址是负载均衡服务器地址,不是应用服务器地址,两级负载均衡,应用服务器仍用内网地址

- 反向代理负载均衡(7层)

- 用户的请求和响应都要通过负载均衡服务器

- http是一个比较重的协议,比较大的数据包,请求响应数据包比较大,tcp是一个小包,http的包大小根据业务逻辑决定

- 通常用在比较小型的服务器集群,大型集群一般是IP层负载均衡。几台十几台应用服务器可以用反向代理负载均衡,规模大不会用这种负载均衡

- IP负载均衡(3层):修改数据包里的目标地址和源地址

- 1000M的网卡发1M的图片,1秒只能发125张。响应包一般比较大,请求包比较小。如果响应包不经过负载均衡服务器,就是二层负载均衡

- 链路层负载均衡:

- 响应数据包不经过负载均衡服务器

- 负载均衡服务器不修改目的和源IP地址,所有的应用服务器都共享一个虚拟的IP地址,修改目的网卡地址,所有应用服务器检查该MAC地址是否是自己的。

- 因为源IP地址没有修改,所以数据包直接返回给用户,负载均衡的网卡不再成为瓶颈。大型网站使用链路层负载均衡

- 以前LVS是linux的一个插件,新版Linux的LVS是内置的。LVS既可以做IP层负载均衡,也可以做链路层负载均衡。作者张文松是滴滴的首席科学家。由专职的运维配IPTABLES

- 更大规模集群,用dns负载均衡+链路层负载均衡

- 这些负载均衡服务不适用微服务的负载均衡,微服务的负载均衡使用软负载均衡

# 4 应用服务器集群的session管理

1. session复制:现在已经不用了。

2. session绑定:相同的ip到同一个应用服务器,按照ip地址计算到哪个应用服务器。会话粘滞,用ip地址做哈希。这个方案不可用,更快的被淘汰了。互联网企业这样做,会降低系统可用性,如一台应用服务器升级,这台应用服务器的session丢失,一部分用户的系统可用性受影响。

3. 利用cookie记录session。请求把cookie发给服务器,请求时服务器把session记录在cookie中返回给客户端,以后请求都把cookie发给服务器,服务器从cookie获取session。缺点每次请求带上cookie,有的客户端会禁用cookie。request.getSession从cookie中获取,用装饰器模式。早期的时候用这种方式,cookie做session管理,实践中生命力很强。现在用的很少了。

4. session服务器,一般用redis服务器,或者数据库。现在一般用这种方案。应用服务器是无状态的,但是用户需要管理自己的上下文,有专门的session服务器管理。

# 5 分布式数据库

1. 最早的数据库做分布式,就是用主从复制,读操作到主,写操作到从

2. 一主多从复制:分摊负载、专机专用(如专门用来数据分析的服务器)、便于冷备热备(主服务器宕机,从服务器上有数据可以提供读服务)、高可用(其中一台从服务器停机,其他服务器可以服务)。但是如果主服务器停机,写服务不可用

3. 主主复制:一台服务器提供面向用户的写服务,防止数据不一致。主主复制实现数据库的高可用

1. 两个主数据库不能并发写入,防止数据冲突

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

3. 更新表结构会导致巨大的。复制要关闭ddl,要线下一台台做数据库表结构更新

用户头像

大海

关注

还未添加个人签名 2018.07.14 加入

还未添加个人简介

评论

发布
暂无评论
第5周 - 学习总结