金融业开源软件研究评测(一)——分布式消息中间件评测模型
1 编写目的目前,国内外许多大型企业在建设信息系统的过程中,基本都是基于开源软件进行建设。创新业务的快速迭代和突发增长,使得金融机构正逐步将系统架构从集中式转向分布式的云计算和大数据,开源软件成为了金融企业的首要选择。金融企业逐步应用开源软件已经成为一种趋势,除了保障信息系统和关键技术自主可控,金融企业也需要专业化的开源软件评测体系,加强开源软件应用的风险管
目前,国内外许多大型企业在建设信息系统的过程中,基本都是基于开源软件进行建设。创新业务的快速迭代和突发增长,使得金融机构正逐步将系统架构从集中式转向分布式的云计算和大数据,开源软件成为了金融企业的首要选择。
金融企业逐步应用开源软件已经成为一种趋势,除了保障信息系统和关键技术自主可控,金融企业也需要专业化的开源软件评测体系,加强开源软件应用的风险管控能力。在此基础上,结合自身需求实现个性化定制,提高核心技术的自主能力。
消息中间件是分布式系统中完成消息发送和接收的基础组件,常用开源消息中间件包括Kafka、RabbitMQ等。消息中间件通过利用高效可靠的消息传递机制,进行平台无关的数据信息交换,实现分布式系统的集成。同时,在分布式的环境下通过异步通讯降低系统间的耦合度,提高系统的稳定性、吞吐率和可用性。
围绕金融行业的实际业务需要,基于金融行业开源软件整体评测模型,结合开源软件特性,我们建立了针对金融行业的分布式消息中间件评测模型。通过该模型得出消息中间件应用于金融行业时需要重点关注的指标,帮助金融行业的企业或机构对开源分布式消息中间件软件的选型、质量检测、成熟度评估以及软件供应商的能力等进行评估。
开源软件许可证是开源软件的授权条款,通过授权条款保留一部分权利允许用户学习、修改、增进提高软件的质量。针对开源软件在知识产权和法律防范方面的潜在风险,对开源软件许可证是否限制开源软件的衍生产品的版权、专利申请、商标申请等进行考察。
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.1 商业化实践或应用案例
开源软件的商业化实践或应用案例是软件选型时的重要参考项,实践或应用的数量、案例的规模、应用案例应用的领域和运行时间反映了该软件被业界所接受的程度。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 数量 | 应用开源软件的商业化实践或案例数量 |
2 | 企业 | 应用开源软件的企业信息 |
3 | 上线时间 | 应用开源软件的业务上线时间(精确至年月) |
4 | 运行时间 | 应用开源软件的业务运行时间 |
具有公信力的第三方公司对开源软件的评估可提供参考。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 评估单位 | 评估单位的权威性和影响力 |
2 | 评估结果 | 评估单位对开源软件的评价,技术特色和解决的问题 |
考察开源软件的社区发展情况、知名度、生命周期和版本稳定情况,包括开源软件的发布周期、贡献者数量及等级、公司参与开发的情况等。
开源软件的活跃情况,包括最近一段时间的正式版本的发布情况,代码变化情况,问题修复的情况等信息。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 近一年独立发行版本发布时间、版本号 | 开源软件最近一段时间(一年)的版本发布情况 |
2 | 最近三个版本的发布周期 | 开源软件最近几个版本(三个)的发布间隔情况 |
3 | 最近一段时间所有参与者的代码贡献量 | 开源软件最近一段时间(一年)每季度的代码贡献量情况 |
4 | 最近一段时间每季度的提交数 | 开源软件最近一段时间(一年)每季度的提交数变化情况 |
5 | 最近一个季度GitHub Issues Open/Closed/ Total Issues数 | 开源软件最近一段时间的需求增加,Bug修复数量 |
开源软件源代码被查看、拷贝、下载的情况,以及贡献者、贡献数量、贡献者的等级、以及参与的公司的情况,反映了开源软件社区活跃情况。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | Github Stars、Watch、Fork数 | 开源软件最近的关注、支持和拷贝情况 |
2 | Github Commits、Pull Requests | 开源软件的commits总数,提交修改数量 |
3 | 近三年每季度贡献者数量 | 开源软件近三年每季度贡献者数量变化情况 |
4 | 近三年每季度提交数量 | 开源软件近三年每季度提交数变化情况 |
5 | 贡献者等级分布情况 | 开源软件贡献者数量及等级分布情况 |
考察开源软件全生命周期的版本、发布周期、以及每个版本的代码行数,反映软件的稳定情况。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 所有版本号 | 开源软件全生命周期的版本发布情况 |
2 | 版本发布周期 | 开源软件全生命周期的版本发布间隔和项目寿命 |
3 | 版本代码行数 | 开源软件全生命周期各个版本的代码量变化情况 |
考察开源软件在行业中的支持情况,参与该软件开发的公司的数量和公司的影响力能够对开源软件的应用、发展趋势提供参考。
序号 | 评测指标名称 | 评测指标描述 |
1 | 公司信息 | 对开源软件源码有贡献或进行运营的企业信息 |
2 | 公司数量 | 对开源软件源码有贡献的企业数量 |
开源软件被关注情况,书籍、文献数量,词条数量,检索和查阅次数,博客和论坛数量,确定软件是否受到持续的关注。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 文献数量 | 开源软件相关的文献数量(包括学术文献、专利等) |
2 | 书籍检索数量 | 开源软件相关的数据数量 |
3 | 电子书检索数量 | 开源软件相关的电子书数量 |
4 | 博客文章数量 | 开源软件相关的博客文章数量 |
5 | 论坛网页数量 | 开源软件相关的论坛网页数量 |
6 | 词条检索数量 | 通过搜索引擎搜索开源软件检索的词条数量 |
7 | StackOverFlow搜索结果条数 | 外文网站(如StackOverFlow)的搜索结果数量 |
8 | Wikipedia信息 | 维基百科关于开源软件的词条数量和相关信息 |
考察开源软件的文档质量、支持工具和运维服务,包括文档的可用性,是否有服务商提供协助运维或托管运维服务等。
开源软件的文档质量,包括文档的数量、文档覆盖的范围、文字规模,考察文档的完备情况,以及是否对用户有用。
序号 | 评测指标名称 | 评测指标描述 |
1 | 文档数量 | 开源软件源码中的说明文档、帮助文档的数量 |
2 | 文字规模 | 开源软件源码、官网中的说明文档、帮助文档的文字规模 |
3 | 文档覆盖范围 | 开源软件源码、官网中的文档覆盖范围 |
运维服务指开源软件是否有服务商提供协助运维或托管运维服务,以及服务商的数量和能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 是否有商业支持 | 开源软件在服务商提供协助运维或托管运维方面的支持 |
2 | 服务提供商数量 | 开源软件在服务商提供协助运维或托管运维方面的服务商数量 |
支持工具指在指定场景下作为组件工具配合其他软件起到关键作用,或使用该软件进行开发/测试/运行时提供辅助作用的工具的情况。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 开发语言种类 | 开源软件开发语言情况及占比 |
2 | 作为组件工具支撑其他框架情况分类 | 开源软件作为通用组件支撑整理框架如云计算、大数据等方面的典型应用场景 |
3 | 支持开发/测试/使用该软件的工具情况 | 支持开源软件开发、测试和使用的工具相关信息 |
功能性衡量消息中间件的基本功能是否能够满足业务系统的异步化,模块解耦的需要,实现高效的消息投递,遵循相关的标准、约定或法规以及类似规定的能力。
功能正确性指消息中间件具备基本的消息投递功能,以及高效投递消息的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 消息同步传输 | 是否支持消息同步传输以及失败/异常处理 |
2 | 消息异步传输 | 是否支持消息异步传输以及失败/异常处理 |
3 | 消息批量传输 | 是否支持消息的批量传输 |
4 | 消息传输唯一性 | 保证消息能送达目的地址,且消息是不重复的 |
5 | 点对点(PTP)消息模式 | 是否支持消息从生产者到消费者之间的点到点通信 |
6 | 发布-订阅(Pub/Sub)消息模式 | 是否支持多个消息消费者(订阅)消费生产者生产的消息 |
7 | 消息路由转发 | 支持在不同的节点/队列间转发消息 |
8 | 消息副本 | 是否支持多节点消息副本,保证数据一致 |
9 | 断点续传 | 支持断点续传功能 |
10 | 连接管理 | 支持建立、限制或断开消息的网络传输通道 |
11 | 流量管理 | 支持流量控制功能 |
功能适合性指消息中间件能够满足业务需求,实现更灵活的消息处理的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
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 | 响应延迟时间 | 不同模式下的响应延迟时间 |
消息中间件因其分布式的特点,需考察生产者、消费者与集群的通讯安全,是否支持使用TLS/SSl、用户、权限和授权的能力等,确保业务系统的安全。
缺陷或漏洞情况包含现有缺陷或漏洞的数量及严重程度,已修复缺陷或漏洞的数量及严重程度,缺陷密度等指标。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 已暴露漏洞的数量和危险程度 | 考察开源软件版本是否存在已暴露漏洞,以及漏洞的安全等级 |
2 | 潜在漏洞数量和危险程度 | 考察开源软件的潜在漏洞情况,分析危险程度 |
考察消息中间件中断、调整或隔离不正常或具有伤害性的攻击/非授权访问行为的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 是否有用户身份认证、鉴权机制 | 验证消息的生产和消费是否支持权限控制 |
2 | 非授权访问控制 | 验证消息中间件对于非授权访问的控制和隔离能力 |
3 | 节点身份认证 | 消息中间件节点间身份认证 |
4 | 连接认证 | 传递消息的网络连接认证 |
5 | 消息传输加密 | 支持消息传输的加密 |
消息队列的可扩展性体现在访问量和数据量两个方面:通过节点扩容增加集群访问容量;通过存储扩容增加数据持久化容量。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 是否支持水平扩展 | 验证消息中间件集群能否进行节点扩容,实现水平扩展 |
2 | 是否支持动态扩展 | 验证消息中间件集群能否动态扩展 |
3 | 扩展后吞吐率变化 | 验证扩展是否提高吞吐率 |
消息中间件的可靠性表现在节点故障处理、消息防丢失机制、消息持久化、消息备份,考察在任一时刻系统处在正常状态的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 单节点故障集群可用性 | 验证节点故障恢复后数据有效性 |
2 | 节点故障恢复后数据有效性 | 验证集群中某一节点故障后数据的有效性 |
3 | 数据副本有效性 | 验证集群中消息副本数据的可用情况 |
消息中间件的维护有命令行和WEB管理工具两种方式,需考察消息中间件代码的规范性,可管理、可监控等方面的能力。
规范性指软件的代码编写、数据格式是否规范,以及不同语言的使用是否遵守相关标准。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 注释的规范性 | 考察开源软件源代码注释编写的规范性 |
2 | 代码的规范性 | 考察开源软件源代码编写的规范性 |
3 | 语言数量 | 考察语言类别、语言占比 |
可管理性指能否通过工具对开源软件进行管理,监控消息中间件的运行情况,并修改配置的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 命令行工具管理 | 是否提供命令行管理工具 |
2 | 官方或第三方提供的WEB管理工具 | 是否提供可视化WEB管理工具 |
3 | 可监控消息中间件运行状态 | 是否提供可监控消息中间件节点进行监控 |
4 | 远程管理 | 提供远程管理API对消息中间件进行远程管理 |
5 | 日志可管理、可配置 | 支持多级别日志配置管理机制 |
衡量开源软件在运行环境、接口等方面兼容的能力,包括软件能否在不同的操作系统中运行,软件接口是否与旧版本兼容。
运行环境兼容指软件在不同的硬件、网络、操作系统中运行,以及不同数据库、浏览器等配合环境中运行是否能得到一致的运行结果。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 运行环境兼容 | 能否在不同运行环境中正常运行 |
2 | 扩展支持 | 作为应用服务器(如JBoss、WebSphere)的外置服务器 |
接口兼容指软件与其他应用软件/系统进行交互的复杂度,以及软件本身接口向前兼容的能力。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 版本接口向前兼容 | 消息中间件本身接口能否向前兼容 |
2 | 客户端多语言支持 | 能否支持主流的开发语言 |
3 | 协议支持 | 是否遵循已有的标准规范 |
4 | 消息传输规范支持 | 是否符合消息传输规范如JMS、JNDI等 |
易用性考察使用开源软件完成指定任务的难易程度,包括开发、管理、运维的灵活性和难易程度。
主要评测指标:
序号 | 评测指标名称 | 评测指标描述 |
1 | 产品可配置 | 系统规模、队列数量、消息数据空间大小可配置 |
2 | 应用示例 | 针对支持的开发语言,提供可操作的应用示例包 |
3 | 安装和卸载 | 是否提供常用操作系统的单机/集群部署或卸载指导 |
4 | 系统集成方案 | 是否提供与其他系统集成的方案指导 |
5 | 第三方插件 | 是否支持第三方插件的集成和使用 |
更多推荐
所有评论(0)