一个全栈式的应用集成平台,打破“信息孤岛”

源宝导读:随着企业数字化进程的逐渐深入,企业存在大量的异构系统,各个系统之间信息传输、资源利用困难。本文将介绍明源云ERP为了打破这种“信息孤岛”,而进行的思考与实践。


一、前言

    随着企业信息化进程的逐步深入,互联网技术的发展和分布式系统应用的日益广泛,直接导致大量异构系统的存在,这些系统往往各自独立、封闭运行,相互之间不存在或很少存在数据的交互,由于这种应用分割,多个系统之间往往存在数据的冗余以及功能的重叠,各个系统之间信息传输、资源利用困难,形成所谓的“信息孤岛”。


二、企业应用集成挑战

    要打破“信息孤岛”,企业就必须突破企业应用集成几个基本挑战:

  1. 可靠性。集成解决方案必须通过网络把数据从一个终端传送到另一个终端上。与运行在同一个终端上的进程相比,分布式计算必须应对更多可能出现的问题。很多情况下,若需要集成的两个系统位于不同的环境下,它们之间的数据必须通过网线、局域网、路由器、交换机、公共网络进行传输。其中每个环节都会带来延迟或中断。

  2. 高性能。通过网络发送数据要比执行一个本地方法调用慢多个数量级。如果使用设计单一应用的方法设计一个分布式解决方案,可能会对性能造成灾难性的影响

  3. 异构适配能力。集成解决方案需要在使用不同的编程语言、不同平台和不同数据格式、不同通信协议的系统间传递信息。因此,集成方案要能与这些不同的技术打交道。

  4. 低耦合。系统会随着时间改变,一个集成解决方案必须跟上与之相关连接的系统变化的步伐,系统间使用松耦合方式连接,尽可能减少系统之间的依赖关系。


三、行业常用解决方法

     应用系统集成的解决方案有很多,但最常见有API调用、数据库同步、文件传输、消息(事件)传递:

  1. API调用:一个系统开放其部分API,使得其他系统能够远程访问这些API。它们之间的通信是实时、同步的。

  2. 数据库同步:多个系统在数据库层面建立数据同步调度作业,实现数据拷贝与复制。

  3. 文件传输:一个系统写文件,之后另一个系统读这个文件。为此,系统之间需要协商文件名、文件位置、文件格式、文件读写的时间以及谁负责删除这个文件。

  4. 消息(事件)传递:一个系统向公共消息通道中发送一个消息(事件),其他可以在之后某个时间从通道获得这个消息(事件)。系统之间必须协商建立通道以及消息(事件)的格式,这种通信是异步的。

    尽管上述四种方案从本质上解决的是相同的问题,但是每种方案均有其独特的优点和不足(不追述,可参考企业应用集成模式)。实际上,企业应用集成往往需要针对不同的系统、供应商、集成场景选择采用不同的集成方案,使得每个集成点都能充分利用最合适方案。

四、明源云应用集成平台(简称:MIP)

    明源云应用集成平台(简称:MIP)是一个全栈式的应用集成平台,提供轻量化的API、事件、消息、数据集成能力,帮助您快速、简单的构建高可靠、高性能、低延迟的应用集成解决方案,实现企业内云上云下,不同厂商、不同架构、不同协议的应用互联互通,打破“信息孤岛”,支撑企业数字化转型。

MIP总体架构示意图

    MIP主要由连接中心、接口中心、事件中心、监控中心、管理控制台五大组件构成,通过五大组件服务组合,可以帮助企业高效构建可知、可控的企业应用集成解决方案。

