From 572185a9cc0da602b8f9abe695f220179546c750 Mon Sep 17 00:00:00 2001 From: "595208882@qq.com" Date: Sat, 11 Sep 2021 12:32:14 +0800 Subject: [PATCH] adjust --- Solution.md | 468 ++++++++++-------- Subject.md | 141 ------ .../Redis请求过程.png | Bin .../使用 Memcache或Redis 方案.jpg | Bin 0 -> 12248 bytes .../删缓存失败-解决方案一.png | Bin 0 -> 10044 bytes .../删缓存失败-解决方案二.png | Bin 0 -> 18598 bytes images/Solution/服务端缓存方案.jpg | Bin 0 -> 19352 bytes images/Solution/热点数据的发现.jpg | Bin 0 -> 15444 bytes images/Solution/热点数据的读取.jpg | Bin 0 -> 12438 bytes images/Solution/热点数据解决方案.jpg | Bin 0 -> 8718 bytes ...一致性-基于Canal的解决方案.jpg | Bin 0 -> 42935 bytes ...存一致性-基于MQ的解决方案.jpg | Bin 0 -> 41639 bytes .../读写分离方案解决热读.jpg | Bin 0 -> 11922 bytes 13 files changed, 273 insertions(+), 336 deletions(-) delete mode 100644 Subject.md rename images/{Subject => Middleware}/Redis请求过程.png (100%) create mode 100644 images/Solution/使用 Memcache或Redis 方案.jpg create mode 100644 images/Solution/删缓存失败-解决方案一.png create mode 100644 images/Solution/删缓存失败-解决方案二.png create mode 100644 images/Solution/服务端缓存方案.jpg create mode 100644 images/Solution/热点数据的发现.jpg create mode 100644 images/Solution/热点数据的读取.jpg create mode 100644 images/Solution/热点数据解决方案.jpg create mode 100644 images/Solution/缓存一致性-基于Canal的解决方案.jpg create mode 100644 images/Solution/缓存一致性-基于MQ的解决方案.jpg create mode 100644 images/Solution/读写分离方案解决热读.jpg diff --git a/Solution.md b/Solution.md index 3de7885..a21f6de 100644 --- a/Solution.md +++ b/Solution.md @@ -3462,26 +3462,44 @@ FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存 -## 缓存策略 +## 更新策略 缓存更新的策略主要分为三种: -- **Cache-Aside**:通常会先更新数据库,然后再删除缓存,为了兜底通常还会将数据设置缓存时间 -- **Read/Write through**:一般是由一个 Cache Provider 对外提供读写操作,应用程序不用感知操作的是缓存还是数据库 -- **Write-Behind**:即延迟写入,Cache Provider 每隔一段时间会批量输入数据库,优点是应用程序写入速度非常快 +- **Cache Aside Pattern(旁路缓存)** +- **Read/Write Through Pattern(读写穿透)** +- **Write Behind Caching Pattern(异步写入)** -### Cache-Aside -`Cache-Aside(旁路缓存)`的提出是为了尽可能地解决缓存与数据库的数据不一致问题。 + +**缓存使用场景** + +**分布式系统中要么通过2PC、3PC或Paxos协议保证强一致性,要么就是拼命的降低并发时脏数据的概率**。缓存系统适用的场景就是非强一致性的场景,所以它属于CAP中的AP,只能做到BASE理论中说的**最终一致性**。异构数据库本来就没办法强一致,我们只是**尽可能减少不一致的时间窗口,达到最终一致性**。同时结合设置过期时间的兜底方案。 + + + +**缓存场景分析** + +- 对于读多写少的数据,请使用缓存 +- 为了保持数据库和缓存的一致性,会导致系统吞吐量的下降 +- 为了保持数据库和缓存的一致性,会导致业务代码逻辑复杂 +- 缓存做不到绝对一致性,但可以做到最终一致性 +- 对于需要保证缓存数据库数据一致的情况,请尽量考虑对一致性到底有多高要求,选定合适的方案,避免过度设计 + + + +### Cache Aside(旁路缓存) + +`Cache Aside(旁路缓存)` 是最广泛使用的缓存模式之一,如果能正确使用 `Cache Aside` 的话,能极大的提升应用性能,`Cache Aside`可用来读或写操作。`Cache Aside`的提出是为了尽可能地解决缓存与数据库的数据不一致问题。 #### Read Cache Aside -`Cache-Aside` 的读请求流程如下: +`Cache Aside` 的读请求流程如下: ![Cache-Aside读请求](images/Solution/Cache-Aside读请求.jpg) -- 读的时候,先读缓存,缓存命中的话,直接返回数据 -- 缓存没有命中的话,就去读数据库,从数据库取出数据,放入缓存后,同时返回响应 +- **读的时候,先读缓存,缓存命中的话,直接返回数据** +- **缓存没有命中的话,就去读数据库,从数据库取出数据,放入缓存后,同时返回响应** @@ -3491,54 +3509,142 @@ FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存 ![Cache-Aside写请求](images/Solution/Cache-Aside写请求.jpg) -- 更新的时候,先**更新数据库,然后再删除缓存** +- **更新的时候,先更新数据库,然后再删除缓存** -### Read/Write-Through +### Read/Write Through(读写穿透) -`Read/Write-Through(读写穿透)` 模式中,服务端把缓存作为主要数据存储。应用程序跟数据库缓存交互,都是通过**抽象缓存层**完成的。 +`Read/Write Through(读写穿透)` 模式中,服务端把缓存作为主要数据存储。应用程序跟数据库缓存交互,都是通过**抽象缓存层**完成的。 -#### Read-Through +#### Read Through -`Read-Through`的简要流程如下 +`Read Through` 和 `Cache Aside` 很相似,不同点在于程序不需要再去管理从哪去读数据(缓存还是数据库)。相反它会直接从缓存中读数据,该场景下是缓存去决定从哪查询数据。当我们比较两者的时候这是一个优势因为它会让程序代码变得更简洁。`Read Through`的简要流程如下 ![Read-Through简要流程](images/Solution/Read-Through简要流程.png) -- 从缓存读取数据,读到直接返回 -- 如果读取不到的话,从数据库加载,写入缓存后,再返回响应 +- **从缓存读取数据,读到直接返回** +- **如果读取不到的话,从数据库加载,写入缓存后,再返回响应** -这个简要流程是不是跟`Cache-Aside`很像呢?其实`Read-Through`就是多了一层`Cache-Provider`而已,流程如下: -![Read-Through流程](images/Solution/Read-Through流程.png) -`Read-Through`实际只是在`Cache-Aside`之上进行了一层封装,它会让程序代码变得更简洁,同时也减少数据源上的负载。 +该模式只在 `Cache Aside` 之上进行了一层封装,它会让程序代码变得更简洁,同时也减少数据源上的负载。流程如下: + +![Read-Through流程](images/Solution/Read-Through流程.png) -#### Write-Through +#### Write Through -`Write-Through`模式下,当发生写请求时,也是由**缓存抽象层**完成数据源和缓存数据的更新,流程如下: +`Write Through` 模式下的所有写操作都经过缓存,每次向缓存中写数据时,缓存会把数据持久化到对应的数据库中去,且这两个操作都在一个事务中完成。因此,只有两次都写成功才是最终写成功。用写延迟保证了数据一致性。当发生写请求时,也是由**缓存抽象层**完成数据源和缓存数据的更新,流程如下: ![Write-Through](images/Solution/Write-Through.png) +- **向缓存中写数据,并向数据库写数据** +- **使用事务保证一致性,两者都写成功才成功** + + + +当使用 `Write Through `的时候一般都配合使用 `Read Through`。`Write Through `适用情况有: + +- **需要频繁读取相同数据** +- **不能忍受数据丢失(相对 `Write Behind` 而言)和数据不一致** +**`Write Through` 的潜在使用例子是银行系统。** -### Write-Behind -`Write-Behind`在一些地方也被成为`Write back`, 简单理解就是:应用程序更新数据时只更新缓存, `Cache Provider`每隔一段时间将数据刷新到数据库中。说白了就是`延迟写入`。 -`Write-Behind(异步写入)` 和 `Read/Write-Through` 有相似的地方,都是由`Cache Provider`来负责缓存和数据库的读写。它们又有个很大的不同:`Read/Write-Through`是同步更新缓存和数据的,`Write-Behind`则是只更新缓存,不直接更新数据库,通过**批量异步**的方式来更新数据库。 +### Write Behind(异步写入) + +`Write Behind(异步写入,又叫Write Back)` 和 `Read/Write Through` 相似,都是由 `Cache Provider` 来负责缓存和数据库的读写。它们又有个很大的不同:`Read/Write Through` 是同步更新缓存和数据的,`Write Behind` 则是只更新缓存,不直接更新数据库,通过**批量异步**的方式来更新数据库。 ![WriteBehind流程](images/Solution/WriteBehind流程.png) -这种方式下,缓存和数据库的一致性不强,**对一致性要求高的系统要谨慎使用**。但是它适合频繁写的场景,MySQL的**InnoDB Buffer Pool机制**就使用到这种模式。如上图,应用程序更新两个数据,Cache Provider 会立即写入缓存中,但是隔一段时间才会批量写入数据库中。优缺点如下: +这种方式下,缓存和数据库的一致性不强,**对一致性要求高的系统要谨慎使用**。但是它适合频繁写的场景,MySQL的**InnoDB Buffer Pool 机制**就使用到这种模式。如上图,应用程序更新两个数据,Cache Provider 会立即写入缓存中,但是隔一段时间才会批量写入数据库中。优缺点如下: - **优点**:是数据写入速度非常快,适用于频繁写的场景 - **缺点**:是缓存和数据库不是强一致性,对一致性要求高的系统慎用 +## 数据一致性 + +![缓存双写一致性](images/Solution/缓存双写一致性.png) + +一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 + +- **强一致性**:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 +- **弱一致性**:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态 +- **最终一致性**:最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。这里之所以将最终一致性单独提出来,是因为它是弱一致性中非常推崇的一种一致性模型,也是业界在大型分布式系统的数据一致性上比较推崇的模型 + +### 业务延时双删 + +先删除缓存,再更新数据库中如何避免脏数据?采用延时双删策略。 + +![延时双删流程](images/Solution/延时双删流程.png) + +- **先删除缓存** +- **再写数据库** +- **休眠1秒后再次删除缓存**(这1秒=业务可能最大耗时,主要是等待正在加载脏数据的请求完成) + + + +**① 读写分离架构** + +读写架构中,先删除缓存,再更新数据库中如何避免脏数据?采用延时双删策略。 + +- **先淘汰缓存** +- **再写数据库** +- **休眠1秒后再次淘汰缓存**(这1秒=主从同步可能最大耗时+业务可能最大耗时,主要是等待正在加载脏数据的请求完成) + + + +**② 延时双删导致吞吐量降低** + +延时双删的方式同步淘汰策略导致了吞吐量降低如何解决? + +- **将第二次删除作为异步** + + + +### MQ重试机制 + +不管是**延时双删**还是**Cache-Aside的先操作数据库再删除缓存**,都可能会存在第二步的删除缓存失败,导致的数据不一致问题,可以引入**删除缓存重试机制**来解决。 + +![删缓存失败-解决方案一](images/Solution/删缓存失败-解决方案一.png) + +![缓存一致性-基于MQ的解决方案](images/Solution/缓存一致性-基于MQ的解决方案.jpg) + +流程如下: + +- **更新数据库数据** +- **删除缓存中的数据,可此时缓存服务出现不可用情况,造成无法删除缓存数据** +- **当删除缓存数据失败时,将需要删除缓存的 Key 发送到消息队列 (MQ) 中** +- **应用自己消费需要删除缓存 Key 的消息** +- **应用接收到消息后,删除缓存,如果删除缓存确认 MQ 消息被消费,如果删除缓存失败,则让消息重新入队列,进行多次尝试删除缓存操作** + + + +### biglog异步删除 + +重试删除缓存机制会造成好多**业务代码入侵**。其实还可以这样优化:通过数据库的**binlog来异步淘汰key**。 + +![删缓存失败-解决方案二](images/Solution/删缓存失败-解决方案二.png) + +![缓存一致性-基于Canal的解决方案](images/Solution/缓存一致性-基于Canal的解决方案.jpg) + +流程如下: + +- **更新数据库数据** +- **MySQL将数据更新日志写入binlog中** +- **Canal订阅&消费MySQL binlog,并提取出被更新数据的表名及ID** +- **调用应用删除缓存接口** +- **删除缓存数据** +- **Redis 不可用时,将更新数据的表名及 ID 发送到 MQ 中** +- **应用接收到消息后,删除缓存,如果删除缓存确认 MQ 消息被消费,如果删除缓存失败,则让消息重新入队列,进行多次尝试删除缓存操作,直到缓存删除成功为止** + + + ## 策略选择 ### 删除or更新 @@ -3593,6 +3699,75 @@ A先把数据库更新为 123,由于网络问题,更新缓存的动作慢了 +### 缓存更新 + +除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),还可以根据具体的业务需求进行自定义的缓存淘汰。常见的更新策略如下: + +- **LRU/LFU/FIFO**:都是属于当**缓存不够用**时采用的更新算法 + + 适合内存空间有限,数据长期不变动,基本不存在数据一不致性业务。比如一些一经确定就不允许变更的信息。 + +- **超时剔除**:给缓存数据设置一个过期时间 + + 适合于能够容忍一定时间内数据不一致性的业务,比如促销活动的描述文案。 + +- **主动更新**:如果数据源的数据有更新,则主动更新缓存 + + 对于数据的一致性要求很高,比如交易系统,优惠劵的总张数。 + + + +常见数据更新方式有两大类,其余基本都是这两类的变种: + +**方式一:先删缓存,再更新数据库** + +![缓存更新-先删缓存再更新数据库](images/Solution/缓存更新-先删缓存再更新数据库.png) + +这种做法是遇到数据更新,我们先去删除缓存,然后再去更新DB,如左图。让我们来看一下整个操作的流程: + +- A请求需要更新数据,先删除对应的缓存,还未更新DB +- B请求来读取数据 +- B请求看到缓存里没有,就去读取DB并将旧数据写入缓存(脏数据) +- A请求更新DB + +可以看到B请求将脏数据写入了缓存,如果这是一个读多写少的数据,可能脏数据会存在比较长的时间(要么有后续更新,要么等待缓存过期),这是业务上不能接受的。 + + + +**方式二:先更新数据库,再删除缓存** + +![缓存更新-先更新数据库再删除缓存](images/Solution/缓存更新-先更新数据库再删除缓存.png) + +上图的右侧部分可以看到在A更新DB和删除缓存之间B请求会读取到老数据,因为此时A操作还没有完成,并且这种读到老数据的时间是非常短的,可以满足数据最终一致性要求。 + + + +**删除缓存而非更新缓存原因** + +上图可以看到我们用的是删除缓存,而不是更新缓存,原因如下图: + +![缓存更新-删除缓存原因](images/Solution/缓存更新-删除缓存原因.png) + +上图我用操作代替了删除或更新,当我们做删除操作时,A先删还是B先删没有关系,因为后续读取请求都会从DB加载出最新数据;但是当我们对缓存做的是更新操作时,就会对A先更新缓存还是B先更新缓存敏感了,如果A后更新,那么缓存里就又存在脏数据了,所以 go-zero 只使用删除缓存的方式。 + + + +**缓存更新请求处理流程** + +我们来一起看看完整的请求处理流程: + +![缓存更新-请求处理流程](images/Solution/缓存更新-请求处理流程.png) + +**注意**:不同颜色代表不同请求。 + +- 请求1更新DB +- 请求2查询同一个数据,返回了老的数据,这个短时间内返回旧数据是可以接受的,满足最终一致性 +- 请求1删除缓存 +- 请求3再来请求时缓存里没有,就会查询数据库,并回写缓存再返回结果 +- 后续的请求就会直接读取缓存了 + + + ## 缓存问题 ### 缓存雪崩 @@ -3677,171 +3852,101 @@ A先把数据库更新为 123,由于网络问题,更新缓存的动作慢了 -### 缓存预热 - -缓存预热是指系统上线后,提前将相关的缓存数据加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。如果不进行预热,那么Redis初始状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中, 对数据库造成流量的压力。 - -**缓存预热思路:** - -- **数据量不大的时候**:工程启动的时候进行加载缓存动作 -- **数据量大的时候**:设置一个定时任务脚本,进行缓存的刷新 -- **数据量太大的时候**:优先保证热点数据进行提前加载到缓存 - - - -**缓存预热解决方案:** - -- 直接写个缓存刷新页面,上线时手工操作下 -- 数据量不大,可以在项目启动的时候自动进行加载 -- 定时刷新缓存 - - - -### 缓存降级 - -缓存降级是指当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。 - -**降级的最终目的是保证核心服务可用,即使是有损的**。而且有些服务是无法降级的(如加入购物车、结算)。 - - - -**分级降级预案:** - -- **一般**:比如有些服务偶尔因为网络抖动或者服务正在上线而超时,可以自动降级 -- **警告**:有些服务在一段时间内成功率有波动(如在95~100%之间),可以自动降级或人工降级,并发送告警 -- **错误**:比如可用率低于90%,或数据库连接池被打爆,或访问量突然猛增到系统能承受的最大阀值,此时可以根据情况自动降级或者人工降级 -- **严重错误**:比如因为特殊原因数据错误了,此时需要紧急人工降级 - - - -### 缓存更新 - -除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),还可以根据具体的业务需求进行自定义的缓存淘汰。常见的更新策略如下: - -- **LRU/LFU/FIFO**:都是属于当**缓存不够用**时采用的更新算法 - - 适合内存空间有限,数据长期不变动,基本不存在数据一不致性业务。比如一些一经确定就不允许变更的信息。 - -- **超时剔除**:给缓存数据设置一个过期时间 - - 适合于能够容忍一定时间内数据不一致性的业务,比如促销活动的描述文案。 - -- **主动更新**:如果数据源的数据有更新,则主动更新缓存 - - 对于数据的一致性要求很高,比如交易系统,优惠劵的总张数。 - - - -常见数据更新方式有两大类,其余基本都是这两类的变种: - -**方式一:先删缓存,再更新数据库** - -![缓存更新-先删缓存再更新数据库](images/Solution/缓存更新-先删缓存再更新数据库.png) - -这种做法是遇到数据更新,我们先去删除缓存,然后再去更新DB,如左图。让我们来看一下整个操作的流程: - -- A请求需要更新数据,先删除对应的缓存,还未更新DB -- B请求来读取数据 -- B请求看到缓存里没有,就去读取DB并将旧数据写入缓存(脏数据) -- A请求更新DB - -可以看到B请求将脏数据写入了缓存,如果这是一个读多写少的数据,可能脏数据会存在比较长的时间(要么有后续更新,要么等待缓存过期),这是业务上不能接受的。 - - +## Hot Key -**方式二:先更新数据库,再删除缓存** +### 产生原因 -![缓存更新-先更新数据库再删除缓存](images/Solution/缓存更新-先更新数据库再删除缓存.png) +- **用户消费的数据远大于生产的数据**(热卖商品、热点新闻、热点评论、明星直播) -上图的右侧部分可以看到在A更新DB和删除缓存之间B请求会读取到老数据,因为此时A操作还没有完成,并且这种读到老数据的时间是非常短的,可以满足数据最终一致性要求。 + 在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场景也会产生热点问题。 +- **请求分片集中,超过单 Server 的性能极限** + 在服务端读数据进行访问时,往往会对数据进行分片切分,此过程中会在某一主机 Server 上对相应的 Key 进行访问,当访问超过 Server 极限时,就会导致热点 Key 问题的产生。 -**删除缓存而非更新缓存原因** -上图可以看到我们用的是删除缓存,而不是更新缓存,原因如下图: -![缓存更新-删除缓存原因](images/Solution/缓存更新-删除缓存原因.png) +### 问题危害 -上图我用操作代替了删除或更新,当我们做删除操作时,A先删还是B先删没有关系,因为后续读取请求都会从DB加载出最新数据;但是当我们对缓存做的是更新操作时,就会对A先更新缓存还是B先更新缓存敏感了,如果A后更新,那么缓存里就又存在脏数据了,所以 go-zero 只使用删除缓存的方式。 +当某一热点 Key 的请求在某一主机上超过该主机网卡上限时,由于流量的过度集中,会导致服务器中其它服务无法进行。如果热点过于集中,热点 Key 的缓存过多,超过目前的缓存容量时,就会导致缓存分片服务被打垮现象的产生。当缓存服务崩溃后,此时再有请求产生,会缓存到后台 DB 上,由于DB 本身性能较弱,在面临大请求时很容易发生请求穿透现象,会进一步导致雪崩现象,严重影响设备的性能。 +- **流量集中,达到物理网卡上限** +- **请求过多,缓存分片服务被打垮** +- **DB 击穿,引起业务雪崩** -**缓存更新请求处理流程** -我们来一起看看完整的请求处理流程: - -![缓存更新-请求处理流程](images/Solution/缓存更新-请求处理流程.png) +### 发现热key -**注意**:不同颜色代表不同请求。 +- 预估热key,如秒杀商品,火爆新闻 +- 在客户端进行统计 +- 可用Proxy,如Codis可以在Proxy端收集 +- 利用redis自带命令,monitor,hotkeys。**执行缓慢,不推荐使用** +- 利用流式计算引擎统计访问次数,如Storm、Spark Streaming、Flink -- 请求1更新DB -- 请求2查询同一个数据,返回了老的数据,这个短时间内返回旧数据是可以接受的,满足最终一致性 -- 请求1删除缓存 -- 请求3再来请求时缓存里没有,就会查询数据库,并回写缓存再返回结果 -- 后续的请求就会直接读取缓存了 +### 解决方案 -### 缓存Hot Key +通常的解决方案主要集中在对客户端和 Server 端进行相应的改造。 -对于突发事件,大量用户同时去访问热点信息,这个突发热点信息所在的缓存节点就很容易出现过载和卡顿现象,甚至 Crash,我们称之为缓存热点。这个在新浪微博经常遇到,某大V明星出轨、结婚、离婚,瞬间引发数百千万的吃瓜群众围观,访问同一个key,流量集中打在一个缓存节点机器,很容易打爆网卡、带宽、CPU的上限,最终导致缓存不可用。 +#### 读写分离 -一般使用 **缓存+过期时间** 的策略来加速读写,又保证数据的定期更新,这种模式基本能满足绝大部分需求。但是如果有两个问题同时出现,可能会对应用造成致命的伤害: +![读写分离方案解决热读](images/Solution/读写分离方案解决热读.jpg) -- **当前key是一个hot key**。比如热点娱乐新闻,并发量非常大 -- **重建缓存不能在短时间完成,可能是一个复杂计算**。例如复杂的SQL、多次IO、多个依赖等 +架构中各节点的作用如下: -当缓存失效的瞬间,将会有大量线程来重建缓存,造成后端负载加大,甚至让应该崩溃。 +- **SLB 层做负载均衡** +- **Proxy 层做读写分离自动路由** +- **Master 负责写请求** +- **ReadOnly 节点负责读请求** +- **Slave 节点和 Master 节点做高可用** +实际过程中 Client 将请求传到 SLB,SLB 又将其分发至多个 Proxy 内,通过 Proxy 对请求的识别,将其进行分类发送。例如,将同为 Write 的请求发送到 Master 模块内,而将 Read 的请求发送至 ReadOnly 模块。而模块中的只读节点可以进一步扩充,从而有效解决热点读的问题。读写分离同时具有可以灵活扩容读热点能力、可以存储大量热点Key、对客户端友好等优点。 -**如何发现热key?** -- 预估热key,如秒杀商品,火爆新闻 -- 在客户端进行统计 -- 可用Proxy,如Codis可以在Proxy端收集 -- 利用redis自带命令,monitor,hotkeys。**执行缓慢,不推荐使用** -- 利用流式计算引擎统计访问次数,如Storm、Spark Streaming、Flink +#### 热点数据 +![热点数据解决方案](images/Solution/热点数据解决方案.jpg) +该方案通过主动发现热点并对其进行存储来解决热点 Key 的问题。首先 Client 也会访问 SLB,并且通过 SLB 将各种请求分发至 Proxy 中,Proxy 会按照基于路由的方式将请求转发至后端的 Redis 中。在热点 key 的解决上是采用在服务端增加缓存的方式进行。具体来说就是在 Proxy 上增加本地缓存,本地缓存采用 LRU 算法来缓存热点数据,后端 DB 节点增加热点数据计算模块来返回热点数据。Proxy 架构的主要有以下优点: -解决方案主要包括以下几种: +- **Proxy 本地缓存热点,读能力可水平扩展** +- **DB 节点定时计算热点数据集合** +- **DB 反馈 Proxy 热点数据** +- **对客户端完全透明,不需做任何兼容** -- 首先能先找到这个`热key`来,比如通过`Spark`实时流分析,及时发现新的热点key -- 将集中化流量打散,避免一个缓存节点过载。由于只有一个key,我们可以在key的后面拼上`有序编号`,比如`key#01`、`key#02`......`key#10`多个副本,这些加工后的key位于多个缓存节点上。每次请求时,客户端随机访问一个即可 -- **本地缓存** - 变更分布式缓存为本地缓存,减少网络开销,提高吞吐量。 +### 热点key处理 -- **互斥锁** +#### 热点数据的读取 - 具体做法是只允许一个线程重建缓存,其它线程等待重建缓存的线程执行完,重新从缓存获取数据即可。 +![热点数据的读取](images/Solution/热点数据的读取.jpg) - - **方案风险**:重建的时间太长或者并发量太大,将会大量的线程阻塞,同样会加大系统负载 +在热点 Key 的处理上主要分为写入跟读取两种形式,在数据写入过程当 SLB 收到数据 K1 并将其通过某一个 Proxy 写入一个 Redis,完成数据的写入。假若经过后端热点模块计算发现 K1 成为热点 key 后, Proxy 会将该热点进行缓存,当下次客户端再进行访问K1时,可以不经Redis。最后由于Proxy是可以水平扩充的,因此可以任意增强热点数据的访问能力。 - - **优化方案**:除了重建线程之外,其它线程拿旧值直接返回 - 比如Google的Guava Cache的refreshAfterWrite采用的就是这种方案避免雪崩效应。 -- **永不过期** +#### 热点数据的发现 - 这种就是缓存更新操作是独立的,可以通过跑定时任务来定期更新,或者变更数据时主动更新。 +![热点数据的发现](images/Solution/热点数据的发现.jpg) -- **限流熔断** +对于 db 上热点数据的发现,首先会在一个周期内对 Key 进行请求统计,在达到请求量级后会对热点 Key 进行热点定位,并将所有的热点 Key 放入一个小的 LRU 链表内,在通过 Proxy 请求进行访问时,若 Redis 发现待访点是一个热点,就会进入一个反馈阶段,同时对该数据进行标记。DB 计算热点时,主要运用的方法和优势有: - 以上两种方案都是建立在我们事先知道hot key的情况下,如果事先知道哪些是hot key,其实问题都不是很大。问题是我们不知道的情况,既然hot key的危害是因为有大量的重建请求落到了后端,如果后端自己做了限流,只有部分请求落到了后端, 其它的都打回去了。一个hot key只要有一个重建请求处理成功了,后面的请求都是直接走缓存了,问题就解决了。 +- **基于统计阀值的热点统计** +- **基于统计周期的热点统计** +- **基于版本号实现的无需重置初值统计方法** +- **DB 计算同时具有对性能影响极其微小、内存占用极其微小等优点** -### 缓存Big Key +## Big Key Big Key指数据量大的key,由于其数据大小远大于其它key,导致经过分片之后,某个具体存储这个Big Key的实例内存使用量远大于其他实例,造成内存不足,拖累整个集群的使用。 - - -**常见场景** +### 常见场景 - 热门话题下的讨论 - 大V的粉丝列表 @@ -3850,7 +3955,7 @@ Big Key指数据量大的key,由于其数据大小远大于其它key,导致 -**大Key影响** +### 大Key影响 - 大key会大量占用内存,在Redis集群中无法均衡 - Reids性能下降,影响主从复制 @@ -3858,14 +3963,14 @@ Big Key指数据量大的key,由于其数据大小远大于其它key,导致 -**如何发现大key** +### 如何发现大Key - redis-cli --bigkeys命令。可以找到某个实例5种数据类型(String、hash、list、set、zset)的最大key。但如果Redis的key比较多,执行该命令会比较慢 - 获取生产Redis的rdb文件,通过rdbtools分析rdb生成csv文件,再导入MySQL或其他数据库中进行分析统计,根据size_in_bytes统计bigkey -**解决方案** +### 解决方案 优化big key的原则就是string减少字符串长度,而list、hash、set、zset等则减少成员数: @@ -3878,78 +3983,51 @@ Big Key指数据量大的key,由于其数据大小远大于其它key,导致 -## 数据一致性 - -![缓存双写一致性](images/Solution/缓存双写一致性.png) - -一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 - -- **强一致性**:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 -- **弱一致性**:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态 -- **最终一致性**:最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。这里之所以将最终一致性单独提出来,是因为它是弱一致性中非常推崇的一种一致性模型,也是业界在大型分布式系统的数据一致性上比较推崇的模型 - - +## 其它问题 -数据库和缓存数据如何保持强一致?实际上,没办法做到数据库与缓存**绝对的一致性**。 - -- 加锁可以吗?并发写期间加锁,任何读操作不写入缓存? -- 缓存及数据库封装CAS乐观锁,更新缓存时通过lua脚本? -- 分布式事务,3PC?TCC? - -其实,这是由**CAP理论**决定的。缓存系统适用的场景就是非强一致性的场景,它属于CAP中的AP。**个人觉得,追求绝对一致性的业务场景,不适合引入缓存**。 - -> CAP理论,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。 - - - -但是,通过一些方案优化处理,是可以**保证弱一致性,最终一致性**的。有3种方案保证数据库与缓存的一致性:**缓存延时双删、删除缓存重试机制和读取biglog异步删除缓存**。 +### 缓存预热 +缓存预热是指系统上线后,提前将相关的缓存数据加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。如果不进行预热,那么Redis初始状态数据为空,系统上线初期,对于高并发的流量,都会访问到数据库中, 对数据库造成流量的压力。 +**缓存预热思路** -### 缓存延时双删 +- **数据量不大的时候**:工程启动的时候进行加载缓存动作 +- **数据量大的时候**:设置一个定时任务脚本,进行缓存的刷新 +- **数据量太大的时候**:优先保证热点数据进行提前加载到缓存 -有人可能会说,并不一定要先操作数据库呀,采用**缓存延时双删**策略,就可以保证数据的一致性啦。什么是延时双删呢? -![延时双删流程](images/Solution/延时双删流程.png) -1. 先删除缓存 -2. 再更新数据库 -3. 休眠一会(比如1秒),再次删除缓存 +**预热解决方案** -这个休眠一会,一般多久呢?都是1秒? +- 直接写个缓存刷新页面,上线时手工操作下 +- 数据量不大,可以在项目启动的时候自动进行加载 +- 定时刷新缓存 -> 这个休眠时间 = 读业务逻辑数据的耗时 + 几百毫秒 -> -> 为了确保读请求结束,写请求可以删除读请求可能带来的缓存脏数据。 -这种方案还算可以,只有休眠那一会(比如就那1秒),可能有脏数据,一般业务也会接受的。但是如果**第二次删除缓存失败**呢?缓存和数据库的数据还是可能不一致,对吧?给Key设置一个自然的expire过期时间,让它自动过期怎样?那业务要接受**过期时间**内,数据的不一致咯?还是有其他更佳方案呢? +**缓存加载策略** +- **使用时加载缓存**。当需要使用缓存数据时,就从数据库中查出,第一次查出后,接下来的请求都能从缓存中查询到数据 +- **预加载缓存**。在项目启动的时候,预加载类似“国家信息、货币信息、用户信息,新闻信息”等不是经常变更的数据 -### 删除缓存重试机制 -不管是**延时双删**还是**Cache-Aside的先操作数据库再删除缓存**,都可能会存在第二步的删除缓存失败,导致的数据不一致问题。可以使用这个方案优化:删除失败就多删除几次呀,保证删除缓存成功就可以了呀~ 所以可以引入**删除缓存重试机制** -![删除缓存重试流程](images/Solution/删除缓存重试流程.png) +### 缓存降级 -1. 写请求更新数据库 -2. 缓存因为某些原因,删除失败 -3. 把删除失败的key放到消息队列 -4. 消费消息队列的消息,获取要删除的key -5. 重试删除缓存操作 +缓存降级是指当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。 +**降级的最终目的是保证核心服务可用,即使是有损的**。而且有些服务是无法降级的(如加入购物车、结算)。 -### 读取biglog异步删除缓存 -重试删除缓存机制还可以吧,就是会造成好多**业务代码入侵**。其实,还可以这样优化:通过数据库的**binlog来异步淘汰key**。 +**分级降级预案:** -![读取biglog异步删除缓存](images/Solution/读取biglog异步删除缓存.png) +- **一般**:比如有些服务偶尔因为网络抖动或者服务正在上线而超时,可以自动降级 +- **警告**:有些服务在一段时间内成功率有波动(如在95~100%之间),可以自动降级或人工降级,并发送告警 +- **错误**:比如可用率低于90%,或数据库连接池被打爆,或访问量突然猛增到系统能承受的最大阀值,此时可以根据情况自动降级或者人工降级 +- **严重错误**:比如因为特殊原因数据错误了,此时需要紧急人工降级 -以mysql为例: -- 可以使用阿里的canal将binlog日志采集发送到MQ队列里面 -- 然后通过ACK机制确认处理这条更新消息,删除缓存,保证数据缓存一致性 diff --git a/Subject.md b/Subject.md deleted file mode 100644 index abff9bc..0000000 --- a/Subject.md +++ /dev/null @@ -1,141 +0,0 @@ -
Subject
- -Introduction:收纳专题相关的知识总结! - -[TOC] - -# Redis - -## 线程模型 - -Redis内部使用文件事件处理器File Event Handler,这个文件事件处理器是单线程的所以Redis才叫做单线程的模型。它采用I/O多路复用机制同时监听多个Socket,将产生事件的Socket压入到内存队列中,事件分派器根据Socket上的事件类型来选择对应的事件处理器来进行处理。文件事件处理器包含5个部分: - -- 多个Socket -- I/O多路复用程序 -- Scocket队列 -- 文件事件分派器 -- 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器) - -客户端与redis的一次通信过程: - -![Redis请求过程](images/Subject/Redis请求过程.png) - -- **请求类型1**:`客户端发起建立连接的请求` - - 服务端会产生一个AE_READABLE事件,IO多路复用程序接收到server socket事件后,将该socket压入队列中 - - 文件事件分派器从队列中获取socket,交给连接应答处理器,创建一个可以和客户端交流的socket01 - - 将socket01的AE_READABLE事件与命令请求处理器关联 - -- **请求类型2**:`客户端发起set key value请求` - - socket01产生AE_READABLE事件,socket01压入队列 - - 将获取到的socket01与命令请求处理器关联 - - 命令请求处理器读取socket01中的key value,并在内存中完成对应的设置 - - 将socket01的AE_WRITABLE事件与命令回复处理器关联 - -- **请求类型3**:`服务端返回结果` - - Redis中的socket01会产生一个AE_WRITABLE事件,压入到队列中 - - 将获取到的socket01与命令回复处理器关联 - - 回复处理器对socket01输入操作结果,如ok。之后解除socket01的AE_WRITABLE事件与命令回复处理器的关联 - - - -### 效率高 - -- `纯内存操作`:数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别访问的重要基础 -- `非阻塞的I/O多路复用机制`:Redis采用epoll做为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接,读写,关闭都转换为了时间,不在I/O上浪费过多的时间 -- `C语言实现`:距离操作系统更近,执行速度会更快 -- `单线程避免切换开销`:单线程避免了多线程上下文切换的时间开销,预防了多线程可能产生的竞争问题 - - - -## 数据结构 - - - -## 热点数据 - - - -## 双写一致性 - -如何保证缓存和数据库的双写一致性? - - - -## 缓存问题 - -### 缓存雪崩 - -### 缓存击穿 - -### 缓存穿透 - - - -# Netty - -## 线程模型 - -## 单机支持百万连接 - -## 长连接心跳保活机制 - -## 时间轮 - - - -# MySQL - -## 数据结构 - -## 内存设计 - -## 索引设计 - - - -# RocketMQ - - - -# Thread Pool - - - -# Register - -## 多数据中心方案 - -## 百万服务访问 - - - -# 问题定位 - -## CPU飙高 - -## 内存飙高 - -## 频繁GC - -## 死锁 - - - -# 服务治理 - -## 限流 - -### 固定时间窗口 - -### 滑动时间窗口 - -### 漏桶算法 - -### 令牌桶算法 - -### 分布式限流 - -## 熔断 - -## 降级 - diff --git a/images/Subject/Redis请求过程.png b/images/Middleware/Redis请求过程.png similarity index 100% rename from images/Subject/Redis请求过程.png rename to images/Middleware/Redis请求过程.png diff --git a/images/Solution/使用 Memcache或Redis 方案.jpg b/images/Solution/使用 Memcache或Redis 方案.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7588ebc03029e78eec3941d7163d1d91b3f9b0ac GIT binary patch literal 12248 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 XXrg%AhdfvEOshtfum60V_-FhFFWS7j literal 0 HcmV?d00001 diff --git a/images/Solution/删缓存失败-解决方案二.png b/images/Solution/删缓存失败-解决方案二.png new file mode 100644 index 0000000000000000000000000000000000000000..3470ba3a62fd06b342073a46b9ea9aaaba30fca2 GIT binary patch literal 18598 zcmZ6vW00;vmuUHxZTpmM-6YP-*<#-f<)f)FV_{@R^II&oZsK38&|H(3DttGBj5aIuy5+G(mI5fTE5?V zKD+OMU!C8;3y=@?4|-+aM}p?xXI?O0gJ1nm{~ymIkWccr-`}6v->cu>&p=hHrJ`rqI0o;`w3@2X!v-@BKaC*O0iS9-bc zryuIi(i{5MS@ADJ&(7Ca*4P&>cxS$J->IKdUzpF@rrC|&jbHn(lqbIZ+s~YQ{O;f6 zbM>3vyWcTa>C4^=-y@IU&)t{X&)>r?v)_$hywB7d)pdfeoIQd}pL*Z=JF~CUZ$3S_ zOWk9>3r`MT|KG*$(&N?k+x6akPuQPf=iVnb{1tk^j|3Q_kG4XQB3XN)>1Pu3@n?I{ zNb#%#k<1Hm+Qf^4X!Ll_p-A?nI8E~9VQg9=$8dDp@;@zdl@Tl&!l%eIyNUu}1aZn^w$5L}$ zjXKb+I|-C5@kVb6um*1}g@Ofgj(C-V*4hr9AKb_3J!%j#X4yDqUi?uPkrLW0{VDyg z?I`#D)AEey|DJ5}-|-9OiKM$dX_ix=5}HS0!|jtLItCH-JG!#FW}$cvJpO-!hOv#5 zxCk<=RPm?cy+U38- z246m#)hZ50qC*DG#0`CiAhW>WPN**yuD4jy=lL#9yq$jYtifk6ujvCxNR<307-|9V z@Wy2EeFTlhGBiGYx<&%Yi*UAqZjt%pu}=yXb;6{BKMfb})9Pp)=%331&x*u&Y+jPOY&@BPR!eD#@h!zV)}gCjM^=75W#e8$8X3tkY#K5DS~f zrPq(C$Ri2qe`b-N9=}!{0edFVmB;iO`d>|Zh$G>iyj)QvQIz>CaMDVbVvh#HR3R5lJ40z> zPP;Zq-P+v`WNpl2x z1mJ7A6I6Zz2U7}Z1l1e#+8kl2@1{qHEv~892_zJ>(76ptf81UM@i(woND4{iupfOB*PR7b~pIn z=q1LDtCDM4{l9$fwD`7Unf@vK4~PFN83c?D~CP&;7F#aq$ZnE|Sr-Z%B6LnVRafpD(-@lf)=4=Q3=*@8TflN4(B1Siw z(?v0)d1~SR?FIgAZAlv?MjuB;l80wruA?6|q%M*k10}nhv-$C)fyZ;;$jxhGR~ z7OaY}hF8nP*mi%nRw5w>O>3}*=-CO&AUS^-Lz{~Dji3M5COhIJvhS*bMl)qOq9SGg zwoS-cpWyr-Tb3d} zL#J21fiaJsXMPr3q#i7glMy9ukp%O+R9<~HC}bJG&Hnu#lT{$2oC;5&YC=X94u)eR zLUKr+m`~(VKViBDno4_LjP@{4?{in5iNJOSl$Y)OBHosxj1G7gMMIJNBnXg(|Ulb;r%Q5c+voe9b`jX ztlMCM4{zY&eW_@cNnsoa72jIpOn^z5JV?MFr*}yh;8*ygjkqApx_05Zm=GeQfJ)pR z(X^iUxV=x7QG-xmMuJUz=_bk4RgFyeDN+worHHp9X)Xe(dlPegkf$Vqjg^71C+VID0?W>{}C+Qh?BhIQ3-Ur>E%QEc{6a}43uiG@e#yc#|J zZF)+j@ZoPu)ljObpMe4r;ZZl9ZSjrQBJ&@`?b468jT>6rduO^33@=mD+a_B#QjL|qqo!ZI1>e#G)^E{2e~JEE$>_l&o| zZu6D(qv^2$FkvUEeIFHu2E${}*2vabm1?y`qh5^HCV>Rmjs6PiA>6D?4K;R!E;lU{l85jd zV!y9$(72qZK#au9cCO5=-2iV-13OcZ^*G^m4I(Q0AX;r!EYEnth82!8Zfiy=#iMJR zWvc_V*5RoZ_)BXhJHiIz$dgk0Xer@gABf{iG}^^1AUw(@3gX?ow~z2xJ+|-E5*+Gh z5SXqj&+t^RG*`l{swAvCkBH{eo}dU11B%8Sz_+Tv2IBKX?lpARf3%_6(DT z_7b*`F=q*5)s$?}kr;FUy?6w{yRWPjhWpr5yVO9B{dLal7SH|%xq=JME2>97rM5H; zwniJjFjNvnNqvT-%*`2)yeK6-Cy>ZS_E#d$>Uzt}P|@V7@47k-e6$!*XK6S zVk0M;fM#CM_k3KXmE&79$+CwlUD1-|*EjY1yrj ztgHlRZGn5;m1vM;9`2ypQ`&s#gx{AhI4=^g?=(|c7wMM`X_)`^L1;gX*zQB~pfWQ_ zZzC!(x{X##P&D40|s3e)4`?RXw+X<$D(ToqO@9jm4IT<4`n z-=wIA!5A4=v6u72!wQ;?JCPu4!|McYJy32++W7EQ*O0vfB?T3&wuh~)3Y*V_%ba&M zl4#|^iC2}a@=wW1Nwl)rtPClu(a{nEXyZ(nreJ1k<~f zP$EP}z{pJ*)o^FCv;Bi^_E+Hd7E@c2-40)qECPozJ)dpT| zYQ3!J)6A$j0m=#X}ybAXQ{?w&M$-4DMAA1S^qY4tgI!a|_M zw{dt>r+A_4LO+<)W+AijMO4l``93<*!k*(Sf_c@tYn#}-(-?z>plhcj;bI31u+1!E zlhM!AC$Qx_ywTfliPdu_{-lQoo8RS2Q9NVkkqCQxq2$k(%6HOmb6n-ks8L899W%Gf z+67T&*R2a+)gcT3hNjBHekQEbKdSa zsNds`O=-s14mq)IJSRGa5vze&6F6O1LjI_hdJ=h%TODQbXD+f=;>!EUR~_e4m7K*X z+=D-mDEp)nZK!I}YI)f_(?Y1zZ%#tObX<^NFopnO0fVWoo3V5BGg{ z7SxHxYG+y|nnOH!JjjMn0cIVdE$|!{VMvf&iaVhp;DkZdWBkKM=sN_07rtb+NNSij1>^Sa6E!E@K4H=Iq*VQ%LHUV2Z0 zhtah7$~Vnmma^ik#8B%oh+M3Qhu#kQZlHKuFG{T%YjU?z96fM4(sIx=txQ_|Bj0^& zD~YuryJwg1vSIr*nd5o9%ppo3(JJ3>CvIV)c${3RN zV!ArFVz&Q#uM*h!V;cF1g282Scr6oxvwM?cp)!*>UbVd+_q?Ai%zI~8ER7g6 zcJU@pMa#>LiIgmXeGwa-tp+2-FUDtHS(w=V_Z!V9N&`d=P^(0P1QatNSYxw+L z1kgq=w8Qvp_%t=J8EHEHQFyOdiocFUT$F?=f(XgR`85=!%@`ia2%wa!Qvl0@)T1d5 zE0nRoeaf%+r&Lx+-QUC1Nc?yXEAuEA_a@My$~kEZ8jJ!^c-0o^w22A1R9Z4!zac#{ zvU;|@?}~xKH(rPmm_!EY_xR4}V+ywb>DD53z!Y%?XTySkm>6{lTdz(*!^@arFC7qD zqGBt{clADB6-}5P`XS)ai8ZxDiPj*L@TTE@^sM&shQX_K$GmD%Bj!`WWci4Fttyn| zeNnvss4VP%T{ct5Gc%AnAvb`N0e^>INlI}(V=iZqX4joeeMZ1GpBF|W8{>;5(|t_E zSbbZOW9G&T%qVv$`K%Jd>r z)#1-$_lKCg=V)PHEQw1pOjE34D2?6~kQ)_h?Kan_U1`m6098aD`k(B(EBmCkQDSHc zzg6mgwa1r)*_7^W1Cx9;?W$jg{S$I67}2j3ms~=XUwa>=B3x_KOLQ3)$A;6bM7qP5 znoVN4!Kv?Oa=x#1_!Yiix#EC|=|7e{IWU?7hE`S!7undYVX;3|VGGnM0QS+{M-yqaB?8$2;+*GM)wZL32&L7Uz{6fQ*oO zxk#GE=ZCbCII{NAa2pVXQ{Re54VY*bSK8+B&ii+`U8pt)Mx&N>mjx^F%ZDBQS~Xj* zq_F+DR%k6!>!O+Z7P!H#yW+#7&c8)BP7?iH_0Bivv0Q2W70;m8$2<>SJqTM`w&jBp zD-ASkfSkzictvT5r=#o!L4E!RYKX+5pB)z6=sOSzskKH0@K!vDT)v?|v;Lx%P3l{c z#$+V2y>i<{dSPk0jTOCHi)&*;!E6MBA5lant;Y+!7=r63_aKjhVZ804V1tmh83EU#p#JdhVZ-#<;#5RM`u;e(i;B*{@J1Lb# zNEM5CpY_1s9l@A!`!_#4{(?U#u3rz-k#Ir3fXG^#%78<7C`^;7*;;xP2IQc?O( zzb_-ry2RQ-eTlxv3dKZd^8)n|2>_{zFAE%`IFrmYpU%CrU)(2W)`o&9j$a2}PgqB& z-X%~gfrXDurum#A_|u{zQeCtX_!R@*)_REKP>5q)Af7%(m5|@q{`L~j_s|-V&DeR4 zoP1Nh_*TcGZ?!aAb3M}4a?*1hC{~PUEi}k4OlTsNh|kM>lSK-q)t0q9QpKj9Tz(d9 zm(_gpfbQP)?0KHlX_G0GJp7*qy9p(&giHMh=7uL_cD2K0LaYP@`lcA{51b3G8v7W^ zqhb7V_XYW%%Vk^bsW}bK7q>m-tQ&P4@^ptuNO4wW{)=hOrB>#{&UihFaJh|=PZ@fW zF8ln_+F?->VojDQJ#UHrG=0`enkVXqPkT%gT={L;7*hkq5t(M`xrRALaJSA1aVa$C ztU^ooZ*N~@YdbJ+pL6!yz?QghOCD}#~T8;Fi zCu1f=u|bx{&8I5zr?JO{w4hOvk)6O5NrK87I&6P|M>T;EL=ES^HMio>SyeA6;hw9x zGCW+>;wQyF*P<5nm{oT@BsA|JBe8-Ue?i%PFJ}^c924Fl9rZ6MzYd3K&h*hM62*0W^xLM78Z>aQWR>`#*s8+ZQ{$!$F4+@!-LQ_Dsj($^A(xDNN3OLp1xqFBVD!#0zoV@?3g9Ml? zM}85;C8=K)-?#l944|W^de1X#L2R9-z+w`j@|NRDc_MqOK&-y$xW-fN)QlL6JB*)l zdcHEq$>ly(2HZJJyEH^9t{Z-M82+N?VhcqW&8tPPR_Z_)GD6qD7PVlI2@S9lby}Az z6zEEPqD5ndRku22gUbI>1QD#az=Epq^v$G6HV-z`L0n}Ad(>Pqzcfccb!0bAQ)S+1 zo4gic!5|Mf!Q`OOl>vVMjhUf>a)Aznn&)1rz|9D$4vE)(g)wHUI(X@8{t{$Pl&?2r z#X}&d0n60==NSajDt;;ER;n$U+1ZkXPf2S9MyRb&N>%jL-X^$miDZLsip}*xSsLUE zM55O_tD60alF49e5^6$$pSNR+mRjjcwx93*-fk%~k==~Rf4CuOUUdF!<5Zsy%37l&*VX$mds90A=H(%t1ECp}9b?#_ zV%pZ_Q?wIoL{SqWo}fIl0q1cS=Grs|QRBJ=vxQ&9m54@_EK)lHjVaaYDxw!iHNf-Q zF)U<(OoI3+8`UDi{)ud`X4^cBEX;`w;&|%Byaj^Y`IdB70lR8b*>>^$mXl`3rp$X6 z?=J$LI?f`j|j*n5SFY#XjNZE+|s@l5#&$*`FOBj!hh0>Vbmoe?j zFXmHB4?O^s)$VGX1$mit{@U_=EEH$*YNrc>ZDIFAbJ~8 z`?I>0&NXVYT-OONS|LomIX&+p-I?&_F;PB$JFqn%Z%le5`{gvyJZ+QLap07Qu=yFt zBr;&j{H-JGlMY$P>d$KQBpbnv_(Q#bmrqO;i(`G(REiccs$@Dw@n51t&9ds_8>|XhM@7YF$&W7A7le|HrpWW())n z?}CRulm*p67wk=Es1kar^>(%E?^GR)9_E@hFMI(ZPgg;OaV!U~*gy(?aP}dfmD}{G4@RQgagt`3) z30P+1`}sNMT_{&+al3!xqaPT4?N#ahB8M<0NC7XK(BL4JxNP|~G)Hi(>jfZI;hP2M zBvi!w<{&pA@kZSI8;9Z4^Ba|qDqkkMS6i4iVo*NNH+*ShD=FTd{V~|(8@(M4PG=ni zl-acTqOp*>J`y}Cit_~(0~lZ9k5BA?E;;?N7QJKSx0*>WmX)7vWs4HWqa+en2oPy% zNZ#MVhsyC%h=7KqQ$<`^$4*Aq@Sm2Uxb5eN@wVRj*>c=1M6wPGBz|#i(OTz;1A6tn zto5vZGmUVy9VI&5pM9}uY2S8TjqP2+u@?icg$#DM-Qd^uCQO_ZZk7lMU^aDPHMO2% zV`0mLz{@pq6~PO_wS4WZ4^MC((mz3h;0vQL_C7WEvU+^ks0Xe>QaI?XoVEBNanbQ; z;vMxe>txBU{yK;3pR*o`?{Eq4&TjC?+7bYUgm>UxSNBt)Rz_8;fzhtPQY*T+HgP+v zN-`kKgN90LPjOUSO^M1Aw(%G?5cq^qcv}}`q~hN)k^0VAW8OEvM?-hXri(0j0aTR` z{k6tr6?fR4KD0#Wse8|L-2vsB4NnW&bT;4`yLvSl?DJMiPi)4}AEiEBzel87+ay)g zPT&f~1rstcVUdW_dm1NN$;gLw`a#)!0EFPnlpwQK5gm?)p`Po=$k(&{gz&|B(6en81xO z{Y7#1=9mqn!cq+V*Fdx2NP}k=je(jI-(me|aw4WZg-fcA^7Dkuhk)+WnHlFS1yGqm zaZ!vCX0Nh&UryRT=8pmPP@#{q9L@KT7gF|0&=?8vt|e4v_P=mX1+m3p6#PPqvkG?i zeG1>ZZK!*^>#DR&vv@SwyJl4n(mQWcboiwbJE*OcQaI5I2H#0B-*;`eXl6@W2C`gc zfprK23$X^i%mt=U<(0z&3+93z#!B_~+h}7|%!3<3|Lz?N)bR5d{u6rP7o;fMOZj*w z5`~)T?*t=j-a;sQW=Fkmg9X{4w8EKxT)|4<)8kKPMnQlAF$P^*!FWnc6--0u-Kp>w zbEkHH2a9oBd28==xOufUwM21El@URRvZP+HG>QrnQx6c1g8YpqxQD8$aMo{Onjl{q zwODmI{j6G0vlp`{>tUjM7fFv?%N8@C^!(dwUf5*U=lCatX&75j>Xac zuqpq*lX+X8<_=^0R1EjnYudi7=X*5^X$`HVpQZ&K`sPS!Wer*bDZ>!Dv1O9JOw`~z z?pVN4iTH^iN)c-7HSUx3`CRnsES-s`PBH&NNH~i{gdZvCy9_sM-gcS_nPy~&O{L;k zl3IW4*Jj`>4{dWxGg7MMkxkF$;+^uE~2~T`2oXK@Z`6cdmOukAa~7a zgK2%Eg@Puk-*Iqg24oK<>u64BTf%q`wG_Sgl>uY4qZA;umOp5ws0^x06pOv!+ag}E);@+tB;v(2 zRV9@Dgu|qrR9JA<@--ta4tw+0wq^$0UR*N9%!KJuyQ{(naO$IejmIq}JMYggIhi!y zS6%`E@k5TEkGA0+D>J6@yPpw}o1>13;Z6DiJ45u4KzC^!jR@%SECE>q0JWg-)>^b0 z#}L_s{rzQioug-Z(^hv}E zF$WC4krguVGhEomDxTH3Dz%8`O!^Qg*I=n8B#(aZGvW%_u@Uxz#FCV48G-b?6JPeh zG}=OnPo;q<>b4>U><=2t(qy=Zwx&B6oU9fG zR;?icwSRTu;~ay&sVgzZk`43-bx%Wv?s|(?y zF5d}2Bzh*X>!{}~)`&^RgEm7TF0r6eOw3oH&lp4iQAYfUogkhzPX=3&;bkqUIbi~RXq*9*i6}J14vJzeRVS($JP9(| zaB$|n1~@+isjoquS!Sz|Y+IaAM;DH0yEz==wAhXlAGAc&vdrNkD-!V?W4pE+;H-^@ zW*OZ=D&joF-JnM^nOBUaZ$x`3n>xZyR^84cRNV*qCiD>`MG}>vZ21+AAGz|$i`*fq zthY&2P2%O$7a3bqCe)TSX_QoFGq<_U@~!&JnzwDh4*&pooi|XEbjbibI5A(-I5|ii z*(a{jRT8_0+_0izEKR7L8`*zuD1Z}EfP=>TMIx zMzFLvACUxctxQykdlrglO5)sS!yARpsmv#bVMNvt<|>~rh_EZo9fV0rvM$M#XD&7vduYs}Hj>>yH>y)fiS4qA?D)vUnW2SVEvew{~@P3N%t(%{!0(pg^kS(L_8QT85&zBceR^Y+17 zD2HKk3-yV$hqbm@Nv{Z{I@Yr5iZqzRD7M{4r;7a97Q!E{U;%U-n4Dp`!-g0O;C!Om zD{NnbBf(D>U4;+Ib4f1Qu#gG8Y(t64h6uvB@rUnzyDT#EM@1>sut4x1g2C?i`R7%9 zEj58WY@!Kg)0rkm&9YC5eTcpAvdCy!Tg#7ParAxQ`+swz?4^SGpt)O!n8afdNzAOk zM_E7$0D`>kSH2E`BY1H8@$|Jbsj412Vs*fK1Q3D=piF(*n9vsFFiunEiejj?*$7-p zULE!KbaV?{0^}$R_Nv~A2J?_0jO=$pDAJ+^xjek*HSkj0sK7xFNGd_N&SbCrC)t`#$fZr z;SQXw6_r(Dxuh_sAJ@S5Qeo|>wzSIQ&t1RCM%g&WH!UbTNsKgsdQBS=IqGGcRpUXr zec!W29rbu>tI0Mx9{a%Es9Npht$`UhazLnIrG^l=>4)0sc26gXhsHN z&J0}laC+T6uFv+!V`SRPiOijV^{Yg5*iA>Z&_Vh7q$uNdK?V^zT7p<4;i|Cs4HM%n zZ8G-AQ@B>@3)Zf!2?{s78yjF!;8JWJTHnixEV^)L+#4>5(cg%dE}b58=?msJ3->D& z0rqH#^++X2T@q<1Na0jhV`jL-;cGaA1-hQFHV1TwgbJ&HjkQr~^QJZ-d$V=MQqtHS zXO%bMfd=m$(bBB^C#hpcCjYrzR8=)q0M$)Sd@|1weR1hv&}DH4y)*I(bIy15F(IBo zhO&j?YV(T|%UpK`K1CxlAp9wbQUYszH%fBEWrStC9w-Y2KxJTY*AG0=QQP{t|{u0W*eLprJCX@_aDr~B*P&8g@gAs3)YnUs(*qtl`!XFihLIh^$Lw zt_+H#%5E!k@3@90r*c=0_;O4}Qawc?!MuWx%z1NveJoJGs5_Tu=+fD%*dAzC{W@H5 zk~X#kU{mEuwI@UVg*fkEteWCH&Fk1p`)x9Ork$z2-~vSMFtS1d zU$H8ukr?E%9~bd#R(xSaz4jw5xOQx zk6`K~YpsU}At<1~mg|x979|h|!M2pv82R{(hO7VxvRCrn?KrqJeU?%#^5DkRmCIE5 z*ZL8Hyxg9ELEuTrfRCxgYzTp6Q3w`0*A=U+?l)G!T4%1 zAgL`W!#&k9j9xnhEzfrcyXr);rVGCgB$D|=D)-S@ExP@4rvdXV{NTLB0qaG>+68cL z9EKLpHX?5~A^%ek8) zq6zUJ{SI}unE-I>cZ9_46+XTf!PVXD2>I;P{k(M-mVihF5P{G=xZ42#)IA@a3AL?C zWH-2(~ySzK6u8n_sCoLDYb6G$ zBj@pnQ0K-NA@jjDWbx|YxDkCynEnvQ&JrBV+KAMF6>r*>D>HQjV781;4|sS{xDImj zP#tPO@@d%^`Kv3i8ky8EOf((cSHTq-c!i!7gz|E7dUgOhBFLvC`cz z*Y{CudGWfFEJfQS|-$cO+!q66iP5@X!-C981Qd! z;}$Iq{Y0_b`E*ST5?os%1la-X%h?{YNk-1yHdU1-q^6VY(8iFsn6R@QavF1R8VLB| zmY4Eg?VB)vzB-3%oqavG&^6QcDqrsz`^j@Dh%<@+ls(L0KQvESJj(k7^}9;Z*m6Okqz`Fj&sTNz!TBu zTT{pqz7bXe9gyH}m~Xpg0d_YshRR}tHW66P-k9CQKb49jg%K8WGIZv5)QPP}fgDPL z2~DtHxqfwCill|Zjhzm7YAg_$9BN#DsczZ+vCW+L0~KFg)VRfU&H6Temeux2HM1K1 zP{l4NlO0#y!p*)~>p3!McAQyw`)AfSl{1I|Yj|uLf#M)gylW<27^rgFNjm)%g!R+{ z!KBt8ghxRjHhfWnG%$ohst2QS{Oq1J@p~Wx4z-bd;Y(bK-x7oE=9wCJ?UY6Txn@0F zBZ3223YdZRG?b#TZ$+8rXJCz1e6Mk~Z#C=Z>hw4skNTjZNjY(o&X71mu%`qmpDb+hnW>8)2sa z+N02Q`d4so27!9VPU}k6t0iS9Hv%(h%ML#mGY*dV{QeR75k>1F@iI|`cAX00Ot14s z{QGL+>t_iAou~p&v7i0CKL_F+Hx08taSk}_X&DjbCr7OyX~GhPqXd7~-i1ivKJXKQ z^*@qTS*XqCj>m)KLbq>QrvwZ&OC3y+%5#UD6kW^7S$y_8uk0ikG?{1^snZtztL-Ro z7XPKHkoQJP_F>^HK{`&A7}ZZNZ?G&@Tnl9giSc02Z9?UPjQjrRWY#Q0a5&D+Ms`vP_P*4JgKJssR7GM#?g<=j=wMu+IQWr6+_8rzy?IZY#*YJGdC&tS;>$O zN_B)$?@Gs!S}kOn@bJbZ(qWojGB*X<=pLpAIcTUd=!TO4KV(0YRV@4$N3>PZZyGT( ztt{bJ^P5}%R^G9Kr7l^$CH{UQ9H;VX$!^+---u5*%RIa^lT^2rS_^sFxpSobWEA2%rNu9mz_eb04VlV&>;c$e2>nkGp@|Nq$TX zhVTy;0B_ktZqLQ*6WazbkZ9w9G07M{FDttk;wTKIz+^|%KNO1nN8*uDOHXP%kS)W zGU+BXDA4I(baHe9L3#Dt9s_6ZuTINWNHlUPIHG}@K^+_KR7{HLG(xV$zmV2F0v|uG z#3YW(vf;s;%Bh-@r%N>W%UDP!#Y6sB!zTN^jhHss26>! zWl6$ghF7LoAChLSW0eE-gMFU6nRq|ZHWU*Ie}|RO8ZUHq<9|kEu;1YE!F^C%fWGxZ zm0t-4jgd3xCbFi^H7K7U0cXgZ|C)B9fUZXWqn1IGA4)u?YW&;+o%g7QH(_^@fI})w z_dP)Vl8`||k0ltNa6jn`nFbYY=#z$u&FbK(?FRP&BRi)8lA8cvk!ZbRLaH6> z*YG{eOJ;s(5iMO)&MaUic{gv^1`F)*c*OG~iK8v1j|;fBF3=!p(0y9)oQU*PZFR{QmR;RpymO}1dz z7i9#?b(b&0^CRznoZeOS=5@SHMBFh9U+@||F^92hYiPcUV_o!kI&(d0d#>xFPd_P- zo?pb%emY{YZJ+EUkrhynXxWNOwmC`fM)Q2yED?HjKM8BffhTO2vIftm7ZHd3+Kx3_ zAIe=A*EUh2t6C255mF{OJiM1zD6r;wszywJrM#1k7oEm~E$!^#0Vm<{Sj1RegY-FonadT{|hEsdhe8dynM{ z2M~!|l$M$v1q=2me&GE3eraBv5 zO5I3a^rUgI)qQOlNYp?S#gv#9k4}P@O#pl&Oar5;b&xCyD`8xX8P*6YC)$FD@7gtZ zELq(&KpP}hr5JC$FBg`XA4{vN#5y3-ntcHlGUBw9cW^#n!zW%87P@*0T3y<-{>ATw zH^+A#k=K-g#AtLFfSSTyQmqg!To|1FLq5Y%QwfS#iCo>Yn#gS?1iP)3*sM|VG8VaJ zWpuR5H2E(MVlx^k4n|!9q^jfJwVBH4?)`&8f)qrPCkO1Nvn>^xnI_E=44mnOiCAKb zm1f#&7Cy&g;&%87k_H(E0LT)caRZ26MYc(@@WN$CZ{JL-?!2MQ3!o-xcXR(E;)UfQ zOKfEX+6vt5GE1w1!~vZ-Gd}llJj|Aa9#E;p3Mn@WI-nYE?=q8&onv$b-V9Q` zLo_Vm3RmjFZSG{z1h7rH;2m%`!l|#FjN?f zihR5Oxw3z`_O-QczeBo=+=_qvIMI0Xj`hJLV&S$t-_xrt{f>p!5lh}oo_G}>aUQ@; zhn+9pWU7t`0Wh$Y=1Qn^0;W&>s(1DQN2191T}g6&fAZACao(LcYrS&q`Q?FYD8HxY zHS5gr{pw`4Ptv=P<3t^@cxAA2FjBlb5D!iPj>m>ei`9m&?SLul35W%!FrXMh?&?Jh}Z`ME*dF42a@j z9*l3^8S{%}8=5UjP_)nBPj?S$WB@P>eu;RZ`0{0NuuJ72di+rve6eS!f%JB)r6 z%C19-y3?}LC8gJ1mx0eJNc{7HvJU`s#cp!}|D_2)5^ta$3~JL+R_Ps?RUl5RcomD$ zPmYaywBI+(E|~p38br?Ex9@u??TA{e9Sp1M)a zbqHTeH=*py&Qa`NnT7F(|BkE+rnySgwZ+*yAZHt_IWB4l_A=Z}vL^%RSH;-I zmOhVrnO(c?X7wM9?7B3`18aEH#GcK5)Ym-8CfkPY9D^Zn$*Tn47#KGS_rAXC6y#de zB0`19m6DrZ1*w$NJ#$j1)w@h?S#S-SzGL9#{%m2m+nAehy+EonB6fT3{4xSn(I^D^ z*-uKUe>t`%VP?(G{&DprNA^FVYKEwkf^(&7_*npC+OT+)Qd%Ne)7q=HXu^d^*?E9nsj z8Aie;`VtZtqfFDU!BAYdr|g06vV)yj2?XUwY%sB`eHKm(uL(4iI6k)x9AWWvE|)Fn z?LIkP1fKPS!sq1i#j|ws!l9aZK9;~?$aWgMj=&%v?BV6jF0$nnq-FR@`!VlYe zfSTiY`#s(R&~O!^^4dp}1s~3S=FI9F0{T5ZhXCCQM|<8N>}m>U2q7HrUy)s|m?L6- zG8Uc^!NZ7w+EZOis7kh%rGSozWX|Fd-?#1`@k8GxVf=MZj82QJVKH3{4=#(AfNr{B z!WuUSE)nWnen7M$i9m1?O7;Lt1`ukATqSw>10Umb9b6JNRCI$Tqrl8D?A={;&a!Gs8JO##3s)lJpAb-IM%zV^+q6-RJYi$mkDvB6zyCaJKqJs2A8*m| z%l(a4%!5%Rrdw{o8Y4+mok=ni+NX2YseVMif1*3tshMqzQr;Z9D}psPR5n4<8_2Y3^Y( zb%@?l2ed~q;YC?QS!UGWbR*a?p0-w$Iz_gm75dT0lR?yVJV~$RCer}b!3L~jy^xUFZWjw_XgO$qrAm_ruCWsH(LZ++jI|FI5^z7BfziHVmqG5Y! zW*|i$pLsSl_WGMSYCz5r{u$9fM$^row+XI*tj)9LutTtf*0)B4FDPqe&5g@O?aEv- za3jH9p8d8Po@IuDc=I407j!4z(8gSGWP&NfkSjI&Ys-w`Fxg$j=XSoq5!-dl{&c1D zu|<@skGTfjX)OPvbR5)rcqe4|q&n))2KUbi$WXF<7KmVxZaNk?|L(_u?58>+ zubAl9-PtKl3#p>GRO&fQGnd8W!Pf-^z&299X3Or*pL)xWB0ZIzAl?4hxI4e3?Ir?MYOI_S*B-Gk>_jMs-!hSNQfJNnk`clzZ02&7 zAC`=Ycq1=^ftJ!NT6Z5eG%#XQbyHPDx-NoACdX z_6XVVs*f(|UpBGlSNdt7q6Z>+S7Gp5VWb);Tvw(t%L9wl;R{UaK{Z|u=^s?_ zc*5Kw8)1e>Vj60!j5zB%<~LKSRoJC7HOkdho)60cg_0<;p&s z@U~Kw8TGI$=^tvrN5`m)3bHY~4(U)(;={W3UUhqrqLrRb0VB!kNuq(Lo8mQibRHHR z7D~X>t!?t@7=-O-XV0-ON3C*to;{b$YCCEVujFy8lR?7wr058=msjdF7wXD2`ROQ` zUI5#y5ofO>#zOWd8Vr_gbYpUCrI{E>0VB|ZT&_pTg*AgWvxhc=Z6gGYMM#d(S^%Ff zFK9W1$OGk)@^gt-SD^+FhYZ37yfJ2#=Mzi+j_XYHnVQxCeAv||xwiN&hceREkrq1F zCM7Zm)_v_D{VRY~Y$(bUiD(>2>hWq|#WUc_&#z?y1lHbe`it??tgti@hXvlb)qDEe zY$O?18-wksbBbv!*Ry77CD;E6;vp2bl)js&^gD;e*CfvfvMRpL*%`~}tWz&1SORFt zq1MX!r&ss8-p1(w8_*G@ayT>RpPYYepDf9%zygKLZ6I?z@YnX3m!sgW#W_+DGTs*NwvQcCk;bID5S^zeHVx2;KOE*TlHGc|q7 z)gp1N^$MRQm2m?!&8u5f@xQ137N}ofLV3A7h9INhVAc(H%?>|DUSH|1F6b_@=6wH^ zH&|#!A$bVvr_H%3M657T@HnebHW^bb-+Cge_g3wRMLctdrzYcZ5U+ep^wdOVPOhNZ?yoN>1Kyr@V!jQXl zw<*FFoi9@3*@k3{t%0YL+8|~-`OCw*o52p;St0?sX;u->`jX3s}Pav>yQnfrCU zYcvHA0h#73*kPoetWNQio32ngGN<93Hwc(m5OFt;l%X%bj*(9JTF9NPmH@kL{;k-M zi{Pc(P<+(}H^j#LGb%;dY>Y3s#bMH z#J5J7YA9S6$OSngGW@&&D#LMHhUT!AmNcg83iKRSlf6oS1MpJe9|Ws`_)e2NhCm_} zQC@BFQw9TQv3RF!D_OwglH?#H*tet9YgA{sfdIg*BkQ)Uz)cKA*tFkOX#M_gi*gFy zVIJiws-o9bu$#tUkNz4B0k*!ue1sM;xXbbsKS*RUHZ3stRl&;QyOP||Yg4iq#i&Y; zIWDKNC`rMIzTuvR=sNk-hI0$ssSa`lV|_hkS88SwCXP{F?x^cETaHqcjO8?L4`fLe z9})CiUHUW;x99rEWorEnJ(+O=%mrD_bQIf%shS(0`6K`4Pw2(mINTt!OjIZ4t(N9L zA7ePy;IK|VElqf#!Gy}?pU~_+*Ba*Z8MS>Ut-*7oW;%}F)$GcuiG5UY_F38SJ8o*@ zdhF{9fh6WYUK>esc^SnASC)xtx%?#n!nSpOAc3QX0vuU0ZaGPeL!_-@>SNqL^?QmT zZ+KW4-m#6){YdcnGgy9Wgj7mL4e<6JNo9|5mR;IDAM|nA9v|Dv5*7%2uL$Jo1*bQX z2c3qS1fe7ghYf(Q&nyVUYB=U%yHL)!@^$y}?K7l;3I*>Mx>A0fP*BNFBdZ23;K#Ib zSbz6w#;u=0sF+i|_C$7v@Z%mo^NjAvCJ56I0G};!JgKLL!r6wj;AYaG%hC2^@h(?d zT0cH73eFcReNPG!Qnt2Q2Wl_Shy}@}U!|=AQI$0Ajh4OUP|Tdo1WIQUf>w?KXSvdC zJ{gp?c5&`XcdaJRfDF*9X0eDq{@!67KyZR!sdH4nqwXP?ki$sb6@Y+FWnzxwp-Ijntd*iW#HW}mA#UG@cR7zuhMJQONjs1 ze`EbH{R8<=@c);e-TguQkLlmXe|P<`{`K_DfPatv=l?IEzfu1={m1-|{$KH*L;sTh zh5ncJ)6ZXvAJTqcf1mjX{CoLt_&@ERxPRO@l6J57zJR{L{WtyR`0w-Iv|lctYvym+ z@B2RBU(dg=|K0W%zzgtS^Syz8r+DTVVc9&O6^Bg+|@CJiQ2kmxmQ&L9~rwsI;QOi>YKD9sm)+T{D3+@rNmq+36ORw zs~b8B4mK7#QTyy&9f2bxxu#?+&qNvD`CGkoc<*fxnCoQM8iSYL)?OhzEkZR|h-?P3 z4yxG~0+0>{k1wnBVn+w=jam;Wl=qK>~q2Sx6bQ+JVp__$45vMNo%ifg_K9*SYu6<)W1hm-Ju;*c7%0J*`7s7iquX^ zR@S1Ep(I7hYXDymZR`zkw30?CW=3@yxYb zR>Tzs79wSV+=3E__GKBN?*g75V<9&*Skx$S!hZ+$?&AH@wX}gUdnLtQ;47-)X`;G( zVO7szJuL68K3|Ao^>ie&GLf-_R28Xp8aRLjb~sQJHzcM6F$qC*+@L6N!hoU238PqY zLt90c*(J(BlJzOCIseZ_W@6ANt3L5>s!4meO0IL}BV zDD@+)_I)qtt`q^q!5%0%jBi@EER1EjdseF+FztE9H7E)ka0%hlrtJvoo3taTytuA2 z1;W`A1Vn~!oT+R42O`25r>!Q({_Y)P1+IFH>s;&pPH(V7MnsG zaG)qIkX0Ng3LJ2tC~?Aojp(3kaG)r0!eOcoo3taUZqSaYyFxKl$^)B19B`l`MI+cx zPMfqNs&3GZrscw#I|T#(;6QU|Lyi*-P;}j)9P)=RZpD3*p)CnduK-tB!RnBbsGo}$ ze(pm4ur{!~^m*=uI{h@Q7Ueh2GnfHqMYcO9bmTGa_}$zxkDs*ey|ow-B)Phfo3IVa zc2jVxref?$^Jqhj`ZF9zZe2myq$*gc7(1MQUYzyK%L#Ca{^s>glrrJ|7}cIgs$uZ| z3~JEaV6g&JC`KIG?gR%mH2mi1a<Sxs!!e{{T-8y7d?nWrrZc`B?jJo69>CN zqXlg4FoF=J^B^Zt^7}~q9i=a`5Xbbv69|jC!UZ~0)28hNku_sZcp5=$uq9%DRz+~V zbdlpsVuJI47GRGCI64L>7URVV>`YDt#aQn`a)8_WTmu`57@VR)R!=Xiu8pmp# zO0Xw~PMfqM*w4-~tc3@dp9pUJhjSH3^a>B2`fdeEXy5(6cTy*Hn~b&OA256H$D?_7 zhVx7J$JDLc4|CwzT%8p_Noa zt9}f{A`bl~AoJB|&i%TfZAFo-F0@;KfM!cU?tR6EygA<42f}eoK<3bg7;(Hm^X>rw z%x$23xj%3qIkX|i3HmpxxSnlYAgVY}6b8~OY2!?E3H%aLD*x@fkf)~&$3@*3hIRE^ zp}oFrNAAUl21x3QAKmnI&Wt}8KUhk{fCj0*WptRh;CMM8@!vGIjZbA!%&Wm!rZ&yq zefSI)A1ObDxz5QtqBy~=f{mjss<8HFfmn620A|pK94HDN4>mC{cc%4L)ik*=YK8%5XK`;WX2ZFmTqGOSSm>1p-Yte+<0MXg|tieiowHX?6S1{Hp<5|+KGN!N#u0c z=d;J?F|){KMkZLY41?8*4G5JARGKbMamc8L9HN#inbipqNv=XY{e|fnz1`;2kbKWUJ1T_Bz ziOq1$uI`$1+o{%?RisF?Y291q{Mpn>ehU-oc%V77A+${80E#kC3yo#o#Vyh(C^!RI zKV_^wJHS*Xji?zTg8-u~J~972@yTj?0YCC;EO3Y0#sC`|mZQ@nxryU%w((ih586v zC<+{49>y5Ua8Hb?nH+LDx)qEasi(QdE4LuJj0@&OaVb>Vo_+Y46Rw0J#$NY`ke9V- z-;<)9pzX4mgJEY&-0ddm$x3HpcB+mP1r9h+6gb~~T4=9Z+P=z(_)$o%_Wqcq=c;bd zYdcP}s-uMgLyi;$4mZ&!i(fh}00Ri3!hw_w67L=gqMOba;T6VWqX?X2!~l_kCof0@ z_Q;AHn7RZvq_+|4|ib4)SC+UxK~(j#6F?AiIGKn`M3b-~Jr9Aw!N7 z1r9h*xBvkDfuO+z=K)KNoDwFSt~3Au4KjR&^$blqj>ofU+(KKVQVnL{!+bmnsh)Ow~f3t#-fSLelT{N8@TTy&MRE&=Mh&_`HI-5 z_%FoxXiOxF2V1_6{tHlZC#)fT=c7lLvp69UI%`syd|NL8I3QhCq>jjo z`*&F1q75{5{IYRM)vYw3YfGal&jkHn$0^&FZMjIH|NOx$m|kv1e+7Z&RRwKUDKT*` z7JioRU^WC_F3GKnSJRy>o{0TKZ(3RzjsY<>Z4m`;^g1;@@KndRuT2J-75gj^glLa^ zA`<5##xA)ZgTOk0Z%5tQqP;3Tfz(CSS)Gt9^|-^@+QTlAsc(af(l*JD zD7LnP9wACE-SKRIkpC%j$&LMvVo7u@`_L%*fFXhtSVcYuZAT*=%`_pN3l!49?vT~N zMXQ=cUBKK(F3&6;$!1FSd8oXc4TWI2+QKDgDjD=6nrGli4t-5}TR+s!NActObw>My z5uRRPZH0rrctCr8DL9MTi&X-RA3$qtVG686!Aa#`;R5*ovL8sc(D+olDRdrn=pb?Js;MwOk?Wt%%yD8*w~`0Zqi z)u@(E$+i%YB%t9eM!^Hstbj~Fhshh_&4c(gzwfcq^OczHdlM*zO-s8yV5z++aOWq_ zpW-6g`f)7WoY=W;p{S&RT6!3af6UenNf|8{&+yVH9tb?Fd;~Ob&;9|S(g5lgNyz28h_({&F7&2Oy%xw ztR!t8wJz^n*<%e|N#?XI`c!b5>-@FR|LTOi_7xkpbyl1xKd6vB$+sAE5m?^{!ws4C zMQL}4N21{8KgBr@O4DLX&C4;i*oEUK?4#W%$4~ERW}Ae?&uG zl0-D8wbf*CjY*^cvG}~&WWu?^s&5)NL-d>tj^Nl$Q(riJPUc%{sG+`jJL4p2-}Nm# zd(m06|DxK~pStEUZKzN#=KIpkhk{FPN^A^i(kMG z<>V%F|5m11aTF#sDy9l)>58=*W89Wo03elH`1PzioM7hhmZIxOTE}*?&!ZEJPHS6r zYmKfVK>_J)hD>afSa5+|&cQ)G_DwT=Rreq*=eq%0)p}m?>d*dL-ngio2c*#jpclp^ z_33<^=9G#FneWy-gKso+Df$iV6r$~E@GF+zer+OTc^N{Rk)&CNjUzz%Ha7A4LE^_x z&rcK)@V~>9#vzsr62!z)UPVg0c|_5}eU(J`uJCou2Zp6q>gH4`n&qRWuQqv9a0PvL-@;s=m`%l>8T#6w-1>DzWq*yeVA@#FkK(%4sC?C-2 zLOyU_pWnmKwufzJ?vneqlbHVqe3g!id&Ep`75tx)5>%+E$BdJ`FW4Le;|0A2P7>Oi zMpbNOD?_Zg)(x!)p&^FRY}fO?@ptJEveGeu@FEq_$CNOKi)4Sr0R}A#L4{N)=0H%^ zBzRGAz(2zWjS6CEo$9-AfDEuj$f#^HdTHMWybxycUErfxb6CS_H0@@R(3F{PmhHf9 zW7=h>^72;=R&O`6SP(JTD1_L8BG9X+ZsSsV_82_C7J-N=C2K)fM(iR^Ur{RVoxeh# zE{VGB&#<{{FDA}Q7z561)8Ne)ArgnW%Ji1Y%FeFC3t{BP*nYD8@nGz~XFb+dSST>- zJd)Qx*(=#Qd{C`F|YvSc;sc{P`@4MyI#5SMSvMelX zEZWc8w*c{T5`UIWqd|t`QVyF&rddr?pWJ#JnVXo7aZQ{^Ry_>oHSAF?V9x6?$68E z+Cx5e$gZD9%fa{0+B(V;#qbh8D&^f&Y)FqHwVyv6@y0>jeBZOL8(+mr*wm8KjRn7; z_$edp$kMw-Gq^95P@X~D;KLLfzCQxh%nG!i+8sC)R#jH}yhHVnRb@%?qkE$~q9a%q z_;AP6SpE~j9djggtV_AlaP9Os4*^3`vQhB#^btmVZ`ahh`q|Km9lW>Ok5A9HJ#t~o zLT4S|T4JCKryf&cHyF8*oqY<&{1_(782=41C^+4FeG_MX4}_z&bPv;c>b{cJQc(eE za_z=aU$@xMa%vjdRdMe{)x=$MDhj=5J^r4RZ`&ETJ@Hp+H5}OR8|}9{!dTbA*BNB zM1|n=*V2H^d-;OIpCB|(H$s8&UpK3=IRf-+U5Cjy7uJFG#ugQlH zzdpDJc|tNz^|ri%?!&qzW`3wLr-JpWPZt*2^U~7YS$7yebqr1Ba6NwXUAE0QW|-|v znn`fuT)3z7eB>{;*z^7>^%@d7VhOUN47=^vmOt8brD-xOUvr(3hS2qcX(zB1%56Mw z74j{K96{k4&SI?*XR>FPRAp`8Cy4Wu@9P{N^5b4Xh^e0khRsJ0atO|0Zger`_Dmny zSDdO6pTBN+ZgPOUna~_?rXK=pEU`)A`BM?L&{f7^a`J8t3CZ+lGuZZ6Vqq1hNl# zvv$0sYB54*Zm@}2quO$qV$buB>DwIvuxcg0OV`-5t~9thjYeqVv`QsGx1W18YWKH% z0X}0ggew_A6l(*RVeopR90Dz-oUttyKi{E=E&_qXgOS_trM#XT!#M7Qi`n#YtUm}o zc33@7M%~~#5DeW10^>+&Mx6gKcy+Rz$qt`sP!1vlj*Z~(X%yn~BXZFwGB}XPMBR8k z&KTB)CDh3C#Z~f<DVl}$e3xwSkyzj zM@4VgphR&8^yMo8g!IIuw^Nvj&^m%V0H;uZw3aubU<*C;?g(+&pw)XAbGL#UM_abkIQ6Sf2Q26{W~a|c2oP_ zQW(Uu4pGIVLGIV5RLer1SSUTgAvg5^h*XIts1rkC+;GMEhbIKcSJ^{YeV*xhbSD7{ z8X*r65v^E@ygcnQztG252ovp00Py400;J2nrR&p&@CQcjmz@Mk63vt+N)s*`K*xXu zu4Hz5Z+y%XyJ>YN?u3b0%0>HFxX%Fi3Nxs|Y$+=Iv7ctNdjzQZ^CM=|ld0sHsFJ+2 z(eqY)B+x%*A_}}A4kMr-!2amnj<%7CulFVFk_jIt zkQ0(X{J6cg=lqZ*?g&_VcI&;qJ|M;dQ1BYJ)l+QI;lQQO;kfJw&mV|A{Bn`N&&aZ_9HO zObmPdg*rr8B%KUTSqEq~o`m20D}OTT^&B{hTr&Ko)Xy5rnyTg*wp1ixk{-c{rt-~b?z%%kFqI+Im1&g#l0e2)A@ zKS>bsoZY-Xm+^uuSO(M5xNZk})h$8f-H4kGe9gQegDKOm3A307d=N72eSWOSSy=+PY%|_*RA^!0Iopq9k2+BqhX6|$pZOC#L>@v z!6KaQFhd-e4+-k4=w-!HiwDNtPp=a0V$AniH6UY1bTo0ssI20HTm4#E^(X) zKcjTAKGOzJ$Be)`amgE^NEQ2b#? z!y+68{M)E*RyWLFKju_i=EqPp$@i%GHArHt12H|2Uu8rT!u+*rB_ilZa3Hff-x?k} zc-kaF_hCx8h1uK$H^jLBhZpsNEXFpL6IcbR%8XPgH#@Cg1MoN&U)xAT(B14#pq@Zk<+{+h|gD)6Tds<; z=$8KHs1sZKH|eo28E*hs-ObP|llP5p@`uY6>6dwgvdVc|&JpAiD<};$_6`h;nUvb` zmlp1@S%0gOlGE%0!;cC1DxV_#l0zvipq9E*dOlu$n#mHyR?YfS3U}$~_SxMdV-==m zT2b0B!o}Kx1LoXyKN^kjQ`J1=Q5w0ldAJJ+S1B63Zq95JjJnf>&6R#zbBesrke{hs z$>o&{$i{*Hp4Wl~&^g|f1V>E%XYFqb`=yQsN6Catts#f&GPr`Sj!-=HFY#0RGDdbk+~5zm6ta_7Vt+%)(K_$hD)(ym-!?>fl= z9^l+8KjU6KKfb3ld=wxCcR>zW_-QGln!DiaFz|6nD-@8A4>b6ljfof9eI10==%NA4TX~)Ohh!OXs`bLeOCjk6{W8^ZI6eu&M#o64!Zt})uFota zdh?_-)6=i=)uNvjb?vUk^pt(t0SIsu5rnJ z_9Ae_XQ>Iwd;;ztbIUl}N4Z6<>pw}>Y4p}t<73M)(r0~kSeQ?|q~qDyvwF-2c=4=H z(I2DfwU7FRLSi1tFI>3q_8A@dr$kj8MoZ;ElhpsE#4EDK*LX@o*y7(fKjB<>VPfh* z2wmcumMZW_5P2`uLD!r;ozO-Ju42*)ztsNOsr!dShY?|`H3C6?p+Tq$`Gx=#UXcOX zEnpy#u zdX;g&{so*LKt^^qhcq%hPvASKDkp&9$VB<%IYqXr-1Tv;=OoEn)WjM9l?UL}Kc*c* zppmxOM;k|CyAV;bf%SMyjX3W;28KVuCvb~qs}6phN?7H>I}Buf@a6ghTuLXZHa7q7 zPDMnpX-^o5W{EXWqAGSuiF2!nWDV<;RXLCpO5=R|?dxXXBmWR*^xoF%h3Uha+XSap zi1=+K4;`?^R7>6tY9=D~V80q)k#1VHiUK<1;=G4fv!NmQZ;cjajg(-;jak*}(7P|C z${`V8+XAei>$NuY15n%mo(4lrSiAxw$)^J?4gqy1Kr6)290hA#fZi~4vww-foUQ8K zRheUJLU13ApN6G^Yz2>$B`Gb{`tFtwhNoNbj%ymE6RSm7gkb=?0!1;YEEiJt<;U0a z!_dv4J(jzI6q<)jXE#g<7GSwcZ=o1And&*WIm1=Yij>vajLduNZM8XZzYvpAEaa`` znjkVc0EVX)hzb;*T4wt>vygB{k6Ol-NDJP0Q%8F{Oj`PpkAT*Jb_`0A!Ocn@z+|yM zL(|7jo+HikN$ur>S0=zz~@5558P`jsTGcy=&h8o-C{$sq6PoXnQSVM2Le z18h@t3@_axH`H&%sNYv)__r+BNvTxZ>k&`24KQ0gzx*r|b=jajX8uld{5L9VLJZuR zI!fGHRZi9|j5Q=ziS(j|GpcrVDId-~A5_*cF-%O72VPx39ihb1prdL&+)i=um15YN zoSaM6|3|i4IRo3AeLf}T@GelW!)hndL2Rmng?&kAu4`b&*ca; zy20668ui=%RS;yFfRKJm6V>g+!R*w)>07mb^UqRybQ_(OyCk13`k{6l2WsbR%vbUB z{Vx4kLkFc3MDC~ucc=NRCjacwJ(i50M|#z9l;==ZjzX;An%ey%Cl^0st^|%XPk$5U zebd-xyCzd{qmD;3L$un~wLE}YDtJPii-@cGmdccYuS=TGi$f*~nt_{caFf{peK|}% zZ;i6k30?&>Fzm0xaWT|8I>$`SSQec+KS$9nTziuAHQ2Le5#(Hynj_Q1F8s;)*rd6* z){Fo5b-Y+bG71g88|3vXZErCzo&%hg3MmWn#Q06#d}WSP7FLqRG}WA;LgoJ>Zvl3x zMtc^i`HlchtNAu|PZsfYzOFj*oq3u3CE`xCZ#!ly0IXs-lBo+QsSmPBG;Z|=M$ zC`l>T)^#6=*;v{*S7?+=%f%Kw!x9=CC)AWI`ECYP!|8m=t znRMUMnP_m4bpeX~mnZA8`m0zY;_Hp_fg;M;=4|lU`D_#xlPSGOp8)?-UFb*NQu#I2 zFj1IGnVR8kxvJt{*etLMzC-!h&ArG-Df^@cL`olk2c;#I0as>ynWP;_Q& zPT&0qh5Sl1)7p+j>yMR4|IgUw-v?M%FgP8gjGvib^}8c_$J2J*#-{hC$y%uqNx<~R%yEyU~@ z(4n~nl;u)fCHf|VQ*dD1OQ&(zWU8`kjo$8> zqqE*FnLoj0+TG2{i4OHXW%7D=GW}j|25Xo$^5xeuGI;H@3M$rmdL|6K9xBy#Z0&DU zxm>;GKrB%|FN?6CR{?Q}FS#Usp8~Gs{;T*j|C#fqnr9lM zn=61DZiC8%lcg`h08o2RhwL%83d#XsyfOYd3&A!|qz*WMe2ODdNWST`9@n#aypqUv zCyYp{>Mo_%rBfennhUh|Y2a3Ks1>H3 z(TN0gX7DUVGFs2{&T@Z7O?>*;+w7Hxv1)_?CiMhBsk^qeYfTjX;@N-ci-R>kYKBZr z#tQ`Y1-mS-Q;Z{nbp;J8N#?+)N-kpnNP}(TPo&$XQqQA$ngPrF(JG0pMlCofMCIKJ7Z(S{HZ{HLIeXa&TTmOb5kjFlmY0)f>hO^`~gP-IC4r!0nTmwNtI#YQ}?@P>MYb`Iw zK8)FaF&?_Blg^N5&*!8h2j>Dd{$Yx@-t7-G50m!;fTQ*w(38L(rY0F}C72%R$e&`Q z3gdYbNOvHFX`P=4ulr~n*()LS^{dG1RY?W<)pg&N6LYZK0~Sx-M%Wk=&coC6xJWK2F)o5umLcSW7Ko$nxmhtbP3=x!uZBPWCjR74=BQe9F}`?0X%q{ z*uQp*Gx&Cgq4}&!ckZUifbB>9d|V9FdIn7DMx@&bj`haZSYQc)u?w3tt&MEBbPJOS zv4(Km#a!1CA-su(N_vZ-Hc&0Y;=Y|#>H*DlGX|7?O@Wltgv^(Pfl@Wgm_)1V$`4as zdjiWFgm%&~BTkA-E6siNAK)WfdumB|0myqH=r*ymIQos*3EN0{==~SKRbs>n0*D+5 zDT5?_|ESE3>I9kSnc39Gzs=#QYL~4@l1kp9P#-kToeRU>R*h5ES8=kUzwLxf04eU+ z2!S72gIpS%FxuZjjF1fXE1%3@xtR}!Kv;rDMh$BRxU{o4I{$*XIMtQz3o*%eUk=H> z=fL+d0P2>#@5#99Y#qncwY-s_G*MtvV1`-enOP1M} z$*JSN6TJ}eFQkwrPpjqKJS*~7XhN@Ys zH&ZE*!u6)8s<$(YW_{}=+A^xnR$DSzFHN%8$P*TOsROVqEEO8}Zl^BQf?8g#mLg+N z+@-6`s!-5CdTpg50h3zEcEz4DUSP19edp*Y;vsY$^--!ZjQZGAc?eG7?|$s7zRgL^ zk}s!awBs@;BYk`fPHU7Ox3O2w6c77>$o zn5y9;0;u4}%*1Y=p+98h6rCg4yZ2yne(EI%h?KODrzx*hD&$@yJx(=Y&_`^N*E=&- z!|g-Xm@Q%3=uIy zhH(s^T3c@DfWLld>&p^=6$twWx8EV)_3jthgo|*;JMa@@bw_2x zCW3(X!E9Be58JhQLU#L@Xg&x2zC!w&77t7`OfW_kNB+8n$f%03Q6i-LrK+_b92#zd zuLLnM5oVY?s*r8gH%rzNlhhxwvJU0&>N`QFGZQoB99bydbsN}QacyQVkngjU)9}#X zZ{zB6hlpCzx%%C)xEX=XOKd}jV-YGOb>LSCxdmTv#xL!BIVTEp2R#p%mU0v&QhLqMydBmlru z{ul})ArX?zTve{>^UKoLETqr{WoR6UqItAmgxpmR*G?M?QgP6KocpRGg#)H4I|NK{ zVg?q>WZU)_GyssFxwe4K%Q*=~U>hInDqVV|Z^k!+;6an#)o4(-89?8S^YE#r*a2U$ z(sdL|S2~TB`vnI78^8q8&L!NLG(alLtT@1RfkHZGWB<4VoO`f1AlBWOqF*%&mXL6` zhD1VV@V#D3*$*gI+@3DXio?(2j>)?!JJgxz=~6};Reyu0+Xhm(QF~Q)pTK{~B0Rrc zm`C5Y|D5#(pb2jMA~9HMrx4^>~Ww=?UOveQFFbUTt2_H{-AlSqM8u$0ruM{xB2 z3E*V{2Agm${PmUB@Pq&@RSOuj0H_nR{DI6haMdeXDA4g7mYX(Q01MJa+B%zY3!hV_ zg<&kn$N&1Nu#40t)1I)|7ik!%5RQ!@cQe-bfw5%!OT@>PUkO|StcR+-PxmMIA2XJH z#{mohH;~77@c#ugnQrYJ)vt$8+w7gnRCN`*dU4k#%ed4(z&g@c2cV1CVdZ2M@~0T-WMsoK+M?X7;u1E zXv<4m{2UbtT*S$QYNI{Ri4kbqn-~9CcOPoTn@!%TL+6r98Byj^H+E}kU8HAkxIwbj&V$G@- zIp+R~M=aC3cI?i#iIs!GvqQDQXa|=Ba@oAorFgTbDD{Lj;`&SekZ$oHoT-n_*^R8x zpSZ-)O3|~lwIB#DBTl^j{a6YP^|TrCU5-!ChosLmI_}{rBGQHZDRF`D&qlOG6SNfR zqqJ9snvf?jw5a6bFfEBAH64$mOhRvtN3Fo&W~=|+hcYNKY;g<$7UroyzEax=x~w_i70T(QT|i9o9$;#tH2II;>ixWge{W@tMEt^)tWQ)L5!g4Irv)0 zLpwH;v_~xd1v(qgig2^c#y}9<6C)}_I78l^80XkR0D&MOK;jJY=Y&rwVd#T0Ot%3f z;yH7AGCUvgDF3@LXNy+HyDe5*$%^aaFn-MI1i`z$0wCpo&I#*8@QJHqYgInmn$mHm`afu>NGaYI`eq^MoZrG(nALr}d zv_8h}m6BXhrYXw67sycP`kZHTt&k0upsduLXqpcA;o;F<3y<=3fJ_aXzUHA^vqXvM zAPINV>*&G3Le=U2I-0^0ydc4BeQi(pFQuBR6uY`pU(W~tv6UQ&Y;F$ADfI67_8h6X)>%vx{;sNw)8&u9H3 z4TYv~Il4Fqosza8ZA;;8#`&a&)6~2akaW1w+LEL_NqV3b5?0T5tp<*i$(-4~dWTs~ zb#ea``LRK{C`roRwB(UigPCA(rUsDc z{aL@066Keo&v{*r>T>{H{)6A1fzfiDOD4=qF#55&jmbC}tVJSgV_0jf5YArEZ`IEq z$CX-WcQ>-1{maL_4MyDPLD|YjI7aeThbvP4O2v)q9q)V?lRqTO?!ZXem4FRQO@XKG zO>!Q98jI)be6w7=Ri7>qoVN3=t97Mw`Uc)wYZV+p75zIm`*b?c8`ZLYvJvpb3Pfm? zsl^din;MXp8NlX8p%N4*mDRYFWIQ+j`ocQLOG51wv26goQEh0*>^`ih_4ER6* z{x*_U%(6yxW9vYUw!?-P0XYBz`v_kc@79h)T0if^^YwH-R2@wGqA%d(u z?>Yw@6_A~R?@8bsWpBB+_5c6^)GgRo*8XJ#!Yr$pJSHKvb74VSzmh*^jf+3i7kP3< z>Hx5hl$=2I*Ya<9Vu}CtgX^s>q`?Qp(V;wUL0!1FNiKEcb>(MTH>d7%t%dmbTxG2+jvJ9E+^Edc>V^KU1?LCT=pK;fK)e6H?>!>_e0U| z$lMV@uq1$rtF@tiJh}aE@V4`vdRcsUQSE1ujBY=YNIRx5ZO8b0~>) z%E#lqS0ew-pgebd`f54qq?2Rd#)!=ioGBa4!3UD93!U4r;YD6Ld(x6A36t)!z z-P8!~@|5~HTlchv&D`!ljx8_JG8QzO+q&ERh=Y=I2G1jfu_J*4m^L&uboKd@+}pn7 z3w8GA14QU$*OE`F#5kGy73kresMrWti6!)b^qi~Wog=jx>ZZus9P+%fIY(u0VhhO< zee?h8YZO|)w56aY0G>3UN%~YcA{ekg0YG)}!)HwO{Ch7;ucB4bIO$_NEmh*za7Gur zT^@qwHv)|ULz*vp9*vLh3(rf#4fyp>`k0|K#tO6jhE9!h|M=a-3-@fYQe1HFM8GI& z4bj>zmNx=Fr1l&AZR!VZ3P9sNU%S{l2z_h)jPAdsTlzsD`Rt3J>pgZF{D{fQfi$%V ziH!akaFUOx%QL!iODHfLgW3wvt2_II)4~1{0kBQofN%Y*~q;*4Q&hH9^UOHjL&Y z8(-LMqM6`4%O@=zO@Qr^8Xh!IMfi^i&U?%Xv#*awKlE?H6^J_g`es8s>VKaa`K`|$H@bjR$b5@8+wxxR5Sg?VG-@kK-vU>tN>LklG9ey9nL4xd*c}(xc#4uW=-?q^JW~KBi z1u9;k3-OP-|J8IWV0;%!3)XZK-~;hAJ_(|4S8HhSVoP7unNFVP^jhB35pd0V=UIwi znH1~*?4=)K9RXiRYGkkV!N8I`2J$jOz`_a<*NTqCcD?Ll?34a}9A+izi?jFSzF_gn zYy50g^UeVm5NfUSiS0WsEZwbUdwjY8l>2jCl0K>IT(bsD9RmX>I?L{{z~>`y`vCnJNroSVHF0R zj9P()+Li%S#oOcSCI)dcReC2z(kEVvja@hS-FIzS012T?s*EBiV4t~{YCTCr!U}oG zElzc3))-uxK>e5ZyP~@82 zT3@6i*NKwV>Yh2R?{&VY?+gR8l9Ao|v)zz|c?pEYv2Onrm;UO&8gdqAlFrj=m*K*G zM(gW5qw`7LMe8FsvJZbCQ1r6?3Ag{@-Uz$dX3*QKVt3I*vC~}{)WScNXRPKxA&ITSlhfNC9xg*=MY8$dj>(N>cB?YZw zjyf-wu~RV**|x*?eHrFH;M}Dn;oF|Gti}YW+TJC*?&lmR75iRw^G#u%`WV|Zwn2n) z%*kj)hCPUvtwnG%<_qh-A04xut#fMYob z1Y~_!FN`k&gNn7b>A30{XV6-TEu>fUTF%=DW<`~FFBjV&UT(fw(hob^)XAgzF3<6K zmwUZFyTY$L#m8X{%O~Wa&cxd6Z)*BH@1C}|M_#h)qcj_1LS7iZQoRi1HdBYCLbqFY zU&h__XFhvZriFzo$6c#rv?V0hbQekJtepGk+s~zAHVa;3=v!vHaQgy^_QXxF9Vw{aj#-?k-4ob&qQLTQI z_Jz$cDTiT__5GMXI>0ihq}c`_)!SsEGmZPlNOl0!!&7(anPy6H$2w6`vvNBSbE;(M z3q4Zv45Lyw{Dl42LE1@w-7oU}kM3Fe)O9zkJ9HM+=MxFW^9O*6TH8#4V^3x}LZ+UQ zWSArnNq5S=bfNL1NBjjFsJnQQbRg$RC~yFMG^AYMWx%dkFs%v(yUV)Pw| zW1?7Rc`i#d0g9_ot!VXbw3dIF3Q_L=ti{Ve0UrzC^i`o*g?VqsY)Yw21<&5!5;`-B z#K8$2Ed*1|3G)MpG3!;7m{JWo31)ohzY#u!w1aAm(8?b%RfdC-0QFABod7^iyXPFj zZWbl&_(-L*{4vnYAJgf}=^#yV?$#kMDSed4r$hh~`iysW3`Vu;D{p$I^Xil^_5>Sk zRZS?YdTi`ty0~LYjDXeSnzn?TAl0kkG%NYq+kV1s8al z>JF{qwPoHnrjBOWb7Nw}~NO~>D1X5=7f~mfAd1{z1YqR(bo`E<} z%wiKom3%9Y%jIo$Ft+X0V%01wNL=lbtXa*?vvG`mO};wDl*{9|kq4Q-Q~?o|Y1#5zKcY*GikY z?F0(>RveV>PY(q8KVNH*)X}@98{*bKieIMDIv%83Q5gv4+_+B*q8bVFeL3x{nZhXA z)ERoSk?|DvoJaL=1PWWFxNj7D^jqtC$eO zV0?g!w!K+$T^sP{JiF1$)@9Md80>$uzvRzx+@ho0@S2(O8U{eE{Pd?64)wTp=L_3sF)AEgk*8^#S z{z4uflXD=A~==;6GFw4FIwm=hQ^ zC50g0>gn*{D66LmdiwT8*f4AqQX?%N-fCfGXW*zEbuH`{#sD@k z`enn@1y_Yg4v{e>1hr!G(@c{*kdZ9gz^i+LeN5+TS!&uS{m`@o6_;pk1ck_YxUA}! zrG3cnvv)gCgx{LUG1loj+S{6viMK*_!z}FJqpKH8`^`0~xYckjTz%6ds3>?XuqP@w zzV8ysgU%DB3q zs3y?)HG7O*KujUEAyiesU$~Iszupn@xEX2WuOwYHR$i z9MzO;0!@zurOJz_2&m9*ItYB(b(I!px6Z&@)V_);87?siWoRi&VtwI!1U`g9!Wd~1 zgMCS6hB-OF6qCQMru3<}#eb4Hqg+KT$F(Qqo)0s#OLRS*h96th5}4E@0wrLsluRd( z-qg_v^(6O1D&D73kt_2h$lT8a$kSU-%jSY z9D|PF(=Ww&=5fy%=K1Zh(Zf{eXzI8cbE(tjtrO8NcFrq9O!$BSGlD%efZOF5>Pw>KubYE4~ zf4MHL**e9QBtAbofu?Dt_&uEGqb<1VAvbnSb!JTFZ&WxO3u;k9Ro_BoRaQqCzSKij z`zYdt!F64Ah&M|o8)(RGIGP(g%P!|bU(l0-o-+{kT!wQWWA`@F@U{wf7_@B>3&q)d zSMBL72A+)(!|g?W4xL!-Z)_4tceR1A! zY9n&%UZFVuDt$4A=)Ku#3wJ~Fkhw3@IfV>+LLyef=fXcdg=gXJUq-#A=lmYZ_lml( z9{`HE7E-Md>>2|$N$LBZ!_8mU=5yOw2h3x`%rz`ccr?uzOf_PDrG%acmhR#1K-pii zOp)`fErPb*fIHdN1o#DJBx7;s6;_-~!jWX{aPum|68$zYqKac-p{WN0=JOkLUZ*oR z$qb4naG~X@W>fnma_fXVMArAe%bA{)8>-zd6N#Bt9HK#_@ zUQ4mVAU&9WfYoYx`MmsBKRAAUQyUd81O8@-930zdGgFu8E=RklnBm;;h%STQT0I?~ z0flkDh0JGGZ!=Op*i`nUsh;$wZ7dQRBAsUxF!dKt0R@Hlr@*=d+e>d$AH@m;k26(0 zqVD$b-x>?uqfYA}wD|Bx=#IVn18mx^9@@!m%mazMeS5w2$+fTg{*(Ex+hr z<2!lXa3g&HT7EB!hFe`su!MC%`0@h7RD9Mp2rlJ(nz1@OQz*qXFV%AM|)XYs+E z3fFdCZ<6-Rs*~Gc6x(!U?E0UcT$aj*t+|T#Nu=fDZsu(&^;d1Xto{sdEdR~pp=hAw zu#qIf#9cpah5*RmS$?954CoB!0^5LXF^k~QW}Ljr&ur#2JgK3v?^7wJ)gl(^@lF5( z`hWLcb^w`Jg56+(kL|Wci+ux0HT@4zX?sxX#ikDq4ls}UC-qH^WJ>MW zjuBs9Sle&22Q9guZ5(U|;Q$pveIIzhxrV{mZCD*cz^^|8HG!Y;%@Y20kGgv!2jvqK zrGZm9VdmpceE2vsID|a0{Z|`&^P&GnKsWa z%1Dn1y&vzn6XLe1Xp)7xe!BEbkShyadlK2H!&H=HAWg99Hs2_nLY>ky<%{1_&kTrR zIxWL3o*o$r4Kantb4Q)(;h+|bORQfZX zi_*J7v!HIB{w@(it$j#3F@!##CUh?bVDwQiw%=r5cw_S!g@Zd Xm0ALVO{kc$H1~5ea%t|)bvOV3E)3H| literal 0 HcmV?d00001 diff --git a/images/Solution/热点数据的发现.jpg b/images/Solution/热点数据的发现.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d0ca64a16644098c12647f1a55ca789581200f7 GIT binary patch literal 15444 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 Uz_tM}00ch)0a{+RHQ1m40K>UeQ2+n{ literal 0 HcmV?d00001 diff --git a/images/Solution/热点数据解决方案.jpg b/images/Solution/热点数据解决方案.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf9d04c40442bbc7eba5923617124e659b97c3b8 GIT binary patch literal 8718 zcmV+pBJtf)Nk&EnA^-qaMM6+kP&gp^ApignodBHyDwzRu0X~sHn@c65BO#-fE0C}f z31@EjIH@3w-mC{#+OBawlp^Qcglm$AY=1H3Q1`o9TF70D@O%6h_m9eNKKyO@SN3n& zuaS?!b5GUZ_dbIEFZ)~gFYUj&zux|ce(U}>^Go~hqdyA&nf$=`1^j>cFZhq_Kf2r) zyMOv0_&%V%u6+0XhxZ@eZ}cB5A4C3U(4Vj$^1row0e?pRiT?BZhq=G(yf^;y{Rob4;A9HW&%!KGX?xf2t}4M!_FX5|t&m@(!e68{mV#$+5p= zNkjBpu^KyFm47%AWkagCfviNos;6hS;jFfFJO0>6<|H^&A}ETz6~@2X>XK-u&98y< z0H)wWX^YXKYyi+Fm6-7A?i}ovSn9hjBb4hMdw3JmH2o*6SEK7ZuRg6?{*hek5)|eRuNn@nix}7#2mn zL+_CI$pUK;Pu4`Oj*{mQH%|;G44~S&#|bavEPZq=xL5dx;cYUXj(JFWPyd(6nv?HK zxbpye@EuD{Ym(C=(8Gc?FczOg4)k_d;+O>?#==ME(xq8p2I%KOw0X;G5jRgTc#$TY>ql~BIA*InbEStq_}$^-Oo+5EwB07K0=;t-rJR3}2Uh8}KlBi|ifHWVEkpl&JjGrh(C3^dMFGo5DU!E5yiCvDL z9cgIXXmBI-W*AhJ4fb-vAuHG0(Rw-1JIw<*eSlxh#)4;=;4}hqr-vsRp&5|8$6xuo za!`mwd6gx+%Vvh2*hhr?1Uk6dM@&MdA$)Q^H@T`TiYchAt2WVXk2(z|Md_dfE9L3WY6tH25}UiF?8LhdfRvJ~Cc1YiK+K`yNGJ6~d6%s0=Rh zK2L4!OBYos0WXZD&QG3DC#JDWhFz0>d=+5k1ZqA$ie(~VXB|tCzjThf3qD601Gq4N%Zqs0OT2d;jZfMX^94?ix>?0{5t9AF_OUW95tfG0ibfC!D zWZ0-H`Bgzn5(y)I+6l8x^#Qai+Sx>S4M}?DE0Ze6g4)}Z=7f1-zmBjJ-%jFN;wI_t zy9N2Yx7wCPT~3*TQ!c-p-z^LTA5S0AZte^IlV$;aQwnzJ?4&Oid#{%z2f_Kg!Q&I2 z>Mw|!rY)aV0Dt@IMzu!<@K=foc{LCOP8k}EKs|s~UVyn~&vv@uDfks=BU1My>&<^Tj5m5;xylwy{hsZF~&(>blE+tEwneI*uPUF7zh*Tgy9`~m~~Adoru^lt+h z>M_D?k0c@thtX$)t*>}?JaR!5#a0}}sg>>rc;MYrJ3!Alig}e>!*j?MX)DJEKltel zX@4C@wp54y79e4yoD(k=cj0ykohHM_c@AwJRqurHb(%?Ni&VVv0mCgxesNowI_NHL zEBT&Pm*2%2H`SrTV)B)zCa}k@!U0L|LD~kbUAn&hKM~Q<^#O0adAgC}`7RpeoK`-Y z$H`?wv>DMiTV66grRyfiIsSPC=rpWQuo53}s0tf~zaLo!^ls%o|5BAr6lNuwqLs5A z@C5f?5)>;FM;$d5pWopUqQVcNX?v$n(ww=z5{-7AsgE+H+f$*fZ3!~{!DsR7LfU^g z_M2UA4`j*jO?&!6vB2KEpm$G#`#Sj%@ zl%?4-l9PcvobIcMtG1HAcZ`vym*9=m3%CI@BKS_7_lI&@daW{3$76v(;APv8D?X%j znn%~zO0Xn3^&feOgs=esfLQ0WIP*9CbO$b(wm`f#L|yzAuLZuTjKul^++^#8pIq;E zn=2@k;=&+P7CPUWo}EOv-??)EmF{3KXK5!H-y+rUAwi*#cw;d+ED?A!nc{^FT69*% zpS@b{wV%p4MNz-8%em|srSqu7p{B5Khgga5?JboJ9U0gUpF$t`b}@L1o^yC1yxTyx zo6##gVDr{Z2wCFGmWg*g$_&*<#t_-5Cot~%*3%|Ujhg5FwuG#pu`ihSyWqZ}C)@M^ag4Woxzy`%$(&tSoxK%zUg_Vtf=m!u;clnQV;Be?> z8k%SfhNBwDND3?T)P8!$JEg=0106jfbC(uowI%rF?iw3*VtRx~AN=lPlu`9%mf&n6 zBp~zlz}Y)zeJ4BLV_LeJa{Q!%{vp(@s?5M``0X`7VeBm8_lu`zLKUVU769TLmCT`Z z?~y)V&nEqq4Xi8-46)1llWjOT5#6aMVl6pHX2(Mti~@RlX3uIs)c1j~37a9L?$G%b zR1$b4FU*o?03OUwLn>cO+I}k_INmix@1O(w+WcVspQ-td8`&2`h#v&^T=_o;bNyH! z8|~TpJRe*{X7iwdfLTr@o;%cb*JgZQjaRZ^tnLJ zYuE(T%hm_At)G*UopEmw_XA0QW7avVgKcG{h)+^V%DG6P(P`qZ!trUgZIm0oTYq*I z_Za-QjjIW_M}A10CeU97tdQXOJM41G7~`m#F_ZqTpziaZ=s^`Ul3mm+IRvHq46E>( zfKojH4^0R8(=CqUi&z1LYyZiqQLeUu;LApdXy!TCr}}BLkOU zxyAXHH~7qFNd3ci1MW0AvCpQF1fT~R8{}j{)oW*}>~$O%M1pBHtW?~fG`3oD>)VfkqsRQZFcPIG z%Jf0kM`)WP*G2Db_xPJh*e_ZtV48i$W?j#pOp*%Pulcc$v*llC)JOK^FvdWD`cmI02AOai>X_K& zfMAZPXQD{rQrY8b#B^!%vNZ~Yg{Sgq(c_7YsaofwEEbB&UU8v;O@|#IqP?vms?31%!#!FYh(Kv0H^M7sBQxVauUtb3bKjQ$V;f%kUubgiqj7yfh3GO&P z11nF-axgt@%wzh@?LUXB{Y&WV>SvqEP&;vOUF#7V1_jMV6Xf|Lq+q=nDb+cRc zeJ8=p0HwV(MD$?qTw?%C>nPYBo;IMWY>SaJa`r{C5cC|yJ#7^8A`sDpaw%2G4@d`NTb{-MOC z*&wu+BYFymU@KzA{aEk6;3qNG-=PVoKdKTRTedbt)&W zjTp@I`5-Z4aa)HZWTaNuQPX=MmN8<4=OUDWI~vm=mKqCdf0IaC$loAw3=B$|4h_iv zz{>FQJldR5d3Y+e6;PjJTqE9HO8S$m4?2{15}Zy(+y3of>1TEFu1Pg6ZYe9gk3lGO zf1H%SgI1#d31Rjo;1Ht+zIB{>H$A<><30#x^20@IG)xYBDS#of*nYPJ5YB{KtFw(6E zDrQdPsfXeVreipnU?qE_s%ZV3(ctu`spSgnjoa?Su_~Db^*R_T(w=`YNDIHck$$Gm zS5WX;=7qdGnuLD1R)&*_`G-<1^^U?@MCeDg#1Pkw>|k(o&spd`J9z;TVvH(SP*Q#A z$tM#IOF-E|%4!#2_9yy!E&!UYOVc61O05HB0F8&YX`-~`J`>OEpBeLG=G9MB#r`>R zN{0nzl_`8I_HTSE4}cN=e%)i7DfDL%ptA+WB8q{GPkXT}gH3cyNig&X1r6j+(%+tE zqD-QHh3ZFG118-s$@A?9WWacc@rh)ko!A%I971Dd=MhTKj06GJn!+5kuLB^s2Xm~{e~#leGoimah@rlvidtG{6=-9x z5y%C=244!@dHVj*O3F)|_QjCh$FWyO&$%KAS`{JD5&vtPEFY3Cky3LTOY0nFm5NN+ zD?U~n>t3>V9eDTFeH&c&KzZ<$PAe=&;b`YkDhPT&1S2VCo6l6a}Hr8(}CJJfS`l~dwET5=xo%B zV`6gjFiH4z=!?%0ps0(|+dniusR{;~2xrU@eIFCIB z1nqT`=3wti4^70XvGpFmcHLz)N%*eAraDDZ*M;;Lal&=+vRzGiQKn#V{a~~RRVV+0 zyb2UgOD8%#zLZFqHfCRNEU4Y4OM^-?qoGPp!7aS!*6cVvfHMs3V$^2(oR=b{aoS&| zk1$On`2G-Wy^N+?#MF#Y?NA3A0I{UVLLes`#DNUb4WYoO1#gGc+!YHgi$wG+@GEm~nBKE@D_G?qR~ej7Hid@$6&ELyIa#dpeK~1PH2j>p=K#YyL~HHkS><(V!`R)kE(9$dxk~ zaVU;UjtgBo@=%qvqlYhR-1uHEkV;$63)1w**tYn4WQyBPA+n z?)hexn|LM5ZXF#Kcs|lnW_t@ixZ#p%@Blsn1m3F&K+u&LaS2=gZ21LmWxLhF)+fP+ z(q*}$n-qP^<{-|?1cn35u(R9RgYMFqU{4t~#2bWByLCZsh}e;6Z~%Uc!)1Hu#pp^> zg^oqMQ)~KQ=LSGJVWsL*OcM8&lksx#K1NixGQ-|w41~8jc*G=X&mRtYi7bA z6Kbyj$m-2rWMCF6BrOM<-$FF_1uJapl*;UwR+Yj_=*&jiXO5e4)BcpGmP#6($G@R? zTaq`scYI(COgjx+H6mNppo}i!hk5t91HuaYEmaSa@LByo;2msYA)ezltENtqJjAL) zO)ML=3;%C3rot^FU%v#ED=ul9%h*ipx`*F#UZ3IVo8QAq%%?7N2ne@alP3-zLW3jp z^WcDy_E`B1X8-g+&W&FJj%u$^;bFTU0HTLanPDOY>%SjTPm{OfRrnsEa>(J>#Ne;2 zv7HXeSNOxbh6w1=1yC(|1gaZ1=fevKnf(`A4(51Y4(XTPw-m8}7+NQj`6Rd=X}*0% zY^9Js?Q_@Q{S<_m5|rk^SQCf5xy)sj-l$6c&o}68nzaS9GV5H~8i8;FlYCkHc52TL z=Ejz8K*_PqlQe&g<3qkq0q(;K_K6~FeQVla=Dbluw~ez+Lzufs=#ua(gkH~ry6n%( z{jBazswnpn9$f&Pc9Qi0D8`n5kznG=&qKWj_0%CBkn1auQ}A48NSUEG8wqoPS_hF_ zbGt5}(g*r<4v|oF-?OEgGg4_{27I9P9jrR)9y1TrlQKsMGvqPIFM2>}aZvAeXdp&_ z;7PQ_H9~emLKvM7AF08Wu^f@qV{6==eo(V?%0A*y-2cu$9Nw*VO~rt2lRB3WtGv-Qkady+smzLDuF+naJkOPc zRNN8d9RLL8>f&G)+jjq9rDlJnmH=yLvvIw*kseRBh^3C06Tij%_JfxXs)u=V9yT+^ zkcqhu*4*G9xslBRuxn~N5F)Y9kT|W4qJHgK_z0Xa-T_?=J+|*af2n+2p&g5!prCB) zoKZl?#l2}qSOv`|Nxn+_#SCHxb7%Vsuw^$6C-$W!JqUU8Xg}kc7bWIqWJArlMDzt_r7*aFZ zTet#!(XJYKG0uG`C7S|_IHPw%m!PCcXOH-HHiQy-Sao~x;q|J<2@F-e(M_S?Sk3xm=o2qwlDSvbNwVO$ zg-#+qhsYK8j40JK!T@wEJWx^dOw_fO(BdYBKl1O8fj-O8g9{|pkU+N}5|P7tXu)&+6_KL7KSvvd^riH0kM34=awzx`84}s8RuswTQum4h63rMih z(h;!@E1s3MZX!mqK7;4^4Dbw-x zQv+K2Wg{>oo%1Y>1UbGGrCAFf<0diN13JW?5*!(8uxUZ=jdM2CJLFGe(Lj8xizEDp zE*Xv9a~l-KA^x!7Ka9JSkcU!fDuSw}0AWD}oNsgHaTsMD6s~{{V)tMmFS#RR7h_q7 z!|tHQ)wwmDZ6LhEOAC;*h?Y%u3WdVYWv@H!rSo{P z&^&tsj&MoM%z)WmVY&D~1{@!&LGy|w>Dn|QyOjw3Cr+j`Q7reCUFW)g=Lm`oSMHZy4XGlJ~ zg~oHJf1h_l^K)68E`;c+P&tYd>2&c~HPsitBppbGXmK2|4hqpPEXGQBmJl;=0pSx$ ztuKa^E8bl>E%q%=xpM^JJ8k4w6+bQhGZcCi4~93f{RzD4OsF}ksw1f$awZLB9?nSE zwXLM-nbzGT%(Zrf{O!7sA?^iH(L%-iYr$F$=;_}(x94r6UFto0&>=GPcO`8=e>B>v zpZ$^&q^7=lYSr9@X8U2VGk_1ALHn@cpW~MPxhpJ$AM`3Htg~v!&)vFGQ)M&255UMT zXbqzGoaajEZ*Xex#Wf=XDtILXsB$q|M(bC{pBuJygIqo{_v_|I;jWSwhUNZ9&{&AF zdOAA)o&;J+1M`2b4q%QT3E^w+OCt%Sn6I^Y=^UQX1>KgN-He@LI~l7gRr2RZRxtu0 zB0@sQ6z%?BE1_ulWvR^m>FD8CYbUP{E-f0-G*3(dCI`y;Q5ui3LNS241o_n+Lj~IL z^(fm7bHy>pH2;vD%afd7$p7Vgm^w?;+EciKeJW`PXnuCVs@GKMr>@#mHYZ#0k!8=M zXe?VvaMkrd#Z;E9XydO~`tX{@6#6IF`$3#C@q2GQZu0BoWaQ!un}r^DMI6uhxG%24 z7O4DYO7@OEq7-YYd$Vs)*6G_SUF|@x=fXNl^RqlJ|q|61Al8-P~q<8m}hfUC<*XNoyx{~ z+Jy+%Cjg?w(VQSO#ETgH5?*QD{T$7@5gjD(xY(yJNN%BUR^L`>+1BXO%NZN?dB47m zxT%D=LWo&(bgK^@M{}V1F7}HA4@lE8O=C|qw+r%+zOBQ5rp~J7JgUj+@e})IEfwu^ z3A=>CK_eNcIyhbH=}lk(|%|x_9D1Wu{@+L zXI?4XO(P>gq%6!NEJ>+2Muq;-Uz+jX&q(qE=NLn?RkmB5b*n@D_4l*k}rO*-OY zWX`7`LqyfePI|zw@+;ND_VJQBqRd2QU|&;YA9>KpH@E1$f9Rs#X9uAQt9M?}0`kY#EXMH0dX)@KM0il_%SVySqWbV3gU z!?J(1n-{_|)hHFG@FM>$3cEY_PKi@kd?1`1j74VNi%MGZ+m#BPAQQoBqYXaRV#~w- z&e3QK=d`JL+OyM`bHDup?G#Ki<3ja^uM^dFchB;icaw-q3g6Sc>qK?@m{oAr^TeW= zm;i=`*er<30%tFR>TKLtmOO@ryn5;VNjJ{}h7 z!@i)K5&c#IXz3Wvvsbwd9z9rLVO0Ybj&1Y9X4+kj1%E+i>U6W(@Ugrh&n*dIoSpO?%hH_Er^GsX zsep;U4Y%DxbqLTEx5uBS(G3@4320=lTo=t4&K{|Leq+ej|IZ0ykybQX7B79N>B2pf zeAd&$6je5I6yK}$j??%-R06KJgWt+QbF$v`1!u>!Dae;NCYBw*v_cM|L@r8G1+20> zmDslZll7b|buG)}=3@wck4R;uq9GKta3zA!{&R{=9@u{~tSEoVZA5=Bo)tg;EC3?q z!f?cnDh_{NNVn8bT_VJrlJ_ zBK@T(uvN7OfNjofL5D~t>dDe(~Jk8S&XAKG0L1Vd%1QM&iHO s3j7o^w7(_78H;mUApuX2vQOt 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 literal 0 HcmV?d00001 diff --git a/images/Solution/缓存一致性-基于MQ的解决方案.jpg b/images/Solution/缓存一致性-基于MQ的解决方案.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ef5173e2a0edf3d40057e0b3838e2f834f90131 GIT binary patch literal 41639 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 literal 0 HcmV?d00001 diff --git a/images/Solution/读写分离方案解决热读.jpg b/images/Solution/读写分离方案解决热读.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dec7e043d7e7a099f53fd50469017f6a7e146a3a GIT binary patch literal 11922 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 YfFTV6G!BQb006L|*&U^3+O(Vi06btTi2wiq literal 0 HcmV?d00001