1 前言
SpringCloud
SpringCloud是由XX提供的一系列框架的有序集合,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,可以用Spring Boot 的开发风格做到一键启动和部署。
SOFA RPC
Scalable Open Financial Architecture (SOFA)RPC是蚂蚁金服开源的一款基于 Java 实现的 RPC 服务框架,包括微服务研发框架、RPC 框架、服务注册中心、分布式定时任务、限流/熔断框架、动态配置推送、分布式链路追踪、Metrics监控度量、分布式高可用消息队列、分布式事务框架、分布式数据库代理层等组件。
官网介绍:https://www.sofastack.tech/sofa-rpc/docs/Home
2 SOFA介绍
与SpringCloud 的不同点
SOFA中将整个系统拆分为一个个模块(bundle),SpringCloud将系统拆分为多个微服务(MicroService),其实意思差不多,各个模块(服务)各司其职,通过JVM/RPC进行调用。 SOFA可以通过JVM/RPC进行服务之间的接口调用,而SpringCloud只能通过RPC/HTTP方式进行调用
Sofa优势
SOFA是蚂蚁金服长期发展沉淀下来的一条技术方案,在SpringCloud出现之前,SOFA已经能够在金融云环境下稳定运行了, 并且SOFA是蚂蚁金服自己研发的一套方案,天然集成了RPC、服务路由等功能,能够与蚂蚁内部其它中间件(如zdal、drm、msgbroker等)无缝结合,这一整套技术方案撑起了蚂蚁金服的核心业务, 它更加适合金融云环境,一旦出现问题能够快速定位并解决。
Sofa功能脑图
服务发布与引用
通过 SOFA JVM 服务的发布与引用,解决了隔离 SOFA 模块的通信问题,SOFA 提供了三种方式给开发人员来发布 JVM 服务和引用,分别是: XML 方式、Annotation 方式及编程 API 方式 。
基于 Velocity 的 Spring 配置
SOFA 的 Spring 配置文件基于 Velocity,根据用户的不同配置文件,将初始化不同的 Bean,提升灵活性。
生命周期管理
SOFA 框架包含完整的生命周期管理,应用可以监听 SOFA 应用或者 SOFA 组件的生命周期事件。
Log4j2 支持
SOFA 框架支持 Log4j2,实现日志的异步打印。同时,SOFA 框架基于 DRM 实现了动态调整日志级别功能。
健康检查
SOFA框架提供了一套可扩展的健康检查机制,可以帮助应用确定启动完毕后是否健康,是否可以对外提供服务。
远程调用
基于 TCP 和自有二进制协议的高效的、透明的远程服务调用,支持更加复杂的对象,且提供了更为丰富的调用方式(sync、oneway、callback、future 等)。
服务发现
服务提供者自动注册到服务注册中心;服务消费者从注册中心订阅服务提供者的地址;支持提供者地址变化的自动发现,为服务提供良好的伸缩性。
集群容错
服务调用者在部分服务提供者出现问题时,进行自动容错。
服务路由与负载均衡
如果存在多个可用的服务提供者,服务调用者在本地根据服务端路由和负载均衡算法选择其中一台进行调用。可在内网替代 F5 等硬件负载均衡器,解决了系统单点问题的同时,大大降低了企业成本。
3 测试场景
3.1 负载机
服务器 | 数量 | 配置 | 备注 |
负载机 | 1 | 8核、32G | 负责部署应用 |
脚本机 | 1 | 4核、32G | 负责执行测试脚本 |
3.1 测试应用
应用组 | 应用 | 数量 | 配置 | 备注 |
SOFA RPC | SOFA服务提供者 | 1 | -Xms512M -Xmx1024M |
|
SOFA服务调用者 | 1 | -Xms512M -Xmx1024M | 对外提供测试接口 | |
SpringCloud | SpringCloud服务提供者 | 1 | -Xms512M -Xmx1024M |
|
SpringCloud服务调用者 | 1 | -Xms512M -Xmx1024M | 对外提供测试接口 |
3.3 测试场景
场景一
内网环境下,模拟100用户连续请求测试接口60秒,单次请求数据大小100字节
场景二
内网环境下,模拟100用户连续请求测试接口60秒,单次请求数据大小1KB
场景三
内网环境下,模拟100用户连续请求测试接口60秒,单次请求数据大小3KB
场景四
内网环境下,模拟100用户连续请求测试接口60秒,单次请求数据大小10KB
场景五
内网环境下,模拟100用户连续请求测试接口10分钟,单次请求数据大小3KB
4 测试结果
4.1 场景一
测试结果——SpringCloud
测试结果——SOFA RPC
4.2 场景二
测试结果——SpringCloud
测试结果——SOFA RPC
4.3 场景三
测试结果——SpringCloud
测试结果——SOFA RPC
4.4 场景四
测试结果——SpringCloud
测试结果——SOFA RPC
4.5 场景五
测试结果——SpringCloud
测试结果——SOFA RPC