【高性能网关soul学习】12. soul admin集群配置下的数据同步一致性

【高性能网关soul学习】12. soul admin集群配置下的数据同步一致性

本文目标:

  • 分析 soul 在admin集群模式下如何确保各个节点间的数据同步一致性

soul-bootstrap 的数据只是soul-admin中数据的缓存,因此我们主要来看 soul-admin 中的数据如何保证数据一致性

soul-admin端间的数据同步保证

启动两个服务:9094和9095端口的 soul-admin 服务,然后启动一个 soul-bootstrap 服务和两个http测试服务

  • 两个 http 测试服务都注册到9095端口

启动完毕之后,我们打开 9094 端口的soul-admin 页面,依次进入 PluginList>>divide >> SelectorList >> Modify 可以看到9094服务上注册了我们刚才启动的两个http测试服务,同样我们打开9095端口的admin服务,也可以看到同样的现象
在这里插入图片描述

查看选择器相关的更新接口查询的接口,

  1. 查询接口:SelectorController#detailSelector 方法是直接对数据库进行查询的,并没有走缓存,而
  2. 更新接口:SelectorController#updateSelector 方法是直接对数据库进行更新,并发送一个 DataChangedEvent 触发缓存数据的更新等操作,该事件只会更新当前admin服务,及所有的soul-bootstrap
UpstreamCheckService

该方法负责检测注册到 soul-admin 服务的被代理服务与soul-admin 服务之间的状态

我们在UpstreamCheckService 的 scheduled 方法中增加打印日志,检查不同admin内存中的数据是否一致

private void scheduled() {
    log.info("UpstreamCacheManager check " + UPSTREAM_MAP);
    if (UPSTREAM_MAP.size() > 0) {
        UPSTREAM_MAP.forEach(this::check);
    }
}

我们去9095的admin服务的selectorList 页面 修改其中的一个的权重为52

1

#9095
UpstreamCacheManager check {/http=[DivideUpstream(upstreamHost=localhost, protocol=http://, upstreamUrl=192.168.31.21:8188, weight=50, status=true, timestamp=0, warmup=0), DivideUpstream(upstreamHost=localhost, protocol=http://, upstreamUrl=192.168.31.21:8189, weight=52, status=true, timestamp=1611768183701, warmup=0)]}

#9094 
UpstreamCacheManager check {/http=[DivideUpstream(upstreamHost=localhost, protocol=http://, upstreamUrl=192.168.31.21:8188, weight=50, status=true, timestamp=0, warmup=0), DivideUpstream(upstreamHost=localhost, protocol=http://, upstreamUrl=192.168.31.21:8189, weight=50, status=true, timestamp=0, warmup=0)]}

然后查看打印日志(如上),可以发现 9094端口admin服务的内存数据的权重值就不一致了。

总结

  • soul-admin 之间是没有交互的,对数据的crdu都是直接以数据库为准。soul-admin并不需要实际的缓存来保证高性能,高性能由soul-bootstrap来确保,soul-admin 本身并没有很大的压力,因此可以由数据库来维护数据的一致性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值