一、开源项目简介
SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 2.6 、Spring Cloud 2021 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。
二、开源协议
使用Apache-2.0开源协议
三、界面展示
界面
BladeX工作流一览
Sword界面一览
Saber界面一览
监控界面一览
四、功能概述
SpringBlade微服务开发平台
- 采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)
- 后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool
- BladeTool已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发
- 集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。
- 注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。
- 使用Traefik进行反向代理,监听后台变化自动化应用新的配置文件。
- 极简封装了多租户底层,用更少的代码换来拓展性更强的SaaS多租户系统。
- 借鉴OAuth2,实现了多终端认证系统,可控制子系统的token权限互相隔离。
- 借鉴Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。
- 稳定生产了三年,经历了从 Camden -> Hoxton -> 2021 的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构。
- 项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。
五、技术选型
架构图
工程结构
SpringBlade ├── blade-auth -- 授权服务提供 ├── blade-common -- 常用工具封装包 ├── blade-gateway -- Spring Cloud 网关 ├── blade-ops -- 运维中心 ├ ├── blade-admin -- spring-cloud后台管理 ├ ├── blade-develop -- 代码生成 ├ ├── blade-resource -- 资源管理 ├ ├── blade-seata-order -- seata分布式事务demo ├ ├── blade-seata-storage -- seata分布式事务demo ├── blade-service -- 业务模块 ├ ├── blade-desk -- 工作台模块 ├ ├── blade-log -- 日志模块 ├ ├── blade-system -- 系统模块 ├ └── blade-user -- 用户模块 ├── blade-service-api -- 业务模块api封装 ├ ├── blade-desk-api -- 工作台api ├ ├── blade-dict-api -- 字典api ├ ├── blade-system-api -- 系统api └── └── blade-user-api -- 用户api
Spring Cloud 是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud 的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:
- Spring Cloud Netflix 是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
- Spring Cloud Config 将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件
- Spring Cloud Stream 分布式消息队列,是对Kafka, MQ的封装
- Spring Cloud Security 对Spring Security的封装,并能配合Netflix使用
- Spring Cloud Zookeeper 对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用
- Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
评论(0)