微服务架构说明¶
概述¶
天翎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接口,支持系统集成
服务架构优势¶
- 独立部署:每个服务可以独立开发、测试和部署
- 技术栈灵活:不同服务可以使用不同的技术栈
- 故障隔离:单个服务的故障不会影响整个系统
- 团队协作:不同团队可以负责不同的服务,提高开发效率
- 持续交付:支持服务的持续集成和持续部署
总结¶
MyApps 平台的微服务架构设计充分考虑了企业级应用的需求,通过微服务化实现了系统的高可用性、高可扩展性和灵活部署能力,为企业提供了稳定、高效的低代码开发平台。