Administrator
发布于 2025-05-09 / 2 阅读
0
0

数据集成

2020年6月,我参加了风险洞察系统的开发,在该项目中我担任系统架构师。该系统为民警提供人员在辖区内的实时动态,为辖区提供安保全方位的软件支撑。本文结合该项目的实践,以风险洞察系统为例,主要讨论企业集成架构技术在项目中的具体应用。应用集成的集成适配器模式解决了对接多个系统数据格式不一致的问题,使得接口和系统预警数据进行适配及映射。使用集成信使模式解决了预警的问题,通过消息中间件的方式,以消息中间件为信使,多个系统对接中间件,减少多个系统的依赖。混合集成模式:客户通过基于web浏览器的客户端实现对业务应用服务器的访问,请求到达nginx负载,有nginx转发服务请求可路由到后端,由后端的业务来执行,最终项目成功上线,稳定运行。

       随着节假日和重大活动的人流量增多,派出所需要在人流量大的区域进行对人员、车辆的管控,掌握区域内人员及车辆的实时轨迹,对于标签人员进行对应的预案和措施管理,为区域提供保障。我司此承建了该项目的开发,风险洞察项目,能够对标签人员关注工作对象进入辖区及时发现、在辖区内风险行为及时关注、离开辖区及时掌握去向的目标。深度挖掘辖区内未掌握潜在工作对象,智能分析潜在风险隐患,风险线索深度研判,进而为民警提供情报线索,使民警能够精准的掌握辖区内所在对象的轨迹,对于不同的标签人员进行相应的预案,执行对应的措施,使辖区内的安保得到有效的支撑。我在项目中担任架构师,负责系统的架构以及中间件的选型,项目采用分布式的开发方式,可分为安保沙盘子系统、区域管控子系统、管控对象子系统、风险预警子系统、线索研判子系统、全息档案子系统、情行闭环子系统、系统保障子系统。整个项目共耗时6个月,2020年12月顺利通过验收

企业集成架构设计技术方案按问题类型可分为数据集成、应用集成、企业集成。数据集成主要为了解决不同应用和系统的数据共享交换需求,具体包括共享信息管理、共享模型管理和数据操作管理三个部分。数据集成的方式主要有三种模式:数据联邦、数据复制和基于接口的数据集成应用集成:指两个或多个应用系统根据业务逻辑的需要而进行的功能之间的相互调用和户操作。应用集成包括适配器模式、集成信使模式、集成面板和集成代理4种,每种应用集成模式都是对具有业务功能依赖的多个应用之间互操作实现方法的总结。企业集成,企业应用软件系统从功能逻辑上可以分为表示、业务、逻辑和数据三个层次。该集成可分为前端集成模式、后端集成模式、混合集成模式。以下将重点描述数据集成、应用集成、企业集成的实施过程和效果。

应用集成适配器模式:在应用系统提供的API的基础上,通过适配器完成不同的系统间数据格式及访问方式的转换与映射,进而实现不同的系统之间业务功能及业务数据的集成。

通过适配器完成不同的系统间数据格式及访问方式的转换与映射,进而实现不同业务之间业务功能及业务数据的集成。系统采用的是分布式架构,使用resttemplate远程调用与各个系统进行数据传输,其中有个业务功能是需要展示单位信息和单位所属的人员信息,由于系统架构中有安全机制,把人员的信息和单位信息做了分离,但是业务需要展示某个单位下的人员。经过分析以后,针对以上需求,需要调用两个系统的数据,然后进行数据的组装和映射;具体做法如下:开发一个集成单位信息和人员信息的功能,将此功能作为适配器以供客户端调用,使用resttemplate调用单位信息,获取到单位信息的ID以后,在根据单位的ID调用人员信息,这样就获取到所属单位下的人员信息,根据前端需要渲染的数据格式,在把单位信息和人员信息进行业务逻辑处理,处理完成以后把数据映射到javaBea上,返给前端,以供前端进行数据渲染,通过适配器模式满足了不同系统的数据集成和映射,若此功能再有别的系统数据集成,可直接在适配器模块里更改,也提高了系统的可维护性。