五、连接中心

    连接中心由服务注册中心和连接器管理两部分组成,其中服务注册中心为您提供服务注册与发现、健康检查等服务治理能力。连接器管理则为您提供服务元数据管理、服务质量管理、服务适配能力,以便满足企业应用集成中不同厂商、不同应用、不同协议的集成适配。

    连接中心提供如下关键特性:

  • 服务注册与发现:服务提供者可以通过手工注册、API注册、客户端注册三种方式将服务信息注册到服务注册中心。同时服务消费者可以通过服务注册中心提供的服务发现API获取可用的服务提供。

  • 健康检查:服务注册中心根据连接器配置中设置的健康检查地址和频率对服务进行定期对健康检查,以便保证及时发现应用层问题,及时摘除异常节点,保证服务正常运行。

  • 服务元数据管理:对服务本身的配置信息和服务的API、事件等信息进行维护管理,最终提供给接口中心、事件中心的应用集成场景中使用。

  • 服务质量管理:连接器在调用后端服务时,根据连接器配置中设置的超时、重试、熔断的服务质量控制规则对后端服务进行安全调用的保护。

  • 服务适配:内置了常见的http、webservice、sql service、my sql、rabitt mq等通用基础连接器,开箱即用,满足80%的应用集成场景适配,同时连接中心还提炼了一套连接器插件框架模型,支持在基础连接器基础上进行插件化扩展,开发面向不同厂商的应用级连接器,例如:泛微、用友、金蝶等。


六、接口中心

    接口中心可以为您提供高性能、高可用、高安全的API托管服务,帮助您轻松构建、管理和部署API。借助接口中心,可以简单、快速、低成本、低风险地实现应用系统集成、业务能力开放。

    如果您作为API提供者(开发者),您可以将成熟的业务能力(如服务、数据等)作为后端服务,在接口中心中开放API,并通过线下方式提供给API调用者使用,实现业务能力开放。

    如果您作为API调用者(消费者),您可以获取并调用API提供者在API网关开放的API,减少开发时间与成本。

    如果您作为API管理运维人员,您可以通过授权、流控、监控告警等策略保障企业的API。

接口中心架构示意图

接口中心提供如下关键特性:

  • API生命周期管理:括API的创建、发布、下线和删除的完整生命周期管理功能。通过API生命周期管理功能,您可以快速、高效的开放成熟的业务能力。

  • 版本管理:API可以发布到网关运行环境,如果您需要再次发布此API到之前已发布的环境,那么此次的发布版本将立即覆盖之前的版本。API网关支持查看API发布历史(如版本、发布说明、发布时间和发布环境),并支持回滚到任一API历史版本,以便满足业务版本升级、回滚等需求。

  • 便捷调试工具:提供页面调试工具,您可以使用该工具添加HTTP头部参数与body体参数,对API进行调试,简化API开发,降低API的开发维护成本。

  • 流量控:可实施API的请求频率、应用的请求频率的管控,用于保障后端服务的稳定运行,流量控制的时间单位可以是秒、分钟、小时或天。

  • 请求校验:支持参数类型、参数值(范围、枚举、正则、Json Schema)校验,无效校验会被 API 网关直接拒绝,以减少无效请求对后端造成的资源浪费,大幅降低后端服务的处理成本。

  • 数据转换:通过配置映射规则,实现前、后端数据翻译。支持前端请求的数据转换。支持返回结果的数据转换。

  • 访问控制:访问控制策略是API网关提供的API安全防护组件之一,主要用来控制访问API的IP地址,您可以通过设置IP地址的黑名单来拒绝某个IP地址访问API。

  • API鉴权:统一发放签名密钥(由一对Key和Secret组成),签名密钥需要绑定到API才能生效。签名密钥用于后端服务验证API网关的身份,在API网关请求后端服务时,保障后端服务的安全。


七、事件中心

    事件中心为您提供低耦合、准实时、高可靠的数据或消息传输服务。

  • 低耦合:架构采用事件订阅与分发模式,解耦开生产者和消费,订阅过程无需代码侵入,通过统一配置方式实现,实现数据采集与分发。

  • 准实时:通过应用领域事件监听、数据库CDC机制、队列监听,做到准实时的数据同步,数据从源端产生后,以极低的延迟被采集、加工,并写入目的地,整个过程没有明显的处理批次边界。

  • 高可靠:平台底层采用Rabitt MQ作为数据传递通道,保障数据传递的可靠性;三级重试,临时性重试、定时重试、手工重试,提升数据传递的可靠性。

