Fork me on GitHub

Dubbo服务治理

Dubbo服务治理

dubbo-config 模块 源码理解

dubbo的配置优先级别:

三大核心能力

  1. 面向接口的远程方法调用
  2. 服务容错和负载均衡
  3. 服务自动注册和发现

服务治理的功能

  1. 服务提供者注册服务
  2. 消费者获取服务,并通过负载均衡策略选择服务提供者
  3. 动态增减服务提供者和消费者
  4. 服务监控
  5. 服务限流 服务之间
  6. 服务降级

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 本地缓存
如何缓存
  • 实时写入

  • 异步写入

  • 读取时实时写入

  • 读取时异步写入

    缓存失效

  • 固定时间 redis是惰性删除+定时失效

  • 相对时间

多级缓存

  • cdn缓存 静态资源
  • nginx 代理缓存 (接入层 ,ng的proxy cache)
  • nginx lua share dic (应用层的ng 内存字典)
  • nginx lua redis (应用层的lua脚本)
  • tomcat 本地缓存
  • redis服务器
  • 数据库

缓存不一致性

数据容忍性

异步更新机制

本文欢迎转载,但是希望注明出处并给出原文链接。 如果你有任何疑问,欢迎在下方评论区留言,我会尽快答复。 如果你喜欢或者不喜欢这篇文章,欢迎你发邮件到 alonecong@126.com 告诉我你的想法,你的建议对我非常重要。

------ 本文结束感谢您的阅读! ------
0%