2021-04-08

2021-04-09  本文已影响0人  一剑霜寒aa

秒杀 https://www.jianshu.com/p/f7bc11a95e8a

https://www.kyjszj.com/htzq/2072.html

列表页优化

https://juejin.cn/post/6844903702545825805

1、组合key解决方案

2、sql exixt

3、对于扩展表字段的查询,只支持or操作,但不支持and操作

如何提高用户留存率

提高用户粘性

Cms

活动表

以uid为维度分表

Case1 方便查询某个用户开的活动

case2 查询某个用户的历史活动

流水记录表

以activityId为维度分表

Case1 查询某个活动的任务流水记录

任务表

数据分析模块

1、以活动为维度

查询这个活动

按天维度团的增量、用户的增量

Case1存在跨表查询

2、以个人为维度,查他参与了哪些活动

Case2存在跨表查询

Soa模块

接口

1 开团接口

   日常20qps

   凌晨1000qps

   618/双11 5000qps

   团100万

   任务流水300万

   每月拉新  2万

2 做任务接口

    助力任务

    签到任务

    下单任务

    分享任务

    浏览会场任务

3 历史数据查询

   团表:以用户的维护进行hash分表

   方便查用户的团数据

4 分析型

   同步到数据集市

    重难点梳理

    1、rpc接口版本升级问题

    现状

    对于同名方法,在蓝绿发布市可能存在问题

    我们可以查看实质上通过netty等方式传输之后在provider可以获得一个对应的DecodeableRpcInvocation这样就回到了包装前的invoker

    消费端

    配置invoker.listener参数

    在refer完时,发起check检查,

    检查provider是否存在该方法

    Attanment:加上test

    提供端

    如果包含test,则直接return

    通过filter扩展实现

2分组调用case

    消费端

    指定group

    将group作为一个参数

 3、rpc超时  数据补偿

       默认是fix,200线程队列容量为1

       EagerThreadPoolExecutor适用场景,避免task阻塞在队列里等待,优先创建线程

       3.1监控看的是task在线程池里面执行的时间,无法查看在队列里面等待的时间

       发生的场景

4限流

  客户端限流

  ActiveLimitFilter 

  限制客户端并行度service或者method维度

   针对服务端,没有提供app维度

   全局维度TpsLimitFilter

   ExecuteLimitFilter

   限制服务端并行度service或者method维度

   tps

    限流相关问题

 4.1、计数器算法

         描述:周期内达到指定次数,则触发限流。下一个周期,进行清零,重新开始。

         问题:无法触发临界问题

 4.2、滑动窗口算法

         描述:将时间周期划分n个小周期,分别记录每个小周期内访问次数,根据时间滑动删除小周期

                    窗口滑动的过程中,存在旧的窗口出队,新的窗口入队

                    优点:

                    可以很好的处理临界尖峰问题。

         问题:

4.3、漏桶算法

      描述:请求放入桶中的速度不做限制,如果桶满了,则触发限流。

                  放行的速率是固定的,通过这种方式,达到限流的目的。

4.4、令牌桶

      好处:限制请求的速度,小于或者等于令牌的生产速度,从而达到限流的目的

5 消费端线程池模型优化

    原来cache线程

    将序列化与反序列化、io解码与反解码放在业务线程,避免阻塞io线程,导致大量创建io线程

6大key优化

7 key的失效机制

8 缓存穿透

    缓存和数据库都没有数据,导致数据压力过大

     防止暴力攻击

9 缓存击穿

    是指一点热点的key, 不停的抗大并发,某一时间失效,导致大量请求访问数据库

    缓存没有数据,但是数据库有数据

10 缓存雪崩

     大量数据过期,且查询量过大,引起数据库压力过大

11 缓存预热

12 

    缓存不一致问题

    更新数据库,

    1)删除缓存

    2)更新缓存

上一篇 下一篇

猜你喜欢

热点阅读