事件中心架构示意图

    事件中心提供如下关键特性:

  • 事件管理:可以通过创建事件源和事件订阅者,来实现事件的订阅与发布,最终实现数据或消息在应用之间进行传递。同时也可以在事件创建后进行管理维护操作,例如:删除事件、修改事件、发布事件、取消发布事件、增加订阅者、删除订阅者、修改订阅者等。

  • 调度管理:可以查询到各个事件对应的任务调度的运行状态,为排查生产问题提供有效数据支持.

  • 异常管理:事件消费时产生业务异常,事件中心会将对应的异常事件发送到异常管理模块,异常管理模块可以通过自定义的自动重试规则做定期重试,当自动重试仍然无效的情况下,也可以人工重试对异常数据做干预,提高异常数据的修复效率。

  • 轨迹管理:支持追踪事件生产与消费的完整链路信息,获取任一事件的当前状态,为排查生产问题提供有效数据支持。

八、监控中心

    监控中心通过客户端帮助您跟踪采集连接中心、接口中心、事件中心、MIP客户端各个组件的运行状态、日志、异常、性能等信息(遵循OpenTracing标准),客户端采集到运行信息后发送到监控中心服务端,由服务端对信息做加工与分析,加工后的信息能为您提供集成调用链查询和诊断、性能分析、服务依赖分析、异常告警等服务,这些服务为您进行生产问题排查提供有效数据支持。

监控中心架构示意图

  • 调用链查询和诊断:追踪分布式架构中的所有服务应用的用户请求,并将它们汇总成分布式调用链。

  • 性能分析:通过追踪整个应用程序的用户请求,来实时汇总组成应用程序的单个服务和资源性能指标,帮助您诊断性能瓶颈。

  • 服务依赖分析:形成所有分布式服务应用的调用依赖关系。

  • 告警管理:支持自定义告警规则,并且在告警达到条件后通过邮件、移动端等设备发送告警内容给运维人员。

总结

    本次主要分享的是明源集成平台(MIP)的定位、核心架构、功能特征以及实现效果,后续还会总结分享平台里面落地实现的关键技术点。

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

作者简介

王同学: 产品经理,目前负责ERP集成平台相关规划与设计工作。

也许您还想看

MIP服务发现的高可用架构实践

基于消息的高稳定集成架构方案

研发协同平台持续集成2.0架构演进

【2019总结篇】谈谈数字化时代,ERP如何坐稳数字化底座

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【朝夕技术专刊】Core3.1WebApi_Filter多种注册方式支持依赖注入

欢迎大家阅读《朝夕Net社区技术专刊》第5期我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!01PARTCoreFilter多种注册方式在上一…

SQL(一)- 数据库介绍与基础操作

数据库介绍 一、常用的数据库分为两大类: 关系型数据库非关系型数据库(NoSql) 关系型数据库 概念:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 关系型数据库的优势&am…

opencv +数字识别

现在很多场景需要使用的数字识别,比如银行卡识别,以及车牌识别等,在AI领域有很多图像识别算法,大多是居于opencv 或者谷歌开源的tesseract 识别.由于公司业务需要,需要开发一个客户端程序,同时需要在xp这种…

SQL(二)- 基础查询语句

简单的查询语句(DQL) 下面我们正式来学习查询语句,下面所有查询用到的表均为前面提到的三张表: 员工表中的数据: 部门表中的数据: 薪资表中的数据: 基本查询语句的语法: sele…

SQL(三)- 连接查询

连接查询概念 一、什么是连接查询? 在实际开发中,大部分的情况下都不是从单张表中查询数据,一般都是多张表联合查询最终取出最终结果。在实际再发中,一般一个业务都会对应多张表,比如学生和班级,最起码两…

远程办公也可以很高效

题图:我的站立办公环境因为疫情,全中国人民都过了一个难忘的春节,而身在武汉的我,更是没有出家门半步,坚决做到不过国家添乱。从开始的2月14到后来的2月20日,再到现在的3月10日,官方发布的复工日…

