- 远程通信提供了服务之间通信的桥梁;
- 服务治理则提供了服务的后勤保障。
- Springcloud基于Feigh组件实现RPC通信(HTTP短连接 + Json序列化);
- Dubbo基于SPI拓展了很多PRC通信框架,包括RMI(TCP协议)、Dubbo(单一长连接)、Hessian(HTTP短连接)等通信框架(默认是Dubbo协议(单一长连接)+ Hessian序列化);
- Dubbo通信可以支持抢购类的高并发,在这个业务场景中,请求的特点是瞬时高峰、请求量大和传入、传出参数数据包较小;
- 服务治理(服务注册和服务发现):可以用zookeeper、或者dubbo直连(@Reference(url = ""));
- 服务调用:dubbo协议+Hessian序列化;
- 监控中心:使用dubbo-monitor-simple查看情况;
- 服务降级:使用dubbo-admin,操作服务降级;统一配置<dubbo:provider cluster = "" /> < 接口配置<dubbo:service />、<dubbo:reference /> < 方法配置<dubbo:method />;
- 负载均衡:使用dubbo-admin,操作可以增加权重;
- 服务以接口为粒度,为开发者屏蔽远程调用底层细节
- 内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量
- 支持多种注册中心服务,服务实例上下线实时感知
- 内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰色发布,同机房优先等功能
- 提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略
- Dubbo:采用微内核架构,遵循 微内核 + 插件 的设计模式,微内核只负责组装插件,插件可以拓展系统的功能;
- 通常情况下,微内核都会采用Factory、IOC、OSGI等方式管理插件声明周期。Dubbo采用Dubbo SPI的机制,支持AOP、IOC实现管理插件。
类似于dubbo.application、registry、protocol等通过BeanDefinitionParser接口解析,调用具体的DubboBeanDefinitionParser,逐一解析。
@DubboService 暴露服务
- version 版本号 - 灰色发布
- weight 权重 - 负载均衡
- retries 重试次数 - 容错机制
- timeout 超时时间
@Reference 订阅服务
- version 版本号 - 灰色发布
- url 服务直连
- timeout 超时时间
- retries 重试次数
统一配置<dubbo:provider cluster = "" /> < 接口配置<dubbo:service />、<dubbo:reference /> < 方法配置<dubbo:method />;
- 精确优先(根据方法配置、接口配置、统一配置);
- 同一级别下,消费者优先。
- 可以,因为服务提供者和服务消费者仍可以通过本地缓存通讯。
- 用于做数据校验,在调用远程接口前处理,之后进行序列化通过网络协议传送数据。
- 主要目的是开启包扫描的功能。
- 使用XML配置dubbo命名空间出现问题:通配符的匹配很全面, 但无法找到元素'dubbo:application'
- springcloud: