Apache Dubbo
-
面向接口代理的高性能RPC调用:不用关注太多的内部实现,为开发者屏蔽远程调用底层细节。
-
智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
-
服务自动注册与发现:支持多种注册中心服务(zookeeper),服务实例上下线实时感知
-
高度可扩展能力:扩展能力极强
-
运行期流量调度:内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
-
可视化的服务治理与运维:可视化界面随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
dubbo支持zookeeper注册中心,下载后修改其配置文件即可zoo.cfg
监控中心可以提供可视化界面,给用户提供便利
- 将服务提供者注册到注册中心(暴露服务)
- 导入dubbo依赖、操作zooeeper的客户端
- 配置服务提供者
<!-- 1、指定当前服务、应用名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="dubbo_provider" />
<!-- 2、指定注册中心地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 3、指定通信规则(协议、规则) -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 4、暴露接口服务 -->
<dubbo:service interface="接口全路径" ref="服务真正实现对象(user)" />
<!-- 将接口实现类加入容器 -->
<bean id="user" class="实现类" />
- 配置消费者
<!-- 1、指定当前服务、应用名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="dubbo_consumer" />
<!-- 2、指定注册中心地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 3、声明远程调用需要调用接口 -->
<dubbo:reference interface="暴露的接口全路径" id="userService" check="false"/>
dubbo与SpringBoot整合
- 导入dubbo-starter
- 在application.properties配置文件中配置
- 可以在实现类中使用@service注解暴露服务 注意是dubbo家的注解
- 在消费者中注入实现 使用@reference从注册中心发现实现类
- 开启基于注解的dubbo功能 @EnableDubbo
当zookeeper宕机后,消费者和提供者可以通过本地缓存进行通讯
没有注册中心可以使用dubbo吗,可以通过dubbo直连的方式
负载均衡
- RandomLoadBalance:加权随机算法
- LeastActiveLoadBalance:翻译过来是最小活跃数负载均衡。活跃调用数越小,表明该服务提供者效率越高,单位时间内可处理更多的请求
- ConsistentHashLoadBalance:一致性 hash 算法
- RoundRobinLoadBalance:加权轮询负载均衡
可以在消费时定义也可以在提供时定义 注解中加上loadbalance=“”