SQL(四) - 子查询和union以及limit分页

子查询概念 什么是子查询?子查询都可以出现在哪里? select语句当中嵌套select语句,被嵌套的select语句是子查询。 子查询可以出现在哪里? select..(select). from..(select). where..(select).1.where子句中使用子查询 案例&a…

ASP.NET Core中的Http缓存

ASP.NET Core中的Http缓存Http响应缓存可减少客户端或代理对 web服务器发出的请求数。响应缓存还减少了 web服务器生成响应所需的工作量。响应缓存由 Http请求中的 header控制。而 ASP.NETCore对其都有相应的实现,并不需要了解里面的工作细节,即可对其进…

SQL(五) - 表的创建以及操作

创建表 建表语句的语法格式: create table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型,....);MySql常用数据类型 BLOB 二进制大对象(存储图片、视频等流媒体信息) Binary Large OBject (对应java中的Object&…

Istio 2020 年 Roadmap——一切为了商用

原文地址:https://preliminary.istio.io/zh/blog/2020/tradewinds-2020/,由 ServiceMesher 社区翻译。Istio 解决了人们在运行微服务时遇到的实际问题。甚至早期的预发行版本就已经可以帮助用户诊断其体系架构中的延迟,提高服务的可靠性以及透…

SQL(七) - 事务、索引、视图

事务(Transaction) 3.1、什么是事务? 一个事务是一个完整的业务逻辑单元,不可再分。 比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句: update t_act set balance balan…

如何编写高性能的C#代码(二)

使用Benchmark.NET对C# 代码进行基准测试的简介在我以前的文章中[10],我介绍了该系列文章[11],在其中我将分享我的经验,同时了解C#和.NET Core(corefx)框架的新性能。在本文中,我想着重于对现有…

如何编写高性能的C#代码(一)

原文来自互联网,由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权,请联系小编,小编将在24小时内删除。作者介绍:史蒂夫戈登(Steve Gordon)是Microsoft MVP,Pluralsight的作者,…

从Java转向.NET/C#,Are You OK?

最近由于项目变动,需要用.NET/C#做开发,经过一段时间的学习和培训,对这个技术栈有了一定的理解。大家可能都知道Java和.NET/C#很像,这里粗略的把两者做一个对比,希望对感兴趣的童鞋有所帮助。如果现在有人问我&#xf…

树的节点值之和

题目背景 墨家家主有棵树。 题目描述 给定一个保存树节点信息的数据结构,它包含了树节点唯一的 id ,树节点值 和 直系子节点的 id 。 比如,树节点1是树节点2的父节点,树节点2是树节点3的父节点。他们相应的树节点值为 9 , 4 , …

.NET Core开发实战(第21课:中间件:掌控请求处理过程的关键)--学习笔记(上)...

21 | 中间件:掌控请求处理过程的关键这一节讲解一下如何通过中间件来管理请求处理过程中间件工作原理next 表示后面有一个委托,每一层每一层套下去可以在任意的中间件来决定在后面的中间件之前执行什么,或者说在所有中间件执行完之后执行什么…

简单的二叉树创建与遍历

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后&…

疫情期间,千万级系统宕机N次,老板撂下狠话:没法把性提升10倍,全员解雇!...

性能调优整体思路作为一名团队技术核心,如何让系统跑得通、跑得稳、跑得快是必然会面对的场景。性能分析是一个大课题,不同的架构、不同的应用场景、不同的程序语言分析的方法若有差异,抽象一下大致分为两类:自底向上:…

Anaconda创建python虚拟环境

在创建虚拟环境之前首先我们需要打开命令终端:Win R 输入cmd 或者直接打开Anaconda Prompt(Anaconda) pycharm下载历史版本地址:https://www.jetbrains.com/pycharm/download/other.html Anaconda下载历史版本地址:ht…

[蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ”夺宝奇兵”从山下出发,到达山顶,如何选路才能得到最多的珠宝呢?在上图所示例子中,按照5-> 7-> 8-&g…