SOFA QA | 每周问答精选,筛选每周精华问答,为你解除疑惑,欢迎留言互动
Q:蚂蚁开源的计划是什么/蚂蚁对待开源的态度是什么?
蚂蚁金服会逐步将成熟的技术开源出来,希望能够持续高质量地回馈社区。我们也认为这个领域还有非常多的空白需要填补,而且在金融这个行业,有很多特有的属性,非常期望行业同仁能参与共建,蚂蚁金服技术团队非常乐意与大家合作,并分享自己的最佳实践、设计思路甚至是开源实现。
开源详细情况:
Q: SOFA(Scalable Open Financial Architecture) 是什么?
SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。
每周读者问答提炼(7/30 - 8/03)
欢迎大家向公众号留言提问或在群里与我们互动,我们会筛选重点问题通过
" SOFA QA | 每周问答精选 " 的形式回复
某证券公司 提问:
为什么数据传输,例如库到库的复制或者在线到离线同步需要通过消息队列进行中转,为什么不可以直接通过一个进程做点到点的复制?
A:这是一个很好的问题,
众所周知,一些数据库例如MySQL的原生复制就是通过IO Thread 远程进行日志拉取的,那么为什么要在这个过程中引入消息队列呢?
一个最明显的理由就是通过中间层的消息队列做到了源和目的库的解耦,即日志的拉取和重放互不影响,不会因为目的端数据库写入阻塞导致源端的日志不能清理,也不会因为源端的异常而造成重放程序的异常。其实解耦是消息队列一个最基本的特性,是其区别于RPC等其它分布式系统的一个关键要素,除了数据传输,在业务场景下也是用非常广泛;
第二个原因我想是起到削峰填谷,用作数据缓冲,避免突增的流量对于上下游系统的影响;
第三就是化简和收敛拓扑,试想如果是点对点的复制,一旦节点很多话整个拓扑链路会异常复杂,特别是存在多个异构数据源的时候,就需要处理多项式级的拓扑复杂度,而通过消息队列的统一消息格式收敛后,就呈现出星形拓扑结构,其中的每个节点只需要处理与消息队列的关联(投递或者消费);
第四就是消息队列作为基础设施(Infrastructure),可以在网络层面做非常多深入的优化,例如国内乃至洲际长传链路,存在非常多网络层不稳定因素,例如丢包,带宽被抢占等等,消息队列可以专门进行优化,而普通的应用很难兼顾到这一层;
第五就是在存储层面,消息队列通过多种方式例如存储消息到数据库、文件系统、基于paxos等的副本或者分布式存储等等来保证消息的一致性和高可用,来解决应用层希望数据0丢失的需求;
第六是数据传输系统往往要重新散列,不是简单按照数据库的维度消费,方便下游使用,使用消息队列可以支持数据按照新的维度进行散列。
最后还有一点就是我们认为消息队列会越来越向“懂数据”的方向发展,可以逐渐基于索引和消息本身提供一些简单可靠的查询计算功能,让一些原本需要大量读取数据的简单计算,例如统计数据条数这样的功能,借助于 AntQ Streams 流式计算框架,直接在消息队列中运行,极大的提高性能降低了计算成本。
蚂蚁自研的消息队列产品AntQ,在前面说的几个方向上都进行了很多的研究和尝试,在保证数据事务一致性、幂等性、高吞吐和低延迟方面都做了很多有价值的工作,目前已经成为整个蚂蚁以及金融云上业务结构,分布式事务支持,数据传输和计算核心的基础设施。
剖析 | SOFARPC 框架之总体设计与扩展机制(点击阅读全文)
@窥探未来 提问:
SOFARPC 支持蓝绿部署吗?
A:目前开源版本没有,要支持的只要扩展 Router 这个扩展点就好了。因为蓝绿分组的这个打标信息,需要在框架层识别,你们可以根据自己的蓝绿方案,来扩展一个 Router,进行路由分组就好了
开源 | Service Mesh 数据平面 SOFAMosn 深层揭秘(点击阅读全文)
@Service Mesh meetup 现场提问:
SOFAMosn 的短期和长期定位是什么?
A:在 0.1.0 版本SOFAMosn 的定位是作为服务容器的 sidecar,SOFAMosn 提供丰富的编程接口和扩展机制,可以通过代码集成的方式来扩展使用,也可以通过容器化或r pm 的方式配置使用,同时我们对接了 istio,并会在 0.2.0 版本去完善对接的功能点,做到整体支持,并且我们会推进多核优化等方向,满足 SOFAMosn 作为 router 和i ngress 的需求,最终的目标是将 SOFAMosn 打造成一个满足云原生需求,能与 k8s,istio 等技术体系无缝集成的4、7层负载均衡。
关于使用方式大家可以在我们的 Github 文档中需求帮助,有任何问题可以提 issue 或加入我们的微信群。后续的发布可以关注 Github,或本公众号及时了解最新的功能更新
SOFAMosn Github 地址:
https://github.com/alipay/sofa-mosn
每周 SOFA 进展 (7/30 - 8/03)
SOFAMosn V0.1.0 今晚发布:
SOFAMosn:https://github.com/alipay/sofa-mosn
实现作为 Proxy 的基本功能;
对齐 Envoy 的核心能力;
支持 XDS API V0.4 版本,实现与 Pilot 对接;
支持 SOFARPC,HTTP/1.1,HTTP/2.0;
SOFABolt 1.5.0-SNAPSHOT 发布:
SOFABolt:https://github.com/alipay/sofa-bolt
支持单实例级别的用户属性设置,可以覆盖系统设置和默认值,防止单进程多实例互相影响;
同时基于功能1,实现了实例级别的 netty write buffer water mark 的设置,以及重连、自动断链等开关的生效优先级;
SOFABoot 2.4.4 发布:
SOFABoot:https://github.com/alipay/sofa-boot
修复健康检查配置问题;
修复模块化开发问题;
SOFATracer 2.1.2 今晚发布:
SOFATracer:https://github.com/alipay/sofa-tracer
修复并发导致的性能问题,以及依赖优化和配置优化;
长按关注,获取最新分布式架构干货
欢迎大家共同打造 SOFAStack https://github.com/alipay
本文分享自微信公众号 - 金融级分布式架构(Antfin_SOFA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。