系统集成模式介绍

在当今的mashup-driven(混搭驱动)的世界中,使用集成来提取、转换和利用数据是大多数软件工程师的首要任务。理解经过验证的集成模式很重要,它可以帮助简化集成过程和流程。

集成风格

在定义一个或多个不同源之间的集成时,必须回答“How”问题才能继续进行。换句话说,一个人必须决定怎么样进行集成。这通常称为集成样式。

远程过程调用

远程过程调用(Remote procedure invocation, RPI)是集成领域的先驱,是在计算早期实现API的首选方法。在这种方法中,提供者将允许外部进程向封闭的应用程序发出请求。外部调用者具有发出请求的规范,以及对响应的期望,但是所有逻辑都是使用黑盒方法进行的。在本例中,RPI是用于对目标系统执行某些操作的机制。

我们来看一个处理金融事务的应用程序,在RESTful API流行之前,供应商可能会提供一个允许从外部源发布事务的API。这个API是用RPI实现的。

开发人员将编写一个程序来收集所需的信息,然后使用RPI连接到应用程序。RPI/API请求的结果打包在响应中,该信息由调用应用程序处理。

共享的数据库

共享数据库集成样式利用数据库来连接两个或多个应用程序。因此,每个应用程序都将维护到共享数据库的连接,其中包含要集成的数据信息。

例如,在数据库的staging表中使用INSERT语句可能会触发一个存储过程,该存储过程将执行业务逻辑——最终为使用相同的共享数据库集成的其他应用程序更新数据库中的其他属性。

Messaging

消息收发集成式开始于面向服务的体系结构(SOA)实现,利用企业服务总线(ESB)作为消息本身的基础。

使用金融事务示例,自定义应用程序可以简单地在ESB上放置一条消息,请求发布某个事务。该系统提交消息,并依赖消息集成样式来处理剩余的任务。

在金融系统方面,放在总线上的消息触发和事件使用消息并根据消息的性质采取适当的操作。基于消息本身中使用的消息队列和/或元数据,金融系统理解需要执行的任务。

当完成时,金融系统可能会在总线上放置一个新的消息,这个消息可以被原始系统使用。在这种情况下,可能与附加到原始请求的惟一事务信息有关,以进行审计验证。

消息的概念

集成的信使主要基于消息传递的概念。这与其他技术驱动的解决方案没有什么不同,因为有些东西被用来将重要的信息传递给手边的解决方案。以RESTful api为例,courier通常是传递到POST请求或从GET请求返回的有效负载。

消息传递系统

消息传递概念的一个主要好处是,异步消息不需要两个系统同时在线和可用。一个系统可以将消息放置在ESB中,ESB可以立即由另一个系统处理,也可以在几个小时后按计划处理。无论哪种方式,都可以在不影响其他条件的情况下处理这两种情况。

消息系统使用通道(或队列)来组织和分类需要集成的信息。例如,如果源系统需要与财务系统和人力资源系统进行通信,消息将为每种消息类型使用不同的通道。

消息路由

消息路由的思想通常在更复杂的集成场景中实现,在到达目标目的地之前,可能需要消息跨多个通道路由。

在这种情况下,消息路由器可以提供帮助,允许将消息提交给专用组件,该组件将分析消息并使用业务逻辑根据消息本身的内容确定消息路由的位置。

在金融事务示例中,源系统只需要发布一个事务。如果公司维护多个金融系统,源系统可能无法详细了解哪个系统处理哪些事务。消息路由器将成为消息的来源,并将有适当的知识,以完成消息的传递到适当的渠道。

消息路由更深入,可以使用大量的模式来帮助路由过程。一些常见的模式包括:

消息过滤:允许根据消息中的属性过滤消息。

散集:允许同步消息同时发送到多个源。

消息聚合器:允许对来自多个源的消息进行处理,并将其推入到单个结果消息中,可能用于处理散点收集的结果。

消息转换

