目录

金融业开源软件研究评测一分布式消息中间件评测模型

目录

金融业开源软件研究评测(一)——分布式消息中间件评测模型

1 编写目的

目前,国内外许多大型企业在建设信息系统的过程中,基本都是基于开源软件进行建设。创新业务的快速迭代和突发增长,使得金融机构正逐步将系统架构从集中式转向分布式的云计算和大数据,开源软件成为了金融企业的首要选择。

金融企业逐步应用开源软件已经成为一种趋势,除了保障信息系统和关键技术自主可控,金融企业也需要专业化的开源软件评测体系,加强开源软件应用的风险管控能力。在此基础上,结合自身需求实现个性化定制,提高核心技术的自主能力。

消息中间件是分布式系统中完成消息发送和接收的基础组件,常用开源消息中间件包括Kafka、RabbitMQ等。消息中间件通过利用高效可靠的消息传递机制,进行平台无关的数据信息交换,实现分布式系统的集成。同时,在分布式的环境下通过异步通讯降低系统间的耦合度,提高系统的稳定性、吞吐率和可用性。

围绕金融行业的实际业务需要,基于金融行业开源软件整体评测模型,结合开源软件特性,我们建立了针对金融行业的分布式消息中间件评测模型。通过该模型得出消息中间件应用于金融行业时需要重点关注的指标,帮助金融行业的企业或机构对开源分布式消息中间件软件的选型、质量检测、成熟度评估以及软件供应商的能力等进行评估。

2 评测指标

2.1 开源许可证

开源软件许可证是开源软件的授权条款,通过授权条款保留一部分权利允许用户学习、修改、增进提高软件的质量。针对开源软件在知识产权和法律防范方面的潜在风险,对开源软件许可证是否限制开源软件的衍生产品的版权、专利申请、商标申请等进行考察。

2.1.1 开源许可证类别

开源许可证类别考察开源软件源代码是否有许可证协议声明,并检查许可证协议是否是MIT、Apache等经过OSI认证、业界广泛使用并且限制较为宽松的许可证类型。

主要评测指标:

序号评测指标名称评测指标描述
1许可证有无开源软件源代码中是否包含许可证
2许可证名称开源软件源代码中包含的许可证名称
3许可证是否主流开源软件源代码的许可证是否是主流许可证类型
4不同许可证文件数量开源软件源代码中不同许可证文件的数量
5双授权是否存在开源版本和商业授权版本

2.1.2 开源许可证限制

开源许可证限制考察开源软件的衍生产品的版权、专利申请、商标申请、对外提供服务等权利归属,以及产品是否必须开源。

主要评测指标:

序号评测指标名称评测指标描述
1是否能够基于开源产品提供服务许可证条款对于基于开源软件的产品对外提供服务的限制
2再发布的版本是否仍需遵守原开源许可证许可证条款对于再发布的版本使用许可证方面的限制
3再发布能否闭源许可证条款对于再发布版本是否强制开放源码的限制
4是否允许发布商业版本许可证条款对于发布商业产品方面的限制
5衍生产品版权是否属于企业许可证条款对于衍生产品版权方面的限制
6是否允许申请专利许可证条款对于开源软件相关产品专利方面的限制
7是否允许申请商标许可证条款对于开源软件相关产品商标方面的限制

2.1.3 开源许可证冲突

开源许可证冲突考察开源软件中包含多个许可证内部条款的兼容冲突,以及与企业内部其他开源产品可能的潜在冲突。

主要评测指标:

序号评测指标名称评测指标描述
1软件的许可证内部条款兼容冲突软件产品包含多个开源软件许可证可能的内部条款冲突
2开源软件与企业内部其他开源产品协议的潜在冲突使用的开源软件是否与企业内部其他开源软件相关产品的许可证条款存在潜在冲突

2.2 行业认可度

通过开源软件应用情况和第三方评估结果衡量软件被业界认可、接受的程度,包括开源软件商业化实践的案例数量和规模,软件的用户评价等。

2.2.1 商业化实践或应用案例

开源软件的商业化实践或应用案例是软件选型时的重要参考项,实践或应用的数量、案例的规模、应用案例应用的领域和运行时间反映了该软件被业界所接受的程度。

主要评测指标:

