中台业务中台开发指南

视频

中台业务中台开发指南

微服务和单体应用的区别

单体应用架构

所有的功能打包在一个 WAR 包里,基本没有外部依赖(除了容器),部署在一个 JavaEE 容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI 等所有逻辑。

优点:

  • 开发简单,集中式管理
  • 基本不会重复开发
  • 功能都在本地,没有分布式的管理和调用消耗

缺点

  • 效率低:开发都在同一个项目改代码,相互等待,冲突不断
  • 维护难:代码功功能耦合在一起,新人不知道何从下手
  • 不灵活:构建时间长,任何小修改都要重构整个项目,耗时
  • 稳定性差:一个微小的问题,都可能导致整个应用挂掉
  • 扩展性不够:无法满足高并发下的业务需求

微服务架构

目的

有效的拆分应用,实现敏捷开发和部署。

如何拆分

网络上有讲根据模块拆分、根据领域模型拆分等等。

凌云中台和鸿鹄比较像是根据领域模型拆分。诸如中台的十大中心、鸿鹄的物业、空间、计费、合同等。

不要为了微服务而微服务

不要循环依赖,违背微服务的初衷

劣势

  • 分布式事物的最终一致性

  • 测试难度提升

  • 运维难度提升

微服务的开发

环境准备

工具:pai-cli、IDE(IDEA,Eclipse,VS code)、JDK8+ 、Maven、Git

后端:Spring > SpringBoot > SpringCloud

前端:NodeJS、VueJS 、 ElementUI

APP:原生底座 、UniApp、UI组件库

API: Groovy

容器:Docker、Kubernetes(K8S)、 K3S

概念对齐

  • 用户身份

    • 运营企业(P端)
      • 可以管理多个园区
    • 入驻企业(B端)
      • 入驻在某一个园区
    • 公众(C端)
      • 关联了当前园区的人,或归属于当前园区入驻企业的员工,都属于该园区的公众。
  • 多租户(根据场景选择合适的策略)

    • 获取当前用户所在企业的id作为租户id
    • 获取当前用户所在园区的id作为租户id
    • 获取当前用户所在企业的运营企业的集团id作为租户id
    • 获取当前用户所在园区的运营企业的集团id作为租户id
  • 开发中心创建套件

    • 应用套件 √
    • 物联套件
    • API套件
    • 数据大屏
  • 应用套件的类型:

    • 园区(只有运营企业才能安装)
    • 企业(运营企业和入驻企业都能安装)
  • 微应用的操作对象(类型):

    • 园区(只有园区类型的套件才有)

    • 企业

      • 园区类型的套件此微应用可以共享共享给入驻企业使用
      • 企业类型的套件此微应用只有安装企业才可以使用
    • 公众

      • 只有园区类型的套件才有
      • 只有APP端
      • 在可视化楼层中搭建使用
  • 门户组件

    • web 端

      • 只有企业类型(端B)
    • app端

      • 只有企业类型和公众类型(C端)
      • 如果是企业类型的套件,也不会有C端类型的小组件

开发部署

  • 创建套件
  • 通过pai-cli 命令行创建 前端、后端、小程序、大数据、原生Docker 工程
  • 编译部署:源码 > 编译 > 打包 > 镜像构建(Docker) > 推送(Hobor) > 部署(K8S)
  • 新增微应用
  • 沙箱安装
  • 测试(K8S)

调试

  • 后端服务以命名空间隔离,云端服务在一个空间,本地开发在一个空间,云端服务会按需代理到开发空间(Service.yamlmetadata.labels.register:enable)。
  • 本地可以调用到云端的服务,但云端服务不能调用到本地服务。
  • 本地也可能调用到小伙伴注册在本地开发空间的服务,当被调用服务是小伙伴注册的时,有可能出现调用超时情况。
  • 还有一种服务调用超时的情况是,被调用接口比较复杂,1秒钟无法完成。优化被调用接口,或者适当增大fegin请求超时时间
  • 测试时主要切换企业,控制台配置的企业和工作台使用的企业需一致。
  • 被调用接口有路径参数,但是传了个空值过去,接口返回404。
  • 查看云端服务容器日志:pai pods \ pai logs
  • 查看服务运行日志:http://47.114.98.162:6005/app/kibana

基础服务的调用

基础服务的调用都有对应的SDK或前端组件。引入对应的包安装,根据说明使用即可。

权限能力

目前角色和菜单在实施阶段自定义的情况下,这个功能已经被弱化了,不建议、也不反对使用。按需。

权限能力

参数管理

参数能力

用户中心

用户中心

存储服务(需开通)

  • 前端组件上传都是临时暂存状态,须后端配合确认保存,长时间不确认保存会被认为垃圾文件将会被清理。

OSS能力

缓存服务(需开通)

缓存能力

消息订阅(需开通)

消息订阅能力

支付中心(需开通)

支付中心

流水号

  • 若设置不允许漏号,需后端核销。不然前端组件获取的都是同一个号码。
  • 注意是否有按园区配置

流水号能力

消息

  • 消费分应用内消息、app推送、短信、邮件,按需配置
  • 目前短信接入的是阿里云短信,模版审核比较严格,注意查看阿里短信规范
  • 消息跳转对接

消息能力

调度能力

配合XXL-JOB使用

调度中心

流程中心

  • 审批任务
  • 并行网关
  • 互斥网关
  • 条件流
  • 一个流程一个表单
  • 会签
  • 办理填意见/附件
  • 退回
  • 加签
  • 终止
  • 补充正文
  • 意见回复

流程开发

流程表单更新之后,需在开发中心更新流程表单。
每次修改流程后,必须重新发布流程。

应用上架

确定发布范围(套件、工程)

确定发布版本

新增工程release-版本分支

准备SQL脚本

  • 首次发布

  • 升级更新

准备nacos配置

发起集成测试

  • 选择测试的套件
  • 选择套件中工程的分支

合并分支到master及develop

新建tag(基于master)

新增发行版

  • 填写版本及发布内容
  • 选择发布的工程的tag

提交审核

如果服务太多,这时候处理起来就很多很繁琐了

文档更新时间: 2022-05-30 09:19   作者:管理员