Dubbo服务治理
dubbo-config 模块 源码理解
dubbo的配置优先级别:
三大核心能力
- 面向接口的远程方法调用
- 服务容错和负载均衡
- 服务自动注册和发现
服务治理的功能
- 服务提供者注册服务
- 消费者获取服务,并通过负载均衡策略选择服务提供者
- 动态增减服务提供者和消费者
- 服务监控
- 服务限流 服务之间
- 服务降级
dubbo 服务应用名
指定zk地址
指定消费者或提供者 协议和端口
<dubbo:reference interface =”” id=”提供者service”>
<dubbo:service =”” id=””>
定义提供的beans ,包括接口和实现
异步化消息服务
不阻塞原来业务
服务调用解耦
任务调度
任务:task 完成一系列的事情
调度 : 执行任务的智慧,处罚,规则程序
应用场景
- 业务跑批轮训等待处理
- 失败异常重试
- 定时处理任务
单机调度机制:
Timer定时器
time 类 内存里TaskList
timerTask 类 本质上一个thread
所有任务都是一个线程调度,同一时间只能有一个任务执行
ScheduledExcutor
Quartz missfire 机制
elastic job 分片的机制 如何分片
池化技术
连接池(数据库,redis等)
- 核心连接数
- 最大连接数
- 连接等待时间
- 数据读取时间
- 等待释放时间
- validate
tomcat 线程池
连接池存储clientSocket连接 ,io线程池 ,worker线程池
io线程获取clientsocket,recv ,之后交给worker线程处理
缓存技术
快速访问
千万级别数据
主键1ms以内
唯一索引 10ms
非唯一查询 100ms
全表扫描 s+
qps< 10000
模型不能聚合
设计原则
- 将数据写入/读取速度最快的存储
- 将数据缓存到应用最近的位置
- 将数据离用户最近的位置
缓存分类
- CDN缓存
- 反向代理缓存
- 分布式Cache
- 本地应用缓存。guava 本地缓存
如何缓存
多级缓存
- cdn缓存 静态资源
- nginx 代理缓存 (接入层 ,ng的proxy cache)
- nginx lua share dic (应用层的ng 内存字典)
- nginx lua redis (应用层的lua脚本)
- tomcat 本地缓存
- redis服务器
- 数据库
缓存不一致性
数据容忍性
异步更新机制