Dubbo is a high-performance, java based open source RPC framework.
前言
背景
架构
配置
配置关系
-
Application:应用,可以是消费者或提供者
-
Provider:提供者,用于提供Service的默认配置,可以开放多个Protocol,可以发布到多个Registry,可以对接多个Monitor,归属某个Application
-
Consumer:消费者,用于提供Reference的默认配置,可以从多个Registry查找Service,可以对接多个Monitor,归属某个Application
-
Module:模块
-
Registry:注册中心,提供服务注册和发现,比如zookeeper、nacos等
-
Protocol:RPC协议,比如dubbo、http等
-
Monitor:监控中心
-
Service:对应于Interface的实现,可以包括多个method,可以开放多个Protocol,可以发布到多个Registry,可以对接多个Monitor,归属某个Provider
-
Reference:对应于Service的引用,可以从多个Registry查找Service,可以对接多个Monitor,归属某个Consumer
-
Method:隶属于Service,一个具体的功能方法
-
Argument:参数
优先级
设计
启动时检查
集群容错
负载均衡
线程模型
线程池
RejectedExecutionHandler为继承AbortPolicy的AbortPolicyWithReport
fixed
属性 | 默认值 | 描述 |
---|---|---|
threads | 200 | 固定线程数量,corethreads=threads |
queues | 0 | 队列长度 |
alive固定为0
cached
属性 | 默认值 | 描述 |
---|---|---|
corethreads | 0 | 核心线程数 |
threads | Integer.MAX_VALUE | 最大线程数 |
queues | 0 | 队列长度 |
alive | 60*1000 | 冗余线程可空闲时间,单位毫秒 |
limited
属性 | 默认值 | 描述 |
---|---|---|
corethreads | 0 | 核心线程数 |
threads | 200 | 最大线程数 |
queues | 0 | 队列长度 |
alive固定为Long.MAX_VALUE,可以理解为线程不会被回收
eager
当corethreads用完时,优先创建线程,而不是放入队列
属性 | 默认值 | 描述 |
---|---|---|
corethreads | 0 | 核心线程数 |
threads | Integer.MAX_VALUE | 最大线程数 |
queues | 0 | 队列长度 |
alive | 60*1000 | 冗余线程可空闲时间,单位毫秒 |
服务端
New I/O server boss #1 ([id: 0x4086d8fb, /0:0:0:0:0:0:0:0:20880])
New I/O client worker #1-1
New I/O client worker #1-2
DubboServerHandler-192.168.1.193:20880-thread-1
DubboServerHandler-192.168.1.193:20880-thread-2
客户端
New I/O client worker #1-1
DubboClientHandler-172.19.177.79:20880-thread-1
DubboClientHandler-172.19.177.79:20880-thread-2
直连提供者
路由规则
条件路由
支持以服务或应用为粒度配置路由规则
标签路由
以Provider应用为粒度配置路由规则
生态系统
脚手架
快速生成基于 Spring Boot 的 Dubbo 项目:
多语言
Dubbo支持以下语言:
API
Dubbo支持通过多种API方式启动:
Spring XMLSpring AnnotationPlain JavaSpring Boot
Registry
Dubbo支持以下注册中心:
ZookeeperRedisSimpleMulticastEtcd3
Cluster
Dubbo支持以下容错机制:
Fail overFail safeFail fastFail backForkingBroadcast
Load balance
Dubbo支持以下负载均衡策略:
RandomLeast ActiveRound RobinConsistent hash
Protocol
Dubbo支持以下协议:
DubboRMIHessianHTTPWebServiceThriftNative ThriftMemcachedRedisRestJsonRPCXmlRPCJmsRpc
Transport
Dubbo支持以下网络传输扩展:
Netty3Netty4GrizzlyJettyMinaP2PZookeeper
Serialization
Dubbo支持以下序列化机制:
Hessian2JavaJSONFstKryoNative HessianAvro
QA
注册地址
需要配置zookeeper服务器的ip和主机名映射,Linux服务器下修改/etc/hosts
。
java.net.UnknownHostException Name or service not known
1 |
|
ping hostname不通导致,在/etc/hosts添加ip和hostname的映射即可解决。