读 | 企业集成模式 – 问题框架

个人博客

  • 读 | 企业集成模式 - 问题框架
  • 读 | 企业集成模式 - 消息系统
  • 读 | 企业集成模式 - 消息通道
  • 读 | 企业集成模式 - 消息构造
  • 读 | 企业集成模式 - 消息路由
  • 读 | 企业集成模式 - 消息转换
  • 读 | 企业集成模式 - 消息端点

在这个日益数字化的世界,不管是新兴的 IT 企业还是传统企业,都会用到第三方的软件系统,比如任何一家公司都需要一套 ERP 系统来管理自己的人财物,在此之外通常还需要另一套系统来支撑自家的主营业务,如果有柜台,还需要一套和柜台搭配的系统,如果支持远程,那就得加上一个 Web 站点系统,随着移动互联网的兴起,为了不落后于竞争对手,App 应用也不可或缺......随着企业规模的增长、服务用户遍布全球、够长寿、企业往集团化发展、企业分拆合并、甚至技术世界发生重要变迁,都将导致企业内的应用生态更趋复杂。而这一切,还没有考虑和外部世界的互联,如支付必须和银行对接,获客也许是通过微信、抖音来引流,对外通知业务必须和移动运营商对接,营业收入必须向税务机关报税等等。

说了这么多,无非就想说明现代的任何一家企业,必然会需要很多系统。大一统系统显然是不存在的,一方面是各个系统是在企业的不同建设周期引入的,另一方面大一统的系统也不符合软件设计原则——技术、领域、复杂度、运维等。

这就引出一个问题:需要将这些系统集成起来

集成类型

这里说的集成是什么意思呢 ?—— 连接计算机系统、公司或人。

若从以上的宽泛定义出发,可以列出集成面临的挑战:

  • 影响组织、技术架构;
  • 对业务产生深远影响;
  • 集成方案人员对各系统只有有限控制能力;
  • 集成方案领域缺乏统一的标准;
  • 已有标准的各种实现之间可能缺乏互操作性;
  • 运维比较困难,因为牵涉的技术广,且具有分式布特性。

常见的集成类型有 6 种:

  • 信息门户,对各系统的信息进行集中展示,比如一般会划分为多个区域,进一步可以在不同的区域之间提供有限的交互 ;
  • 数据复制,不同的系统虽然各有自己的持久存储方案,但有些数据是共享的,比如人员/客户信息,于是就可以通过在持久存储方案之间进行数据复制来进行集成;
  • 共享的业务功能,和共享数据相对应的是共享功能,比如对外发短信是多个系统可以共享的功能,共享的功能也成为了共享的服务;
  • 面向服务的体系结构,一旦集成了一些服务,就需要进行管理,服务目录+协商通信就构成了 SOA 体系;
  • 分布式的业务过程,一个业务功能可能涉及多个系统,这也是之所以去做集成的原因所在;
  • 企业到企业(B2B)的集成,如人脸识别、身份证校验都需要调用外部的服务,必须和外部做集成。

在软件设计领域,松耦合一直是设计追求的重要目标之一,在系统集成领域也是如此。松耦合的基本核心是在协作双方(组件、应用、服务、程序、用户)交换信息时尽量减少对对方做出的假设。假设越多,通信效率越高,但对服务的中断或变化耐受度越低——因为耦合得太紧了。

一个典型的紧耦合例子是调用本地方法,其中涉及的假设大致包括了如下几个:

  • 调用方和被调用方运行在同一个进程中;
  • 双方采用相同的语言编写(或者至少使用相同的中间语言或字节码);
  • 调用方法必须准确提供所需的参数,参数个数和类型都必须符合约定;
  • 调用是即时的;
  • 方法调用结束后自动执行后面的语句;
  • 因为调用是即时的,不必考虑第三方窃听这样的安全问题;

这些假设开发人员平时一般不会主动意识到,在现今分布式跨网络进程协作的背景下,尤其需要做些相应的思考。

集成方式

可以从几个角度来评价以支撑集成方案决策:

  • 应用耦合,各集成应用之间尽量不要相互影响;
  • 干扰性,尽量减少应用集成进来所需要做的修改;
  • 技术选择,不同的集成方案需要的软硬件类型、数量不同,涉及采购、技术依赖、运维等,做好评估;
  • 数据格式,协商好交换数据的格式,如果应用改不了,使用中间转换器;
  • 数据的时间特性,缩短数据共享时间,共享数据一旦就绪就通知相关方;
  • 数据或功能,应用之间可能允许共享数据以及功能,共享功能对集成效果有很大影响;
  • 远程通信,一般会采用异步,比同步方案更复杂;
  • 可靠性,远程通信比本地调用可靠性低。

具体的集成方式有 4 种:文件传输、共享数据库、远程过程调用、消息传递。

文件传输

最简单的集成方式,很多企业的不同系统之间就是通过 dbf、xml 等文件形式来共享数据,以达到集成的效果。

缺点一是缺乏时间特性,比如需要定时任务在固定时间点才生成文件,在此之前,两个系统之间的数据是不一致的,可能引发系统错误,或者影响用户体验;缺点二是对数据格式没有太强的约束,同样的数据字段在不同系统中的语义可能不同,影响对数据的分析。

共享数据库

通过共享数据库,字段的格式和语义得到了严格的约束。缺点是干系方太多,可能一开始的数据库模式设计就难产,后期也问题多多,不推荐。

远程过程调用

通过把数据封装起来,各应用维护自己的数据,保证了自身数据的完整性。缺点是引入异步编程模式,开发人员在开发时容易忽略可靠性、时序这些问题。

消息传递

异步消息传递,发送一个消息时不需要通信双方同时在线或都准备好,有点中央对手方的意思。作者认为是当前应用集成的最佳方式,利于解耦,缺点是复杂度增加,需要考虑如何传输数据包、如何确定消息发送地址、确定需要使用的数据格式、如何和消息系统连接等问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值