跳转至

微服务架构说明

概述

天翎MyApps平台采用微服务架构。基于Spring boot2.x,也可以部署到Tomcat、Jetty、金蝶Apusic等应用服务器。

MyApps 平台采用微服务架构设计,具有高可扩展性、高可用性和灵活部署的特点。每个服务都能独立部署、扩容和缩容,能够有效地提高资源利用率。

部署图

部署图

微服务架构特点

1. 高可扩展性

每个服务都能独立部署,扩容和缩容方便,能够有效地提高利用率。根据业务需求,可以针对性地扩展特定服务,而不需要整体扩容。

2. 多时态架构

MyApps 平台采用多时态架构设计,分为三个时态:

  • 授权时:操作并存储用户、部门、权限等授权相关数据
  • 设计时:操作并存储表单、流程、视图、报表等配置数据
  • 运行时:实际用户使用系统并存储业务数据

这种设计实现了配置数据与业务数据的分离,提高了系统的灵活性和可维护性。

3. 多种部署模式

支持多种部署模式,满足不同场景的需求:

  • 单机部署:适合小规模应用场景
  • 集群部署:适合大规模应用场景,提供高可用性
  • 云端部署:支持云环境部署,便于弹性扩展

4. 集群化架构

由过去的对等集群架构演化为所有微服务都可以动态伸缩,涉及到负载均衡由前端单点转移至调用方。这种设计使得:

  • 每个服务都可以独立扩展
  • 负载均衡更加灵活和高效
  • 系统整体性能得到提升

5. 配置化

包括服务的依赖关系解耦,对应用透明无侵入:

  • 服务之间的依赖关系通过配置管理
  • 应用无需关心底层服务的实现细节
  • 便于服务的替换和升级

6. 版本化

在服务升级或线上bug修复等场景下所需要的多版本管理:

  • 服务的提供者与消费者在发布引用时须指定版本号
  • 支持多版本并存,便于灰度发布
  • 降低服务升级带来的风险

7. 异步化

常用的性能优化方式,在合适的场景下,异步化可以带来:

  • 更大的吞吐量
  • 更短的响应时间
  • 隔离外部不稳定性的作用

详细描述

服务注册/发现

作用说明

服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: consul、Nacos)。

服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。

MyApps平台支持的服务注册/发现组件包括:Consul、Eureka、Nacos

发布

依赖

网关服务

作用说明

提供API转发能力的组件,通过与服务注册/发现配合,可以实现负载均衡、限流、失效转移、熔断等。

网关服务会对API请求做基本的权鉴,HTTP请求头或Cookie中的"accessToken"、"adminToken" 作合法性校验。

发布

适应不同的注册服务器和发布方式,网关服务被打包成:

  • obpm-gateway-consul-xx.jar:适配Consul
  • obpm-gateway-eureka-xx.jar:适配Eureka
  • obpm-gateway-nacos-xx.jar:适配Nacos

注:通过tomcat或金蝶Apusic等应用服务器发布,不会用到网关,所以不会打包。

依赖

服务注册/发现(Consul、Eureka等)

登录服务

作用说明

完成用户登录权鉴动作,并在权鉴成功后,发放"accessToke",其中,"accessToken"为JWT算法加密的文本,playload为userid。

发布

适应不同的注册服务器和发布方式,服务被打包成:

  • obpm-signon-consul-xx.jar:适配Consul
  • obpm-signon-eureka-xx.jar:适配Eureka
  • obpm-signon-nacos-xx.jar:适配Nacos
  • signon.war:适配tomcat、jetty、Apusic

依赖

  • 服务注册/发现:Consul、Eureka等
  • 系统库:存储用户、部门、权限设置等信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。

运行时服务

作用说明

MyApps运行能力的主要实现服务。从存储中读取配置好的软件(应用),并运行软件(应用)中的业务逻辑,如:表单、视图、报表、流程等。是业务逻辑的运行器。

发布

适应不同的注册服务器和发布方式,服务被打包成:

  • obpm-runtime-consul-xx.jar:适配Consul
  • obpm-runtime-eureka-xx.jar:适配Eureka
  • obpm-runtime-nacos-xx.jar:适配Nacos
  • obpm.war:适配tomcat、jetty、Apusic

依赖

  • 服务注册/发现:Consul、Eureka等
  • REDIS:缓存服务并保证在多实例时关键状态一致性
  • 系统库:存储用户、部门、权限设置等信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。
  • 业务库:存储软件(应用)业务信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。
  • MQ:消息队列,采用ApacheMQ,完成异步动作解耦。

消息服务

作用说明

实现消息类功能的服务,如站内消息、社区评论等

发布

适应不同的注册服务器和发布方式,服务被打包成:

  • obpm-message-consul-xx.jar:适配Consul
  • obpm-message-eureka-xx.jar:适配Eureka
  • obpm-message-nacos-xx.jar:适配Nacos
  • message.war:适配tomcat、jetty、Apusic

依赖

  • 服务注册/发现:Consul、Eureka等
  • 消息库:存储消息信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。
  • MQ:消息队列,采用ApacheMQ,完成异步动作解耦。

知识文档服务

作用说明

知识文档管理功能服务。

发布

适应不同的注册服务器和发布方式,服务被打包成:

  • obpm-kms-consul-xx.jar:适配Consul
  • obpm-kms-eureka-xx.jar:适配Eureka
  • obpm-kms-nacos-xx.jar:适配Nacos
  • kms.war:适配tomcat、jetty、Apusic

依赖

  • 服务注册/发现:Consul、Eureka等
  • 运行时服务:runtime,获取用户等信息
  • 知识库:存储知识文档管理信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。

问卷服务

作用说明

定义问卷、填写答卷功能。

发布

适应不同的注册服务器和发布方式,服务被打包成:

  • obpm-qms-consul-xx.jar:适配Consul
  • obpm-qms-eureka-xx.jar:适配Eureka
  • obpm-qms-nacos-xx.jar:适配Nacos
  • qms.war:适配tomcat、jetty、Apusic

依赖

  • 服务注册/发现:Consul、Eureka等
  • 运行时服务:runtime,获取用户等信息
  • 问卷库:存储问卷业务信息的关系型数据库,支持MySQL、ORACLE、DB2、SQLSERVER 、达梦、人大金昌、瀚高、高斯等主流数据库。

核心服务组件

MyApps 平台的核心组件包括:

  • 动态表单引擎:提供表单的配置和渲染能力
  • 工作流引擎:提供流程的定义、执行和监控能力
  • 智能报表引擎:提供报表的配置和数据分析能力
  • REST接口:提供三大类100多个REST接口,支持系统集成

服务架构优势

  1. 独立部署:每个服务可以独立开发、测试和部署
  2. 技术栈灵活:不同服务可以使用不同的技术栈
  3. 故障隔离:单个服务的故障不会影响整个系统
  4. 团队协作:不同团队可以负责不同的服务,提高开发效率
  5. 持续交付:支持服务的持续集成和持续部署

总结

MyApps 平台的微服务架构设计充分考虑了企业级应用的需求,通过微服务化实现了系统的高可用性、高可扩展性和灵活部署能力,为企业提供了稳定、高效的低代码开发平台。