源宝导读:在明源云“天际”PaaS平台之上,可以构建、部署和运行多个业务应用,并支持多应用分离部署,以提升系统整体的性能和稳定性。本文将介绍多应用自集成解决方案以及相关的实现细节。

一、背景

1.1、业务场景

    在明源云“天际”PaaS平台之上,可以构建、运行多个业务应用。这些业务应用可以集中部署在同一站点和数据库,也可以按应用分开部署多个站点与数据库,可大幅提升业务应用的运行性能与稳定性。部署模式如下示意图:

应用集成模块架构图 应用集成方案_大数据

1.2、业务应用分开部署后带来的问题

  • 用户需要分开单独访问应用站点,访问每个业务应用时都需要登陆,操作繁琐;
  • 每个业务应用中都存在系统管理,但管理员希望只设置一遍,在各个应用站点生效;
  • 业务应用之间共享的公共配置(例如运行设置、安全设置、外观设置等),需要在每个应用中重复配置;
  • 每个业务应用都需要的公共数据(例如图表数据、业务参数配置、桌面部件数据等),互相隔离无法同步。

二、解决方案

    由于这些业务应用都基于“天际”PaaS平台构建和运行,可以通过底层平台强大能力,打通这些应用“孤岛”,形成一个“去中心化”的“自集成”架构。

自集成架构的能力包含三个方面:

  • 公共数据集成;
  • 应用接口集成;
  • 应用事件集成。

公共数据集成能力包括:

  • 系统配置集中管理,解决应用之间配置无法共享问题;
  • 登录导航集成统一,解决用户重复登录,访问入口分散问题;
  • 基础数据自动集成,解决各个应用的基础功能同步一致;
  • 系统管理统一入口,解决系统管理员重复设置的问题。

三、实现原理

3.1、系统配置集中管理

应用集成模块架构图 应用集成方案_应用集成模块架构图_02

  • 实现难点:如何保证集中式的配置管理不会引发单点故障。
  • 设计方案:在平台逻辑中缓存这些配置信息,并且通过站点标识来识别当前站点。比如我们成本系统,在成本系统的web.config 中配置对应的站点标识erp60-cbxt ,那么当前站点以独立的成本系统运行,并且可以识别主站点和其他站点。

3.2、登录导航集成统一

3.2.1、集成其他应用的导航

应用集成模块架构图 应用集成方案_分布式_03

导航集成的实现原理:

应用集成模块架构图 应用集成方案_应用集成模块架构图_04

   通过集中配置,我们能获取到其他应用站点地址,然后通过接口获取相应的导航数据,最终合并展示在当前应用站点。

  • 实现难点:如何保证获取的数据性能以及稳定性。
  • 设计方案:
  • 获取的集成的导航基础数据做全局缓存,所有的用户都可以获取;
  • 针对用户个人导航数据在登录也做二级缓存;
  • 利用二级缓存,可以保证在其他应用站点不可用时,当前应用站点不受影响。

3.2.1、多应用之间实现单点登录

    当用户访问任意应用的站点时,如果没有登录,都会自动跳转到主应用站点进行登录。

应用集成模块架构图 应用集成方案_大数据_05

    跨应用的单点登录身份认证原理图:

应用集成模块架构图 应用集成方案_应用集成模块架构图_06

  • 实现难点:如何保证主应用站异常时,其他应用站点能登录正常。
  • 设计方案:
  • 保证所有应用站点的登录功能,必须访问同一个数据库,保证登录校验结果一致;
  • 通过多站更新机制,保证所有应用站点的平台版本一致,进而保证所有应用站点的登录功能一致。

3.3、基础数据自动集成

    类似用户桌面部件、图表数据集、业务参数配置等基础数据,平台底层会通过内部接口,将各个应用中的本地数据,获取到主应用站点。

应用集成模块架构图 应用集成方案_java_07

3.4、系统管理统一入口

    系统管理应用属于平台底层功能应用,每个业务应用站点都有一套,应用自集成后,整个自集成环境看做一个完整的ERP系统,所以平台必须保证只有一个系统管理应用。

  • 实现难点:如何保证在一个系统管理上面配置所有系统的权限。
  • 设计方案:
  • 主应用站点通过自集成接口获取所有子系统应用和模块的定义数据时,只获取当前应用自己的定义数据,保证最后的权限数据不重复;
  • 在权限接口上层设置依赖级别,保证在整个请求链路包括跨站点的链路的依赖级别一致;

四、总结

我们的应用自集成方案优势:

  • 开箱即用:用户部署好各个应用站点,通过简单的配置步骤,就可以实现应用自集成的部署环境;
  • 对业务应用侵入小:平台从系统配置、基础数据、登录导航、接口事件等方面从底层实现了打通,对上层的应用基本是透明的,非跨应用的业务场景无需做任何改造,而跨应用的业务场景的影响也非常小。

     公共数据自集成,是应用接口、事件集成的基础。因为公共数据的打通,才保证了跨应用接口调用时,找到正确的应用站点;应用事件触发时,才能正确通知到所有订阅了事件的业务应用。后面的文章中,我们将继续分享应用接口自集成和应用事件自集成的设计方案与实践。

------ END ------

作者简介

蔡同学: 开发SM,目前负责ERP建模平台的设计与开发工作。