学习
实践
活动
专区
工具
TVP
写文章
专栏首页Rainbond开源「容器云平台」微服务开发平台 Spring Cloud Blade 部署实践
原创

微服务开发平台 Spring Cloud Blade 部署实践

本文介绍使用 Rainbond 快速部署 Spring Cloud Blade 微服务平台。Spring Cloud Blade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于 React 和 Vue 的两个前端框架用于快速搭建企业级的 SaaS 多租户微服务平台。

关于 Spring Cloud Blade

  • 采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)
  • 后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool
  • BladeTool 已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发
  • 集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。
  • 注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。
  • 极简封装了多租户底层,用更少的代码换来拓展性更强的SaaS多租户系统。
  • 借鉴OAuth2,实现了多终端认证系统,可控制子系统的token权限互相隔离。
  • 借鉴Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。
  • 项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。

模块说明

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 Blade 完整部署的服务拓扑图

基于应用商店快速部署 Spring Cloud Blade

通过开源应用商店部署 Spring Cloud Blade,在 平台管理 -> 应用市场 -> 开源应用商店 中搜索 SpringBlade 并一键安装。

部署完成后,如上图 Spring Cloud Blade 完整部署的服务拓扑图 所示。

基于源码部署 Spring Cloud Blade

本篇文章基于 Spring Cloud Blade v3.5.0 版本部署。

一、部署 Nacos

通过开源应用商店部署 Nacos,在开源应用商店中搜索 Nacos单机 并选择安装 2.1.2 版本。

二、部署 Redis

通过开源应用商店部署 Redis,在开源应用商店中搜索 Redis 并选择安装 5.0.7 版本。

三、部署 Sentinel Dashboard

通过开源应用商店部署 Sentinel Dashboard,在开源应用商店中搜索 Sentinel-Dashboard 并选择安装 1.8.6 版本。

四、初始化数据库

从开源应用商店安装的 Nacos 自带了 Mysql 组件,进入该组件中 -> 端口 -> 打开对外服务,通过客户端工具连接。

  1. 创建 blade 数据库。
  2. 初始化表结构和数据:Blade SQL

五、部署 Blade 后端服务

1.基于源码创建组件,填写以下信息:

内容

组件名称

自定义

组件英文名称

自定义

仓库地址

https://gitee.com/smallc/SpringBlade

代码版本: Tag

v3.5.0

2.检测出多模块构建,进入多模块构建页面

创建前,在多模块构建页面 -> 右侧修改按钮 -> 修改每个模块的启动命令,如下。

创建后,删除每个组件的默认端口,为每个组件添加对应的新端口和端口别名并打开端口的对内服务,如下。

修改完成后构建组件。

组件

端口

启动命令

blade-auth

8100

web: java $JAVA_OPTS -jar blade-auth/target/blade-auth.jar

blade-gateway

80

web: java $JAVA_OPTS -jar blade-gateway/target/blade-gateway.jar

blade-admin

7002

web: java $JAVA_OPTS -jar blade-ops/blade-admin/target/blade-admin.jar

blade-develop

7007

web: java $JAVA_OPTS -jar blade-ops/blade-develop/target/blade-develop.jar

blade-report

8108

web: java $JAVA_OPTS -jar blade-ops/blade-report/target/blade-report.jar

blade-resource

8010

web: java $JAVA_OPTS -jar blade-ops/blade-resource/target/blade-resource.jar

blade-swagger

18000

web: java $JAVA_OPTS -jar blade-ops/blade-swagger/target/blade-swagger.jar

blade-desk

8105

web: java $JAVA_OPTS -jar blade-service/blade-desk/target/blade-desk.jar

blade-log

8103

web: java $JAVA_OPTS -jar blade-service/blade-log/target/blade-log.jar

blade-system

8106

web: java $JAVA_OPTS -jar blade-service/blade-system/target/blade-system.jar

blade-user

8102

web: java $JAVA_OPTS -jar blade-service/blade-user/target/blade-user.jar

3.编辑依赖关系,切换到 编排模式 拖动组件进行依赖关系建立。

4.进入 Nacos 组件内 -> 端口 -> 打开 8848 端口的对外服务,访问 Nacos 并登录,默认用户密码 nacos/nacos,创建配置文件。

创建 blade.yaml 配置文件,内容如下:

#服务器配置
server:
  undertow:
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    buffer-size: 1024
    # 是否分配的直接内存
    direct-buffers: true
    # 线程配置
    threads:
      # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
      io: 16
      # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
      worker: 400

#spring配置
spring:
  cloud:
    sentinel:
      eager: true
  devtools:
    restart:
      log-condition-evaluation-delta: false
    livereload:
      port: 23333

#feign配置
feign:
  sentinel:
    enabled: true
  okhttp:
    enabled: true
  httpclient:
    enabled: false

#对外暴露端口
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

#knife4j配置
knife4j:
  #启用
  enable: true
  #基础认证
  basic:
    enable: false
    username: blade
    password: blade
  #增强配置
  setting:
    enableSwaggerModels: true
    enableDocumentManage: true
    enableHost: false
    enableHostText: http://localhost
    enableRequestCache: true
    enableFilterMultipartApis: false
    enableFilterMultipartApiMethodType: POST
    language: zh-CN
    enableFooter: false
    enableFooterCustom: true
    footerCustomContent: Copyright © 2022 SpringBlade All Rights Reserved

