1、集群策略
dubbo设置了集群策略:
可通过<dubbo:registry cluster="replicate" />设置redis集群策略,缺省为failover。
- failover: 只写入和读取任意一台,失败时重试另一台,需要服务器端自行配置数据同步--?如何使数据同步?。
- failover方式数据同步是个问题。1、master和slave,虽然可以设置slave能写,但是salve写入的不会同步到master。2、两个Redis实例之间数据同步,需redis服务器端自己配置
- replicate: 在客户端同时写入所有服务器,只读取单台,服务器端不需要同步,注册中心集群增大,性能压力也会更大。
这里选用replicate。
修改:provider.xml
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
< dubbo :application name ="provider-of-helloworld-app" />
<!-- 使用 redis 注册中心暴露发现服务地址 -->
< dubbo :registry cluster ="replicate" address ="redis://redisIP1:6379?backup=redisIP2:6379,redisIP3:8002" />
< dubbo :protocol name ="dubbo" port ="20880" />
<!-- 生成远程服务代理,可以和本地 bean 一样使用 articleService-->
< dubbo :service interface ="com.liang.service.ArticleService" ref ="articleService" ></ dubbo :service>
<bean id ="articleService" class ="com.liang.service.impl.articleServiceImpl" ></bean>
修改customer.xml
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
< dubbo :application name ="consumer-of-helloworld-app" />
<!-- 使用 redis 注册中心发现服务地址 -->
< dubbo :registry address ="redis://redisIP1:6379?backup=redisIP2:6379,redisIP3:8002" />
<!-- 生成远程服务代理,可以和本地 bean 一样使用 demoService -->
< dubbo :reference id ="articleService" interface ="com.liang.service.ArticleService" />
< dubbo :application name ="consumer-of-helloworld-app" />
<!-- 使用 redis 注册中心发现服务地址 -->
< dubbo :registry address ="redis://redisIP1:6379?backup=redisIP2:6379,redisIP3:8002" />
<!-- 生成远程服务代理,可以和本地 bean 一样使用 demoService -->
< dubbo :reference id ="articleService" interface ="com.liang.service.ArticleService" />
provider在启动的时候,会在三台redis服务器上注册服务;
customer第一次访问的时候,调用的33服务器,将33服务器down掉,customer调用了其他的服务器,但是控制台会报connection time out的错。
以后补充集群容错。
版权声明:本文为mirror_young原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。