f5配置consul结合使用

f5配置consul结合使用,第1张

两者可以组合使用。

该客户端提供一个服务,比如api或者mysql,另外一个客户端就可以去发现指定服务的服务提供者。通过DNS或者HTTP应用程序可以容易找到所依赖的服务。2,健康检查consul可以提供健康检查服务。这个信息可以监视集群的健康。可以用来避免将流量发送到不健康的主机。3,存储。应用程序可以使用consul的层级的储存。比如动态配置,,协调服务。直接可以用HTTPAPI来 *** 作

不同的物理存储中心,例如consul、nacos、redis、mongo都是no-sql存储,即存储k-v形式的数据。甚至mysql中也可以存储json格式的数据。虽然有各种各样形式的client实现。但若是想嵌入到咱sentinel作为存储中心,必须满足咱定义的“接口”规范。通过“组合”的形式将存储中心实际client嵌入到接口子类中,对外提供服务。

接口如下:

没错,只需要简单的实现put、get、remove等方法,就可以无痛的替换存储中心。

配置文件中修改: sentinel.dashboard.store 属性完成动态切换。

当value是map类型时,就出现了一个问题:

接口关系如下所示: 实现如下接口满足map的扁平化 *** 作。

存储实体的基本 *** 作

map扁平化接口:

规则的分布式存储实现类——可以存储allRules规则以及appRules规则:

对应FastJson来说,在反序列中传入type是可以得到泛型对象的。

但实际上得到的却是JsonObject对象。无法转换为 RuleEntity 对象。

使用Jackson也遇见了此种情况:

自定义Jackson的ObjectMapper对象,在序列化的时候将属性的类型也序列化即可:

使用的锁机制,实现了consul分布式锁以及默认的内存锁。保证“扁平化” *** 作时的线程安全性。

借助ConcurrentHashMap将ReentrantLock存储起来。

——“这么骚的 *** 作是在seata源码中借鉴的。”

在1.3小节的“动态切换”中,可以根据配置文件来动态切换锁。当然以后去除consul使用redis等存储中心,可以实现定义的Lock接口,实现Redis的分布式锁。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6169975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存