文章目录
技术总结
分布式解决方案
1、任务调度(xxl-job)
学习内容:
常见用法 & 源码学习
功能亮点:
- 支持轮询、分片广播等多种调度策略;【重要】
- 丰富的触发策略:如cron、固定频率、父子任务等;
- 数据持久化
技术亮点:
- 线程池的灵活运用,任务提交和执行解耦;
- 较为完善的监控,心跳监测等;
- netty通信
2、消息中间件(RocketMQ)
学习内容:
常见用法 & 源码学习
技术学习:
(1)Name Server
- 与zk对比,Name Server设计的节点平等且独立互不通信,更加简单;
- 路由注册、剔除(定时扫);
- 读写锁控制并发,由于节点互不通信,节点与节点之间不存在线程不安全问题,仅在节点内部存在。简化问题。
(2)Broker 【核心】
- 与Name Server:自动与其建立连接
- 与Producer:消息写入
- 与Consumer:消息读取和偏移量等的写入
- Master-Slave模式,主从数据同步,主从切换
- 消息存储
(3)Producer
- 本地缓存的使用
- 消息发送(同步消息、异步消息、单向消息等)
- netty通信
(4)Consumer
- 消息的推和拉
- 偏移量
- 分组和Tag
- 顺序消费
扩展调研:
RingBuffer
- 内存型 VS 中间件 (内存型无法持久化,对数据敏感度不高)
- 环形结构,节省空间,但会出现读写速率不匹配问题 对照mysql redo log
3、服务追踪(sleuth)
学习内容:
原理学习
主要内容:
始终携带唯一标识,串联起一次完整的链路
连接池
学习内容:
- 短连接 or 长连接?
- 控制线程数 or 控制连接数?(CPU密集型 or IO 密集型?)
- 连接数紧张的情况下,如何更好的进行分配
- 常见连接池学习
1、Hikari
主要内容:
- 管理数据库连接,支持自定义配置连接参数
- 池化,负责新建、关闭连接,定时检查连接数 (executor、HouseKeeper)
- 提高性能,连接复用
- 单实例的连接数控制
2、DBCP
主要内容:
- 基于commons-pool2实现的连接池
- 对象池机制,KeyedObjectPool (适合管理多租户数据源)
- 使用jmx进行监控
前端
Vue
学习内容:
基本使用
主要内容:
- Element UI
- 多环境配置
- 常见组件:axios(http请求)、vue-router(路由)、request拦截器
搜索引擎
ElasticSearch
学习内容:
基本使用 & Java Client
主要内容:
- keyword和text区别;编写组合过滤查询语句等
- 基本查询、聚合查询、计数查询等
- 多个Java Client的对比区别
- ElasticSearchClient使用