将不同的系统连接起来通常会暴露出给定的响应与源系统的预期响应或首选响应不匹配。消息转换是在两个系统之间执行必要的数据转换的一种机制。

使用金融系统示例,源系统可能希望用JSON发送数据,但金融系统希望使用XML。使用消息转换,传入的JSON数据将被分析和转换(即将)转换为XML,以准备通过SOAP web服务进行处理。这基本上是使用中的规范化程序集成模式。

一些已建立的消息转换模式包括:

Content Enricher:允许修改元数据,以满足目标系统的期望。

索赔检查:暂时简化消息,以便删除元数据,这些元数据在当时并不需要,但可以用于以后的处理。

内容过滤器:从消息中完全删除元数据,比上面提到的索赔检查方法更持久。

系统管理

基于集成样式和给定消息的流程和处理,集成的管理是解决方案的核心。

控制总线

控制总线模式是集成系统中的管理层。正如预期的那样,控制总线使用集成系统实现的相同概念。

当管理层需要将用户报告给系统管理员时,使用集成系统捕获的消息数据来报告状态或遇到的任何已知问题。

消息存储

管理任何系统通常都需要一定程度的历史信息或度量。在不影响消息本身的瞬态性质的情况下检查消息的度量标准的挑战。消息存储模式通过向消息存储发送消息的副本来满足这一需求。一旦消息的副本存储在消息存储库中,就可以维护必要的指标并将其传递给控制总线以进行处理和报告。

智能代理

消息通常流经一个固定的输出通道。但是,在某些情况下,组件需要将回复消息发送回原始请求中指定的通道。当这种需求出现时,可以使用智能代理模式。

智能代理包括拦截消息的逻辑,以便捕获发件人指定的返回地址。一旦处理完成,智能代理将用接收到原始请求时捕获的地址替换固定的输出通道目的地。

结论

保持对集成风格、消息概念和系统管理模式的理解,可以帮助指导集成开发人员使用跨任何集成项目(无论行业如何)转换的实践。这样做将减少作为额外资源支持和维护现有集成项目的过渡时间。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

Apache Kafka:下一代分布式消息系统

Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在...

1001
来自专栏ytkah

认证服务号可通过模板消息向用户发送重要的服务通知

  2014年08月14日微信团队向具有支付权限的公众号开放了模板消息,使用效果良好,现扩大模板消息开放范围,向认证后的服务号进行开放。所有服务号都可以在功能-...

3345
来自专栏MySQL

10款常见MySQL高可用方案选型解读

关于对高可用的分级我们暂不做详细的讨论,这里只讨论常用高可用方案的优缺点以及选型。

1K10
来自专栏自由而无用的灵魂的碎碎念

老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?

先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变。官方只支持到windows7,并且官方说明该型号不在官方...

1031
来自专栏FreeBuf

30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap

近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装。Po...

24310
来自专栏老付的网络博客

jekyll如何使用中文路径

最近在使用jekyll在本地预览自己写的博客无法正常打开,而提交到github上却可以正常解析。看了一下发现是文件写的博客有什么变化,原来是因为博客的markd...

2093
来自专栏Debian社区

Parsix GNU/Linux 项目宣布即将终止

基于 Debian 的 Parsix 发行版已经宣布将会在 Debian Stretch 发布六个月后终止。官方表示 Parsix GNU/Linux 8.15...

1012
来自专栏蛋未明的专栏

十个免费的 Web 压力测试工具(转)

3513
来自专栏tkokof 的技术,小趣及杂念

疑难杂症又一记

下了 OGRE 的 1.10.11 版本,使用 CMake 生成了相应的工程文件,遂而编译源码和示例,一切都挺顺利,但是当尝试 Debug 模式下执行 Samp...

631
来自专栏JAVA同学会

Kafka 简介

在Kafka中,客户端和服务器之间的通信是通过一种简单的,高性能的,语言不可知的TCP协议完成的。

3542

扫码关注云+社区

领取腾讯云代金券