SOFARegistry 是蚂蚁集团开源的一个生产级、高时效、高可用的服务注册中心。核心亮点:
- 源自淘宝 ConfigServer,历经6代架构演进
- 支撑蚂蚁集团自有业务及合作伙伴的金融科技服务
- 兼容开源生态
- 采用 AP 架构实现秒级推送
- 分层架构支持无限水平扩展
产品特点
高可扩展性
graph LR
A[分层架构] --> B[数据分片存储]
B --> C[突破单机性能瓶颈]
C --> D[支持无限水平扩展]
D --> E[蚂蚁生产环境验证]
SOFARegistry 是蚂蚁集团开源的一个生产级、高时效、高可用的服务注册中心。核心亮点:
graph LR
A[分层架构] --> B[数据分片存储]
B --> C[突破单机性能瓶颈]
C --> D[支持无限水平扩展]
D --> E[蚂蚁生产环境验证]
SOFATracer 是蚂蚁金服开发的基于 OpenTracing 规范 的分布式链路跟踪系统,其核心理念就是通过一个全局的 TraceId 将分布在各个服务节点上的同一次请求串联起来。
通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来同时也提供远程汇报到 Zipkin 进行展示的能力,以此达到透视化网络调用的目的。
SOFATracer 接入的组件列表参考:SOFATracer 介绍,在使用时请注意不同组件对应的SOFATracer 版本和 JDK 版本。
要使用 SOFABoot,需要先准备好基础环境,SOFABoot 依赖以下环境: - JDK7 或 JDK8 - 需要采用 Apache Maven 3.2.5 或者以上的版本来编译
Spring MVC 埋点接入
HttpClient 埋点接入
DataSource 埋点接入
RestTemplate 埋点接入
SLF4J 提供了 MDC (Mapped Diagnostic Contexts)功能,可以支持用户定义和修改日志的输出格式以及内容。
本文将介绍 SOFATracer 集成的 SLF4J MDC功能,方便用户在只简单修改日志配置文件的前提下输出当前 SOFATracer 上下文 TraceId 以及 SpanId 。
为了在应用中的日志正确打印 TraceId 和 SpanId 参数,我们的日志编程接口需要面向 SLF4J 进行编程,即打印日志的编程接口不要依赖具体的日志实现。
org.slf4j
slf4j-api
在一次分布式链路调用过程中,在集成了 SOFATracer 的组件会产生一个 Span 并会缓存到 SOFATracer 的上下文中,这个上下文是缓存在 ThreadLocal 中的,作为使用者可以通过如下的方式随时获取到当前 SOFATracer 的上下文:
SofaTraceContext sofaTraceContext = SofaTraceContextHolder.getSofaTraceContext();
应用在引入 SOFATracer 后,可以在 Spring Boot 的配置文件 application.properties 中添加相关配置项来定制 SOFATracer 的相关行为。
SOFATracer 的日志输出目录,可以在 application.properties 中配置 logging.path 的路径,那么其日志输出路径为 ${logging.path}/tracelog;如果没有配置 logging.path,那么 SOFATracer 的默认输出路径为 ${user.home}/logs/tracelog。
SOFATracer 是蚂蚁金服(现蚂蚁集团)自主研发的一款基于 OpenTracing 规范的分布式链路跟踪系统,旨在解决大规模微服务架构下的调用链路追踪问题,帮助实现故障快速定位、服务治理及性能优化。
以下从多个维度详细介绍其核心特性、技术架构、应用场景及生态系统。
SOFATracer 通过全局唯一的 TraceId 将分布式系统中跨服务的请求串联,记录网络调用详情(如调用耗时、状态、参数等),并以日志形式存储或上报至可视化工具(如 Zipkin),从而实现调用链路的“透视化”。其诞生背景是应对微服务架构下服务调用复杂化、故障定位困难等挑战,尤其在金融级高并发场景中表现突出。