(二)dubbo+redis注册中心集群+spring

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"  />



provider在启动的时候,会在三台redis服务器上注册服务;
customer第一次访问的时候,调用的33服务器,将33服务器down掉,customer调用了其他的服务器,但是控制台会报connection time out的错。

以后补充集群容错。










版权声明:本文为mirror_young原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。