#swagger配置信息
swagger:
  title: SpringBlade 接口文档系统
  description: SpringBlade 接口文档系统
  version: 3.5.0
  license: Powered By SpringBlade
  licenseUrl: https://bladex.vip
  terms-of-service-url: https://bladex.vip
  contact:
    name: smallchill
    email: smallchill@163.com
    url: https://gitee.com/smallc

#blade配置
blade:
  token:
    sign-key: 请配置32位签名提高安全性
  xss:
    enabled: true
    skip-url:
      - /weixin
  secure:
    skip-url:
      - /test/**
    client:
      - client-id: sword
        path-patterns:
          - /sword/**
      - client-id: saber
        path-patterns:
          - /saber/**
  tenant:
    column: tenant_id
    tables:
      - blade_notice

创建 blade-dev.yaml 配置文件,内容如下:

#spring配置
spring:
  redis:
    ##redis 单机环境配置
    host: 127.0.0.1
    port: 6379
    password:
    database: 0
    ssl: false

#项目模块集中配置
blade:
  #通用开发生产环境数据库地址(特殊情况可在对应的子工程里配置覆盖)
  datasource:
    dev:
      url: jdbc:mysql://127.0.0.1:3306/blade?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8
      username: root
      password: root

更新或重启除 Nacos Mysql Redis Sentinel Dashboard 之外的所有组件。

六、部署 Blade 前端 Saber

  1. 基于源码创建组件,填写以下信息:

内容

组件名称

自定义

组件英文名称

自定义

仓库地址

https://gitee.com/zhangbigqi/Saber.git

代码版本

v3.5.0

  1. 进入 Saber 组件内 -> 端口 -> 删除默认端口,新增 8080 端口并打开对外服务。
  2. 编辑依赖关系,切换到 编排模式 拖动组件进行依赖关系建立,将 Saber 依赖 blade-gateway 并更新组件。
  3. 使用默认域名访问 Saber UI 并登录。

部署完成后,如上图 Spring Cloud Blade 完整部署的服务拓扑图 所示。

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 【程序源代码】Spring Cloud微服务化开发平台

    Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关AP...

    程序源代码
  • 在K8S平台部署Spring Cloud微服务项目

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件

    用户6641876
  • 开源项目 | 又是一个 java 牛逼框架!

    该项目由商业级项目升级优化而来的微服务架构,采用Spring Boot 2.5 、Spring Cloud 2020 等核心技术构建,完全遵循阿里巴巴编码规范。...

    终码一生
  • 一款的神仙接私活项目神器,微服务也能搞定!

    微服务开发平台 采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI...

    纯洁的微笑
  • 推荐一款牛逼的接私活项目,微服务也能搞定!

    Leetcode名企之路
  • 推荐一款牛逼的接私活项目,微服务也能搞定!

    Java小咖秀
  • SpringCloud微服务架构,接私活,强烈推荐!

    一个由商业级项目升级优化而来的微服务架构,采用SpringBoot 2.5 、SpringCloud 等核心技术构建,提供基于React和Vue的两个前端框架用...

    搜云库技术团队
  • 程序员都知道SpringCloud与Kubernetes可以进行生态融合吗?

    Spring Cloud和Kubernetes都是微服务运行平台,经常被人们拿来做比较,然而二者所关注的对象和解决的问题还是存在着本质差异的。

    愿天堂没有BUG
  • 基于SpringBoot快速构建中大型系统的基础框架

    程序源代码
  • 8月份Github上最热门的Java开源项目

    https://github.com/xkcoding/spring-boot-demo Star 4779

    Java团长
  • 完美!这份阿里P8基于电商平台讲解微服务架构设计开发运维笔记

    微服务架构的设计理念已经深入人心,并且四处落地开花,硕果累累,而微服务的开发工具也在日新月异的推陈出新中,除Spring Cloud 生态外,还有很多其他优秀的...

    愿天堂没有BUG
  • JAVA常用框架及漏洞[通俗易懂]

    1. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:

    全栈程序员站长
  • 腾讯云中间件读者敬启:2022年热门技术文章集锦,建议收藏

    各位读者:大家好! 回望刚刚过去的2022年,发生了太多的事情,北京冬奥会、神舟十四号航天员首次出舱、重庆山火、泸定地震,一幕幕或激动人心或舍生忘死的场景彷佛还...

    腾讯云中间件团队
  • Spring Cloud(一):入门篇

    Spring Cloud 是一个基于 Spring Boot 实现的微服务架构开发工具,可以快速构建分布式系统中的某些常用模式,如配置管理、服务治理、断路器、智...

    朝雾轻寒
  • 一起玩转微服务(4)——如何实施微服务

    微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。 实施微服务需要具备以下条件:

    cloudskyme
  • 普元微服务平台EOS Platform 8全新发布

    普元新一代应用平台EOS Platform 8已经全面拥抱微服务架构,支持分布式架构,为企业业务上云提供云原生应用的支撑。同时该版本完全支持Spring Boo...

    yuanyi928
  • 《Spring Boot极简教程》第2章 Spring Boot简史小结参考资料

    Java Web开发涉及的技术比较繁杂,涉及到很多开发框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gr...

    一个会写诗的程序员
  • 19 张图看懂 Spring Cloud

    本文用 19 张思维导图描述微服务相关的概念和架构,建议收藏。包括什么是微服务、架构演进、微服务架构、微服务解决方案、SpringCloud概览、Eureka、...

    逆锋起笔

扫码关注腾讯云开发者

领取腾讯云代金券