SOFA Weekly | QA 整理

戏子无情 提交于 2021-01-22 17:37:31
SOFA WEEKLY | 每周精选,筛选每周精华问答
同步开源进展,欢迎留言互动
SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。
SOFAStack 官网: https://www.sofastack.tech
SOFAStack: https://github.com/sofastack

  每周读者问答提炼  

欢迎大家向公众号留言提问或在群里与我们互动
我们会筛选重点问题通过 
" SOFA WEEKLY " 的形式回复

1@叶毅威 提问:

请教下 SOFARegistry 数据持久化在哪里啊?

A:SOFARegistry 的元数据(注册中心自身的 IP 列表之类的数据)存储在 meta 角色内,使用 JRaft 进行存储。应用的发布数据保存在 data 角色的内存中,采用三副本(可配置)的方式实现高可用。

SOFARegistryhttps://github.com/sofastack/sofa-registry


2@叶毅威 提问:

我用 SDK 调用注册了一个 datainfo 但是关掉之后 这个并没有下线,是哪里需要配置么,不是默认链接断开就下线么

A:session 上采用 HTTP 方式获取的数据都是当前节点的注册数据,只有 data 上才会做数据聚合。dataInfo 是不会被删除的,连接断开后对应 dataInfo 下的对应 Publisher 会被自动移除。

SOFARegistryhttps://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源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!