序号评测指标名称评测指标描述
1数量应用开源软件的商业化实践或案例数量
2企业应用开源软件的企业信息
3上线时间应用开源软件的业务上线时间(精确至年月)
4运行时间应用开源软件的业务运行时间

2.2.2 第三方公司评估结果

具有公信力的第三方公司对开源软件的评估可提供参考。

主要评测指标:

序号评测指标名称评测指标描述
1评估单位评估单位的权威性和影响力
2评估结果评估单位对开源软件的评价,技术特色和解决的问题

2.3 产品活力

考察开源软件的社区发展情况、知名度、生命周期和版本稳定情况,包括开源软件的发布周期、贡献者数量及等级、公司参与开发的情况等。

2.3.1 产品活跃度

开源软件的活跃情况,包括最近一段时间的正式版本的发布情况,代码变化情况,问题修复的情况等信息。

主要评测指标:

序号评测指标名称评测指标描述
1近一年独立发行版本发布时间、版本号开源软件最近一段时间(一年)的版本发布情况
2最近三个版本的发布周期开源软件最近几个版本(三个)的发布间隔情况
3最近一段时间所有参与者的代码贡献量开源软件最近一段时间(一年)每季度的代码贡献量情况
4最近一段时间每季度的提交数开源软件最近一段时间(一年)每季度的提交数变化情况
5最近一个季度GitHub Issues Open/Closed/ Total Issues数开源软件最近一段时间的需求增加,Bug修复数量

2.3.2 社区活跃度

开源软件源代码被查看、拷贝、下载的情况,以及贡献者、贡献数量、贡献者的等级、以及参与的公司的情况,反映了开源软件社区活跃情况。

主要评测指标:

序号评测指标名称评测指标描述
1Github Stars、Watch、Fork数开源软件最近的关注、支持和拷贝情况
2Github Commits、Pull Requests开源软件的commits总数,提交修改数量
3近三年每季度贡献者数量开源软件近三年每季度贡献者数量变化情况
4近三年每季度提交数量开源软件近三年每季度提交数变化情况
5贡献者等级分布情况开源软件贡献者数量及等级分布情况

2.3.3 代码生命周期

考察开源软件全生命周期的版本、发布周期、以及每个版本的代码行数,反映软件的稳定情况。

主要评测指标:

序号评测指标名称评测指标描述
1所有版本号开源软件全生命周期的版本发布情况
2版本发布周期开源软件全生命周期的版本发布间隔和项目寿命
3版本代码行数开源软件全生命周期各个版本的代码量变化情况

2.3.4 参与软件开发的公司情况

考察开源软件在行业中的支持情况,参与该软件开发的公司的数量和公司的影响力能够对开源软件的应用、发展趋势提供参考。

序号评测指标名称评测指标描述
1公司信息对开源软件源码有贡献或进行运营的企业信息
2公司数量对开源软件源码有贡献的企业数量

2.3.5 关注度

开源软件被关注情况,书籍、文献数量,词条数量,检索和查阅次数,博客和论坛数量,确定软件是否受到持续的关注。

主要评测指标:

序号评测指标名称评测指标描述
1文献数量开源软件相关的文献数量(包括学术文献、专利等)
2书籍检索数量开源软件相关的数据数量
3电子书检索数量开源软件相关的电子书数量
4博客文章数量开源软件相关的博客文章数量
5论坛网页数量开源软件相关的论坛网页数量
6词条检索数量通过搜索引擎搜索开源软件检索的词条数量
7StackOverFlow搜索结果条数外文网站(如StackOverFlow)的搜索结果数量
8Wikipedia信息维基百科关于开源软件的词条数量和相关信息

2.4 服务支持

考察开源软件的文档质量、支持工具和运维服务,包括文档的可用性,是否有服务商提供协助运维或托管运维服务等。

2.4.1 文档质量

开源软件的文档质量,包括文档的数量、文档覆盖的范围、文字规模,考察文档的完备情况,以及是否对用户有用。

序号评测指标名称评测指标描述
1文档数量开源软件源码中的说明文档、帮助文档的数量
2文字规模开源软件源码、官网中的说明文档、帮助文档的文字规模
3文档覆盖范围开源软件源码、官网中的文档覆盖范围

2.4.2 运维服务

运维服务指开源软件是否有服务商提供协助运维或托管运维服务,以及服务商的数量和能力。

