SOFA Weekly | 每周精选【12/17 - 12/21】

原创
2020/03/30 10:42
阅读数 40

SOFA WEEKLY | 每周精选,筛选每周精华问答,为你解除疑惑,欢迎留言互动

SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。

SOFA 文档: http://www.sofastack.tech/

SOFA: https://github.com/alipay


   每周推荐阅读   


SOFAMesh中的多协议通用解决方案x-protocol介绍系列(3)——TCP协议扩展

蚂蚁金服微服务实践 | 开源中国年终盛典分享实录


  每周读者问答提炼      

欢迎大家向公众号留言提问或在群里与我们互动,我们会筛选重点问题通过 

" SOFA WEEKLY " 的形式回复


@风吹草不动 提问:

蚂蚁金融内部有类似记录所有数据项变化前后的日志吗,比如一个请求进来之后,处理过程的所有数据项变化的前后状态,还要跟踪请求人的信息,操作人的各种信息,部分是这个:

https://github.com/alipay/sofa-rpc/issues/165

还有数据修改成功之后你们怎么记录日志的,感觉会跟埋点一样浸入业务;相当于 zipkin 的链路日志了,带业务数据前后值


A:

一般专门的组去做这个 filter 的 SDK,然后用 Spring autoconfig 去引依赖。记日志实际上就是自定义 filter 的实现内容,原理都差不多。业务埋点方案一般提供两种,一种外层一个 lambda 函数,比较灵活,但是侵入业务;还有就是aop,但是上下文能拿的很少。lambda 的,比如 return a,替换为 return logService.log(()-> a, args...), args为调用上下文要记录的参数。还有就是一般会定一个threadlocal引用去存filter中的上下文透传数据。


实际具体流程就是 servlet(req):  生成数据 -> servlet filter 写入 threadlocal -> rpc filter/resttemplate/xxxtemplate 取出 threadlocal 写入请求体 ==通信==> rpc filter(provider)/serlvet filter 读取参数 -> 写入threadlocal -> 业务代码读取 threadlocal或者重复发送过程. 然后 threadlocal 对象的通常情况下会被封装为 LocalXXService, LogService 也属于其中之一


@Pavle Lee 提问:

单元的数据同步怎么做的啊?

A: 蚂蚁金服这边有专门的数据同步的组件来做跨单元的数据同步的。有些是直接数据库之间同步,有些是基于消息的带业务逻辑的同步。



@天行健 提问:

请问下,我用 SOFA 的 rest 协议对外提供 http 服务,我可以获取 http 的头部、cookie、session 等数据吗?


A: SOFA 的 rest 是基于JAX-RS 标准的,可以通过 jaxrs-api 内的 Filter 拿到 Request 和 Response 的信息。


     每周 SOFA 进展  


本周暂无发布,主要工作如下:
 i. SOFABoot v3.1.1-SNAPSHOT 支持 Gradle Plugin
ii. SOFABoot v3.1.1-SNAPSHOT 引入 log-sofa-boot-starter,用于解决系列日志
配置问题;

iii. SOFABoot v3.1.1-SNAPSHOT 修复 Demo 启动问题;
iv. sofa-common-tools v1.0.15-SNAPSHOT 优化若干社区反馈问题;


     SOFALab 解析系列  



/*明天冬至,记得吃饺子噢*/

长按关注,获取分布式架构干货

欢迎大家共同打造 SOFAStack https://github.com/alipay

本文分享自微信公众号 - 金融级分布式架构(Antfin_SOFA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部