信使模式:每个应用只需要建立与集成信使之间的接口连接,就可以实现与所有集成信使关联的应用系统交互。

在预警功能中需要接入各个厂商传输的数据,需要接入的厂商有28家,每个厂商的数据格式不一样,数据流量经过计算平均一天五百多万的人车流量,这样的数据接入起来工作量及大也不容易扩展,系统性能也会降低。经分析,信使集成模式可以有效的解决这一场景,系统之间的通信和数据交换通过消息中间件Rabbitmq来实现,28个厂家只需要和消息队列建立连接,就可以现实和各个系统的交互。具体实施如下:首先将预警所需要的数据格式以及属性抽象成统一的,其次在消息队列里创建一个topic,把topic设置为通配符模式,通配符模式以后缀关键字来匹配,前面为厂商的缩写,后缀为topic的名称,每个厂商通过连接RabbitMq后订阅预警topic,然后把数据传入到消息队列中,预警功能模块监听Topic后接收到数据,进行业务逻辑处理。通过这种消息中间件的模式以后,大大减少了接口的连接数量,同时采用了这种信使模式作为消息交流的中介,将应用之间的交互对通信服务能力的依赖程度降到最低,当需求发生变化时,只需要修改消息中间件相应的部分,从而降低系统维护工作量和系统升级的难度,同时消息中间件的吞吐量也比较高,更符合业务。

  混合集成模式:该模式是前后端集成模式的组合,客户通过基于web浏览器的客户端实现对业务应用服务器的访问,服务请求可路由到后端,由后端的业务来执行。

  风险预警子系统需要提供给用户查询预警人员信息的功能,该功能要显示预警人员的轨迹信息和档案信息,要展示在同一个页面上。基于混合集成模式,用户通过浏览器访问预警子系统查询预警信息,查询的请求发送给后端,由后端服务处理数据逻辑,返会给前端,前端获取数据后渲染预警的信息。具体做法如下:前后端使用Josn格式进行对数据的交互,前端采用的是vue技术框架,使用axios技术对后台服务的数据交互,用Elementui来进行数据的渲染。当用户点击人员信息查询时,请求发给后端,后端接收到前端的请求以后查询预警人员的信息以及预警人员的轨迹信息和档案信息,然后映射到javaBean中,将数据返回到前端,前端把预警人员的相关信息进行渲染,使用该模式满足了功能需求也展示了多个数据源的完整性。

项目于2020年12月完成验收,运行期间系统很稳定,系统支撑了上百个活动,对民警的日常活动做出了有效的支撑,也抓捕了多名违法人员。期间由于区域人流量的增加,消息队列的数据越来越来越多导致消息挤压,消费者速度处理跟不上问题,后来对消息队列中间件增加了集群的数量分担消息的挤压,同时对代码进行优化,使用多线程对业务进行优化处理,经过调优以后,项目至今还未有重大的生产事故,系统的维护量是可控的,系统运行也比较稳定,系统成功的上线离不开团队默契的配合,也是大家一致努力的成果。

不足之处,用户在使用时发现有的地方有预警有的地方没有预警,需要对没有预警的地方进行分析,根据配置规则、以及区域范围的大小和各个厂商数据的推送来分析统计,从每个环节考虑没有预警的问题,针对此类问题,可以根据接入的消息队列数据和预警规则比对的每一个步骤,把比对步骤不预警的原因当作日志记录保存到数据库种,然后对不预警的数据进行归类。提供一个可视化界面,把任务和不预警日志做关联。提供给用查询不预警的原因。在容灾方面有待改善,可采用服务器冗余和心跳监测等策略,在一台服务器暂停的情况下,另一台服务接管,以增加可用性。


评论