主要评测指标:

序号评测指标名称评测指标描述
1是否有商业支持开源软件在服务商提供协助运维或托管运维方面的支持
2服务提供商数量开源软件在服务商提供协助运维或托管运维方面的服务商数量

2.4.3 支持工具

支持工具指在指定场景下作为组件工具配合其他软件起到关键作用,或使用该软件进行开发/测试/运行时提供辅助作用的工具的情况。

主要评测指标:

序号评测指标名称评测指标描述
1开发语言种类开源软件开发语言情况及占比
2作为组件工具支撑其他框架情况分类开源软件作为通用组件支撑整理框架如云计算、大数据等方面的典型应用场景
3支持开发/测试/使用该软件的工具情况支持开源软件开发、测试和使用的工具相关信息

2.5 功能性

功能性衡量消息中间件的基本功能是否能够满足业务系统的异步化,模块解耦的需要,实现高效的消息投递,遵循相关的标准、约定或法规以及类似规定的能力。

2.5.1 功能正确性

功能正确性指消息中间件具备基本的消息投递功能,以及高效投递消息的能力。

主要评测指标:

序号评测指标名称评测指标描述
1消息同步传输是否支持消息同步传输以及失败/异常处理
2消息异步传输是否支持消息异步传输以及失败/异常处理
3消息批量传输是否支持消息的批量传输
4消息传输唯一性保证消息能送达目的地址,且消息是不重复的
5点对点(PTP)消息模式是否支持消息从生产者到消费者之间的点到点通信
6发布-订阅(Pub/Sub)消息模式是否支持多个消息消费者(订阅)消费生产者生产的消息
7消息路由转发支持在不同的节点/队列间转发消息
8消息副本是否支持多节点消息副本,保证数据一致
9断点续传支持断点续传功能
10连接管理支持建立、限制或断开消息的网络传输通道
11流量管理支持流量控制功能

2.5.2 功能适合性

功能适合性指消息中间件能够满足业务需求,实现更灵活的消息处理的能力。

主要评测指标:

序号评测指标名称评测指标描述
1消息持久化是否支持消息持久化以及持久化模式下消息的发送方式
2消息传输格式支持的消息类型,如数据包格式、文件格式
3事务支持是否支持本地事务,包括事务提交、事务回滚等
4消息确认是否支持消息的成功确认,批量确认和异步确认
5消息重试是否提供重试机制,确保消息正确传输
6消息过滤服务端是否支持消息过滤
6消息有效期是否支持针对单条/批量消息的有效期配置
7消息死信是否支持通过死信队列来保存处理失败或者过期的消息
8消息有序是否支持消息有序以及实现方式
9消息优先级是否可配置消息的优先级,并按消息的优先级进行处理
10延时/定时消息是否支持消息到特定的时间点或者特定的时间后才能被消费的定时调度机制
11消息堆积是否支持将消息堆积在内存Buffer或持久化的存储系统中
12消息轨迹是否支持查看历史消息的生产、处理时间、消息时间以及消息经过的各个节点信息

2.6 性能 效率

反映消息中间件的性能指标在集群的吞吐率,表现为生产者和消费者生产和消费的数据量(MB/s)和消息量(Record/s),考察服务端的性能瓶颈和获得最佳吞吐量的最优配置。

主要评测指标:

序号评测指标名称评测指标描述
1生产者数量影响不同生产者数量对吞吐率的影响
2消费者数量影响不同消费者数量对吞吐率的影响
3消息大小影响消息大小对生产者或消费者吞吐率的影响
4消息批处理影响消息批处理大小对吞吐率的影响
5队列/分区数量影响队列/分区数量对吞吐率的影响
6副本数量影响副本数量对吞吐率的影响
7应答模式影响不同应答模式对吞吐率的影响
8安全认证影响考察安全认证模式对吞吐率的影响
9响应延迟时间不同模式下的响应延迟时间

2.7 安全性

消息中间件因其分布式的特点,需考察生产者、消费者与集群的通讯安全,是否支持使用TLS/SSl、用户、权限和授权的能力等,确保业务系统的安全。

2.7.1 缺陷或漏洞情况

缺陷或漏洞情况包含现有缺陷或漏洞的数量及严重程度,已修复缺陷或漏洞的数量及严重程度,缺陷密度等指标。

