分布式领域扩展点设计稿
背景
随着交易业务和基础知识的沉淀,愈发觉得扩展点可以在大型交易分布式架构中可以做更多的事情。
经过一个月的思考,决定将 单点领域扩展点(savior-ext) 从原有的 savior架构 中剥离开来,升级成为 分布式领域扩展点(sext) ,之后单独去维护和迭代。
坐标
分布式领域扩展点(新 · 完全兼容上一个大版本 · 可直接替换坐标)
xml
<dependency>
<groupId>cn.sunjinxin.savior</groupId>
<artifactId>sext</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
领域扩展点(旧)
xml
<dependency>
<groupId>cn.sunjinxin.savior</groupId>
<artifactId>savior</artifactId>
<version>1.0.5</version>
</dependency>
设计理念
作为一名工程师,我深知一个框架引入到系统中会带来很大的便利,但同时也会让系统设计和架构升级以及业务迭代变得更加复杂。
所以该分布式领域扩展点框架具备以下几种特性
- 轻量化(引入轻量、API轻量,达到一键启动)
- 可插拔(防止应用架构变得沉重,业务点可随时一键剔除,一键替换)
- 可编排(可达到工作流的编排能力,对业务能够达到充分的抽象化)
- 可配置(基于配置中心能力,对框架所有能力和服务动态配置)
- 可灰度(可通过对流量进行染色,设置流量权重,达到灰度可能)
- 可监控(对框架所覆盖的业务指标和相关基础设施指标进行监控)
- 可降级(对编排的扩展点进行熔断降级,提高系统的可用性)
- 可扩展(基本的业务扩展能力,以及供开发人员在应用层扩展框架的能力)
设计图
Quick Start
在启动类上标注@Savior注解,即可启动Savior框架所有组件的功能。
java
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;
import cn.sunjinxin.savior.core.anno.Savior;
/**
* @author issavior
* @date 1314/05/20 00:00:00
*/
@Savior
@SpringBootApplication
public class AppRun {
public static void main(String[] args) {
SpringApplication.run(AppRun.class, args);
}
}
相关组件
Savior框架中的组件亦可以独立引入,目前支持的组件:
组件 | 说明 |
---|---|
savior-ext | 扩展点 |
savior-mq | 消息队列 |
savior-toc | 超时中心 |
savior-rule | 规则引擎 |
savior-lock | 分布式锁 |
savior-retry | 重试机制 |
savior-event | 事件总线 |
savior-cache | 多级缓存 |
savior-workflow | 工作流 |
... | ... |