Soul 学习笔记之 数据同步Zookeeper(七)

总系列目录地址

上篇soul数据同步websocket

数据同步配置

  • soul-admin
    sync:
    websocket:
      enabled: false
    zookeeper:
        url: localhost:2181
        sessionTimeout: 5000
        connectionTimeout: 2000
    
  • soul-bootstrap
        sync:
    #      websocket :
    #        urls: ws://localhost:9095/websocket
          zookeeper:
            url: localhost:2181
            sessionTimeout: 5000
            connectionTimeout: 2000
    
    maven删除其他数据同步依赖,同时添加zookeeper依赖包
      <!--soul data sync start use zookeeper-->
      <dependency>
          <groupId>org.dromara</groupId>
          <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId>
          <version>${project.version}</version>
      </dependency>
    

数据自动加载

public class DataSyncConfiguration {
	@Configuration
    @ConditionalOnProperty(prefix = "soul.sync.zookeeper", name = "url")
    @Import(ZookeeperConfiguration.class)
    static class ZookeeperListener {...}
}

数据监听

上篇websocket数据同步已经分析过。zookeeper数据同步与websocket基本一样。

  1. org.dromara.soul.admin.listener.DataChangedEventDispatcher.onApplicationEvent
    在onApplicationEvent 里执行 listener.onXXXChanged 监控数据。listener的实现取决于数据同步maven依赖包的添加,所有同时添加多个同步策略,所有同步策略都会执行一次,推荐配置一种数据同步策略。
  2. org.dromara.soul.admin.listener.zookeeper.ZookeeperDataChangedListener
    配置了zookeeper数据同步,listener实现类为ZookeeperDataChangedListener,监听到数据后写到zookeeper。

网关侧数据同步

  • org.dromara.soul.sync.data.zookeeper.ZookeeperSyncDataService
    通过zkClient订阅数据,监听所有数据。初始化阶段会同步所有数据到缓存里面。
    经过测试,只有在数据改变是才会更新zookeeper的数据到缓存。

总结

zookeeper数据同步方式与websocket一样,通过配置starter和修改一下yml文件就可以使用。soul-admin和soul-bootstrap要使用统一的数据同步方式。
数据同步方式的具体实现完全不同,与soul的插件设计理念一致,都是简单配置,只在具体实现上不一样,实现代码的解耦和清晰化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值