1、@叶毅威 提问:
请教下 SOFARegistry 数据持久化在哪里啊?
A:SOFARegistry 的元数据(注册中心自身的 IP 列表之类的数据)存储在 meta 角色内,使用 JRaft 进行存储。应用的发布数据保存在 data 角色的内存中,采用三副本(可配置)的方式实现高可用。
SOFARegistry:https://github.com/sofastack/sofa-registry
2、@叶毅威 提问:
我用 SDK 调用注册了一个 datainfo 但是关掉之后 这个并没有下线,是哪里需要配置么,不是默认链接断开就下线么
A:session 上采用 HTTP 方式获取的数据都是当前节点的注册数据,只有 data 上才会做数据聚合。dataInfo 是不会被删除的,连接断开后对应 dataInfo 下的对应 Publisher 会被自动移除。
SOFARegistry:https://github.com/sofastack/sofa-registry
3、@田冲 提问:
现象:canal 监听到某个被分布式事务控制的表的 insert-binlog 日志后再去查询 MySQL 表里数据时发现这条数据不存在,延迟1秒钟左右再查询就能查询到。
疑问:Seata-at 模式-两阶段提交的设计会出现 MySQL 先生成了 binlog 日志,后提交事务的情况吗?
A:这个问题其实很简单,你 canal 读不到,那你自己应用本地事务提交后马上读这个 insert 的数据看能不能读到;如果读到,理论上来说这个过程不可能超过一秒,所以如果你应用能查到,你canal查不到,排查canal的问题,而不是 Seata 的问题;Seata 最后也只不过做了 connection.commit;最后事务的提交落库是数据库方本地事务流程落库,Seata 不会起到任何干扰,Seata 代理的是 jdbc 层的处理;redo 后写 binlog 时马上就会广播的,而不是事务提交才把 binlog 广播出去;所以内 xa 的二阶段没提交你就去查主库,由于隔离级别不一定查得到。
Seata:https://github.com/seata/seata
本文分享自微信公众号 - 金融级分布式架构(Antfin_SOFA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/sofastack/blog/4920273