一、项目介绍
1.流程的发起
- 校验机构代码是新增还是存量
- 获取activity的流程号
- 将发起流程插入流程信息表
- 如果是存量机构,同步数据
- 通过流程号获取正在运行的任务号,将任务推至下一个节点
二、配置中心-配置管理
1.字段配置信息管理 -表中字段名、控件类型
2.表配置信息管理- 表名、表的类型
三、业务参数的查询,报表、线路的查询
四、业务场景管理-业务场景的定制
- 处理表顺序
- 已有表修改表顺序
- 新表赋予新的属性
- 对表修改进行校验
业务场景配置添加子系统
五、合同,履约到期提醒,发邮件。
- 根据时间查询到期合同
- 启动合同到期提醒代办流程
- 获取用户信息,发邮件
知识点
1.线程池
一个线程池包括四个基本部分
- 线程池管理器:用于创建线程和管理线程
- 工作线程: 线程池中的线程,在没有任务时处于等待状态
- 任务接口: 每个任务必须实现的接口,已供工作线程调度,任务执行
- 任务队列:用于存放没有处理的任务
2.ThreadPoolExecutor包括的参数:核心线程池的大小、最大线程池的大小、线程最大空闲时间、线程等待队列、拒绝策略
3.dubbo基础
- 暴露服务的服务提供方
- 调用远程服务的服务消费方
- 服务注册与注册中心
- 统计服务的调用次数和调用监控中心
- 服务运行器
- 启动时注册提供方服务
- 消费者订阅服务的列表,变更时推送服务地址列表
- 消费者随机调用服务地址,失败后重新选择
- 后台定时采集服务的调用次数和时间
4.dubbo的配置方式
spring的配置方式与api的配置方式
5.dubbo默认的通信框架 netty
6.dubbo 的负载均衡策略
随机、 轮询、最少活跃调用次数、一致性hash
7.乐观锁与悲观锁
乐观锁:总认为不会产生并发问题,每次去取数据的时候总认为不会被线程进行修改。因此不会上锁,但是在更新时会判断其他线程之前有没有对数据进行修改。一般采用版本号机制或cas操作
乐观锁多用于多读的应用类型。
悲观锁:每次取数据的时认为其他线程会修改,所以都会加锁,当其他线程想要访问数据时,都需要阻塞挂起,依靠数据库实现。
8.redis主从复制
- 主节点负责写,从节点负责读
- Redis持久化的两种方式 RDB和AOF
rdb对数据执行周期持久化 。AOF每条命令写入日志
redis 支持的数据类型
String,list、set、hash 、Zset
9.持久化是把内存数据写到磁盘中,防止服务器宕机内存数据消失
10.存储结构:内容是Redis通讯协议RESP格式的命令文本存储
11.redis哨兵模式
监控:哨兵会不断的检查主服务器和从服务器是否运行正常
提醒:当被监控的某个Redis服务器出现问题时,哨兵可以通过api向管理员发送通知
自动故障迁移:当一个主服务器不能正常工作时,哨兵会开始一次自动故障迁移操作。
12.redis分布式锁的实现方式
先拿setnx来抢占锁,抢到之后,再用expire给锁加一个过期时间,防止锁忘记释放
13.使用sub/pub主题订阅模式。实现1:N的消息队列
14.什么是缓存穿透?如何避免
一般的缓存系统都是按照key去缓存查询。如果不存在对应的value,就去后台查询。一些恶意的请求故意查询不存在的key,请求过大时,就会对系统造成很大的压力。
避免:
1.对查询结果为空的情况也要缓存,将缓存时间设置短一点,或者该KEY对应的数据insert后清理缓存
2.对一定不存在的key进行过滤,可以把所有可能存在的key放到一个大的biemap中,查询是过滤
15.缓存雪崩
当缓存服务器重启或者大量缓存集中在某个时间段失效。这样在失效的时候会给后台带来很大的压力
避免
1.在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量
2.做二级缓存,a为原始缓存。b 为备份缓存。a失效后访问b
3.不同的key设置不同的过期时间
16.应用场景
- 会话缓存
- 消息队列
- 发布,订阅消息
- 商品列表、评论列表
17.fushdb 删除当前选择的数据库中的key
fushall 删除所有数据库中的键