主要评测指标:

序号评测指标名称评测指标描述
1已暴露漏洞的数量和危险程度考察开源软件版本是否存在已暴露漏洞,以及漏洞的安全等级
2潜在漏洞数量和危险程度考察开源软件的潜在漏洞情况,分析危险程度

2.7.2 入侵检测与防御

考察消息中间件中断、调整或隔离不正常或具有伤害性的攻击/非授权访问行为的能力。

主要评测指标:

序号评测指标名称评测指标描述
1是否有用户身份认证、鉴权机制验证消息的生产和消费是否支持权限控制
2非授权访问控制验证消息中间件对于非授权访问的控制和隔离能力
3节点身份认证消息中间件节点间身份认证
4连接认证传递消息的网络连接认证
5消息传输加密支持消息传输的加密

2.8 可扩展性

消息队列的可扩展性体现在访问量和数据量两个方面:通过节点扩容增加集群访问容量;通过存储扩容增加数据持久化容量。

主要评测指标:

序号评测指标名称评测指标描述
1是否支持水平扩展验证消息中间件集群能否进行节点扩容,实现水平扩展
2是否支持动态扩展验证消息中间件集群能否动态扩展
3扩展后吞吐率变化验证扩展是否提高吞吐率

2.9 可靠性

消息中间件的可靠性表现在节点故障处理、消息防丢失机制、消息持久化、消息备份,考察在任一时刻系统处在正常状态的能力。

主要评测指标:

序号评测指标名称评测指标描述
1单节点故障集群可用性验证节点故障恢复后数据有效性
2节点故障恢复后数据有效性验证集群中某一节点故障后数据的有效性
3数据副本有效性验证集群中消息副本数据的可用情况

2.10 可维护性

消息中间件的维护有命令行和WEB管理工具两种方式,需考察消息中间件代码的规范性,可管理、可监控等方面的能力。

2.10.1 规范性

规范性指软件的代码编写、数据格式是否规范,以及不同语言的使用是否遵守相关标准。

主要评测指标:

序号评测指标名称评测指标描述
1注释的规范性考察开源软件源代码注释编写的规范性
2代码的规范性考察开源软件源代码编写的规范性
3语言数量考察语言类别、语言占比

2.10.2 可管理性

可管理性指能否通过工具对开源软件进行管理,监控消息中间件的运行情况,并修改配置的能力。

主要评测指标:

序号评测指标名称评测指标描述
1命令行工具管理是否提供命令行管理工具
2官方或第三方提供的WEB管理工具是否提供可视化WEB管理工具
3可监控消息中间件运行状态是否提供可监控消息中间件节点进行监控
4远程管理提供远程管理API对消息中间件进行远程管理
5日志可管理、可配置支持多级别日志配置管理机制

2.11 兼容性

衡量开源软件在运行环境、接口等方面兼容的能力,包括软件能否在不同的操作系统中运行,软件接口是否与旧版本兼容。

2.11.1 运行环境兼容

运行环境兼容指软件在不同的硬件、网络、操作系统中运行,以及不同数据库、浏览器等配合环境中运行是否能得到一致的运行结果。

主要评测指标:

序号评测指标名称评测指标描述
1运行环境兼容能否在不同运行环境中正常运行
2扩展支持作为应用服务器(如JBoss、WebSphere)的外置服务器

2.11.2 接口兼容

接口兼容指软件与其他应用软件/系统进行交互的复杂度,以及软件本身接口向前兼容的能力。

主要评测指标:

序号评测指标名称评测指标描述
1版本接口向前兼容消息中间件本身接口能否向前兼容
2客户端多语言支持能否支持主流的开发语言
3协议支持是否遵循已有的标准规范
4消息传输规范支持是否符合消息传输规范如JMS、JNDI等

2.12 易用性

易用性考察使用开源软件完成指定任务的难易程度,包括开发、管理、运维的灵活性和难易程度。

主要评测指标:

序号评测指标名称评测指标描述
1产品可配置系统规模、队列数量、消息数据空间大小可配置
2应用示例针对支持的开发语言,提供可操作的应用示例包
3安装和卸载是否提供常用操作系统的单机/集群部署或卸载指导
4系统集成方案是否提供与其他系统集成的方案指导
5第三方插件是否支持第三方插件的集成和使用