1.Dubbo
Dubbo是一个由阿里巴巴开源的、分布式的RPC和微服务框架。它主要是针对于分布式
需求的,相等于远程服务调用的分布式框架。
Dubbo提供了三个关键功能:1.基于接口的远程调用 2.容错与负载均衡 3.服务自动注册与发现
2.Dubbo优缺点
优点:
1.透明化的远程方法
2.软负载均衡及容错机制
3.服务注册中心自动注册 & 配置管理
4.服务接口监控
缺点:
1.单一的系统架构
2.不能复用
3.只支持JAVA语言
3.Dubbo的结构图:
4.Demo
服务提供者
1.定义服务接口
public interface ClusterServiceProvider {
/**
* 提供指定集群的基本信息与运行状态
* @param clusterIds
* @return
*/
List<RedisClusterVO> getClusterInfo(List<String> clusterIds);
/**
* 返回集群当前的连接列表
* key为实例ip:port
* value为客户端ip列表
* @param clusterId
* @return
*/
Map<String, Set<String>> getClientList(String clusterId);
}
2.Dubbo配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="rabbitmq-app"/>
<!-- 本机 伪集群 测试 -->
<dubbo:registry address="N/A"/>
<dubbo:consumer timeout="1000" filter="signGenFilter" sign.salt="${dubbo.sign.salt}"/>
<dubbo:protocol name="dubbo" port="${dubbo.port}" accesslog="false" threadpool="fixed" threads="100"/>
<!-- 提供服务 -->
<dubbo:service interface="com.oppo.paas.pcache.provider.spi.ClusterServiceProvider" ref="clusterServiceProvider"
proxy="jdk"/>
<bean id="clusterServiceProvider" class="com.oppo.paas.pcache.web.provider.impl.ClusterServiceProviderImpl"/>
</beans>
服务消费者
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="rabbitmq-app"/>
<!-- 本机 伪集群 测试 -->
<dubbo:registry address="N/A"/>
<dubbo:consumer timeout="1000" filter="signGenFilter" sign.salt="${dubbo.sign.salt}"/>
<dubbo:protocol name="dubbo" port="${dubbo.port}" accesslog="false" threadpool="fixed" threads="100"/>
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="clusterServiceProvider" interface="com.oppo.paas.pcache.provider.spi.ClusterServiceProvider" ref="clusterServiceProvider"
url="${dubbo.sysadmin.url}" check="false"/>
</beans>