Redian新闻
>
微服务开发平台Spring Cloud Blade部署实践

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

公众号新闻

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

关于 Spring Cloud Blade

  • 采用前后端分离的模式,前端开源两个框架:Sword[2] (基于 React、Ant Design)、Saber[3] (基于 Vue、Element-UI)
  • 后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool[4]
  • 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[5] 版本部署。

一、部署 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[6]

五、部署 Blade 后端服务

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


内容
组件名称自定义
组件英文名称自定义
仓库地址https://gitee.com/smallc/SpringBlade
代码版本: Tagv3.5.0

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

  1. 创建前,在多模块构建页面 -> 右侧修改按钮 -> 修改每个模块的启动命令,如下。
  2. 创建后,删除每个组件的默认端口,为每个组件添加对应的新端口和端口别名并打开端口的对内服务,如下。
  3. 修改完成后构建组件。
组件端口启动命令
blade-auth8100web: java $JAVA_OPTS -jar blade-auth/target/blade-auth.jar
blade-gateway80web: java $JAVA_OPTS -jar blade-gateway/target/blade-gateway.jar
blade-admin7002web: java $JAVA_OPTS -jar blade-ops/blade-admin/target/blade-admin.jar
blade-develop7007web: java $JAVA_OPTS -jar blade-ops/blade-develop/target/blade-develop.jar
blade-report8108web: java $JAVA_OPTS -jar blade-ops/blade-report/target/blade-report.jar
blade-resource8010web: java $JAVA_OPTS -jar blade-ops/blade-resource/target/blade-resource.jar
blade-swagger18000web: java $JAVA_OPTS -jar blade-ops/blade-swagger/target/blade-swagger.jar
blade-desk8105web: java $JAVA_OPTS -jar blade-service/blade-desk/target/blade-desk.jar
blade-log8103web: java $JAVA_OPTS -jar blade-service/blade-log/target/blade-log.jar
blade-system8106web: java $JAVA_OPTS -jar blade-service/blade-system/target/blade-system.jar
blade-user8102web: 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: [email protected]
    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 完整部署的服务拓扑图」 所示。

Reference Link

[1]

Rainbond: https://www.rainbond.com/docs/micro-service/example/blade

[2]

Sword: https://gitee.com/smallc/Sword

[3]

Saber: https://gitee.com/smallc/Saber

[4]

BladeTool: https://gitee.com/smallc/blade-tool

[5]

Spring Cloud Blade v3.5.0: https://gitee.com/smallc/SpringBlade/tree/v3.5.0/

[6]

Blade SQL: https://gitee.com/smallc/SpringBlade/blob/v3.5.0/doc/sql/blade/blade-saber-mysql.sql


你参与开源吗?
扫描下方二维码
抽开源中国周边啦~


END



怎么理解开源世界里的白嫖?



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
美股SPAC|金融科技平台 Qenta Inc. 通过与 SPAC Blockchain Coinvestors合在纳斯达克上市【Biotech Community】打造“AI+BT”微生态药物研发平台——未知君的创新微生态药物研发Spring for Apache Kafka 3.0 和 Spring for RabbitMQ 3.0 发布芝加哥艺术学院(三)塞尚(下)SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口毛泽东的成功之路就是上山下乡Spring Cloud 优雅下线+灰度发布Cloud Shuffle Service 在字节跳动 Spark 场景的应用实践Chinese Cities Allow Spring Festival Fireworks Amid COVID Blues裁员收缩后,东南亚最大电商平台Shopee怎么样了?【首发】Rgenta宣布完成5200万美元A轮融资,加速公司针对RNA靶点小分子新药研发平台建设及管线开发Serverless时代的微服务开发指南:华为云提出七大实践新标准Go二次开发实战:K8s、Prometheus、Traefk的微服务网关对话 Spring 大神:Spring 生态系统的新时代来了!胶卷老照片 最后买买买 奥匈帝国4日游(6)Spring Cloud 2022.0.0 正式发布,代号 "Kilburn"再访阿凯迪亚(3)基于Traefik的微服务网关二次开发!业务开发时,接口不能对外暴露怎么办?从大麻的毛状根到濒危植物:美国合成生物学公司自建开发平台,解锁未知植物化合物让无服务器微服务超越容器,开发工具初创公司Fermyon 推出 WebAssembly 云降本增效的当下,究竟如何定义“一站式企业应用开发平台”?用自研 Pingora 替代 Nginx 后,Cloudflare 成为了最受欢迎 Web 服务器字节跳动在 Rust 微服务方向的探索和实践 | QConJava 云原生微服务框架 Quarkus 入门实践老年痴呆症的预防ByteHouse实践与思考:如何补全ClickHouse高可用短板?​能让天津人放下煎饼馃子的,也就那碗捞(láo)面了!直播预告:Avatar Cloud Engine 加速零售场景虚拟数字人的创建和部署美电商平台Shopify“黑五”销售额创纪录 拜登阖家麻省岛屿度假购物2022傅雷翻译出版奖获奖者揭晓 Le palmarès du Prix Fu Lei 2022 dévoilé如何解决Spring Cloud下测试环境路由问题Spotlight Spring Savings 10月19日-11月6日打折图册(高清29页)微服务虽已老生常谈,但生命力超出不少人想象 | 解读微服务的2022网球名将威廉姆斯姐妹领投,投资社交平台Shares完成4000万美元融资丨海外邦
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。