最近超火的SOFABoot是个什么东西?带你快速入门SOFABoot

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近超火的SOFABoot是个什么东西?带你快速入门SOFABoot

最近发现了一个新的开源项目:SOFABoot,再加上公司用的框架也是SOFABoot,所以给将这个框架分享给大家,希望能扩展大家的视野。


首先我们需要知道什么是SOFABoot?


SOFABoot 是蚂蚁集团开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如

Readiness Check,类隔离,日志空间隔离等等能力。


下面是他的项目地址:


https://gitee.com/sofastack/sofa-boot


为什么要选择SOFABoot?他能解决什么问题?


根据官方介绍,他主要能解决以下的问题:



Spring Boot 的健康检查只有 Liveness Check 的能力,缺少 Readiness Check 的能力

这里给大家科普一下Liveness Check 和 Readiness Check 是什么东西


Liveness Check 和 Readiness Check 概念来自于 Kuberentes,分别代表运行时检查和启动时检查。

利用 Readiness Check 的能力,SOFA 中间件中的各个组件只有在 Readiness Check 通过之后,才将流量引入到应用的实例中,比如 RPC,只有在 Readiness Check 通过之后,才会向服务注册中心注册,后面来自上游应用的流量才会进入


提供模块化开发的能力

基于 Spring 上下文隔离提供模块化开发能力,每个 SOFABoot 模块使用独立的 Spring 上下文,避免不同 SOFABoot 模块间的 BeanId 冲突


增加日志空间隔离的能力

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


中间件框架自动发现应用的日志实现依赖并独立打印日志,避免中间件和应用日志实现绑定,通过 sofa-common-tools 实现


增加类隔离的能力

基于 SOFAArk 框架提供类隔离能力,方便使用者解决各种类冲突问题


为了解决以上的问题,又因为 SOFA 中间件中的各个组件本身就需要集成 Spring Boot,所以蚂蚁集团基于 Spring Boot 开发并开源了 SOFABoot,来解决以上的问题,也方便使用者在 Spring Boot 中方便地去使用 SOFA 中间件。


以上都是官方给出的解释。


那么我们怎样快速搭建一个SOFABoot工程呢?


第一步

创建一个springboot项目



image.png


第二步,替换pom.xml中的以下内容:

image.png

第三步,添加healthcheck和web包

这步非常重要添加之前控制台启动依旧是打印spring


image.png


而且没有健康检查的机制,添加之后我们再看控制台打印

image.png

直到现在,我们的SOFABoot项目就搭建完成了,非常简单,

我们也可以查看当前项目的健康状况:

http://localhost:8087/actuator/readiness


image.png



好了,今天先分享到这里,大家已经快速入门了一波,后面我会继续带大家走入SOFABoot的世界,欢迎大家关注一波!!


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
监控 网络协议 API
阿里云BssOpenAPI是一个基于阿里云开放API的服务
【2月更文挑战第24天】阿里云BssOpenAPI是一个基于阿里云开放API的服务
540 6
|
存储 安全 Java
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
515 0
|
Java 测试技术 容器
SpringBoot单元测试报空指针异常解决方案
java.lang.NullPointerException空指针异常 1.测试类中产生空指针异常,可能不是你的逻辑代码写错了,而是因为获取容器失败,即没有使用正确的测试方法 2.在SpringBoot项目中我们一般可以使用两种Junit进行测试,在导入@Test包时,会出现两个选项
1673 0
SpringBoot单元测试报空指针异常解决方案
|
消息中间件 弹性计算 运维
对比阿里云的SofaMQ与RocketMQ
对比阿里云的SofaMQ与RocketMQ
2170 2
|
Java 编译器
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
1086 0
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
834 0
|
消息中间件 API 数据库
详解分布式微服务架构
详解分布式微服务架构
|
开发工具 IDE 开发者
通义灵码安装教程
https://developer.aliyun.com/topic/lingma/activities/202405?taskCode=16245&recordId=c0836910524e8a25109e3abeba50938d#/?utm_content=m_fission_1 「通义灵码推荐官,喊你高效 AI 编码,还有iPhone15、机械键盘、双肩包等福利可领。」
|
XML Java 数据格式
最近很火的SOFARPC是什么?带你快速入门SOFARPC
最近很火的SOFARPC是什么?带你快速入门SOFARPC
最近很火的SOFARPC是什么?带你快速入门SOFARPC
|
Linux 开发工具 git
IntelliJ IDEA配置git工作效率翻倍
IntelliJ IDEA 是一个强大的集成开发环境,用于编程语言如 Java、Kotlin、Scala 和其他多种语言。Git 是一个开源的分布式版本控制系统,用于追踪项目过程中的代码变更。
835 0
IntelliJ IDEA配置git工作效率翻倍