SOFABoot 基于 Spring Boot 的研发框架开源项目

我要开发同款
匿名用户2018年04月19日
61阅读
所属分类Java、程序开发、服务框架/平台
授权协议Apache 2.0

作品详情

SOFABoot是蚂蚁金服开源的基于SpringBoot的研发框架,它在SpringBoot的基础上,提供了诸如ReadinessCheck,类隔离,日志空间隔离等等能力。在增强了SpringBoot的同时,SOFABoot提供了让用户可以在SpringBoot中非常方便地使用SOFAStack相关中间件的能力。

一、背景

SpringBoot是一个非常优秀的开源框架,可以非常方便地就构建出一个基于Spring的应用程序,但是在使用过程中,还是会遇到一些问题:

SpringBoot提供了一个基础的健康检查的能力,中间件和应用都可以扩展来实现自己的健康检查逻辑。但是SpringBoot的健康检查只有LivenessCheck的能力,缺少ReadinessCheck的能力,这样会有比较致命的问题。当一个微服务应用启动的时候,必须要先保证启动后应用是健康的,才可以将上游的流量放进来(来自于RPC,网关,定时任务等等流量),否则就可能会导致一定时间内大量的错误发生。

SpringBoot虽然通过依赖管理(DependencyManagement)的方式最大程度的保证了SpringBoot管理的JAR包之间的兼容性,但是不可避免的,当引入一些其他的JAR包的时候,还是可能会遇到冲突,而且很多时候这种冲突解决起来并不是这么容易,一个例子是当冲突的包是序列化相关的类库时,比如说Hessian,如果应用中的一个组件需要使用Hessian3,而另一个则必须要使用Hessian4,由于Hessian3和Hessian4之间的不兼容性,并且序列化还涉及到微服务中的上下游服务,要把Hessian统一到一个版本绝非易事。

在超大规模微服务运维的场景下,运维能力的平台化是一定要解决的问题,而监控又是其中非常主要的一个点,针对于日志监控这种情况,SpringBoot并没有提供任何解决方案。大部分的开源组件,具体要打印哪些日志,打印到什么路径,什么文件下面,都是由应用的使用者来决定,这样会导致每一个应用的日志配置都各式各样,每一个应用都需要去监控系统中配置自己应用的日志监控,导致关键的监控的实施成本特别高。

为了解决以上的问题,又因为SOFAStack中的诸多中间件本身就需要集成SpringBoot,所以蚂蚁金服基于SpringBoot开发并开源了SOFABoot,来解决以上的问题,也方便使用者在SpringBoot中方便地去使用SOFAStack中间件。

二、功能简介

为了解决SpringBoot在实施大规模微服务架构时候的问题,SOFABoot提供了以下的能力:

2.1增强SpringBoot的健康检查能力

针对SpringBoot缺少ReadinessCheck能力的情况,SOFABoot增加了SpringBoot现有的健康检查的能力,提供了ReadinessCheck的能力。利用ReadinessCheck的能力,SOFAStack下各种中间件只有在ReadinessCheck通过之后,才将流量引入到应用的实例中,比如RPC,只有在ReadinessCheck通过之后,才会向服务注册中心注册,后面来自上游应用的流量才会进入。

除了中间件可以利用ReadinessCheck的事件来控制流量的进入之外,PAAS系统也可以通过访问 https://localhost:8080/health/readiness 来获取应用的ReadinessCheck的状况,用来控制例如负载均衡设备等等的流量。

2.2提供类隔离的能力

为了解决SpringBoot下的类依赖冲突的问题,SOFABoot基于SOFAArk提供了SpringBoot上的类隔离的能力,在一个SOFABoot的系统中,只要引入SOFAArk相关的依赖,就可以将SOFAStack的中间件相关的类和应用相关的类的ClassLoader进行隔离,防止出现类冲突。当然,用户也可以基于SOFAArk,将其他的中间件、第三方的依赖和应用的类进行隔离。

2.3日志空间隔离能力

为了统一大规模微服务场景下的中间件日志的打印,SOFABoot提供了日志空间隔离的能力给各个SOFAStack的中间件,各个SOFAStack的中间件采用日志空间隔离的能力之后,自动就会将本身的日志和应用的普通日志隔离开来,并且打印的日志的路径也是相对固定,非常方便进行统一地监控。

2.4SOFAStack中间件的集成管理

基于SpringBoot的自动配置能力,SOFABoot提供了SOFAStack中间件统一易用的编程接口以及SpringBoot的Starter,方便在SpringBoot环境下使用SOFAStack中间件,每一个SOFAStack中间件都是独立可插拔的组件,节约开发时间,和后期维护的成本。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论