1. 概述以及竞品对比
中间件 | 介绍 | 官方链接 | 竞品 | 竞品介绍 | 异同点对比 |
Dubbo | 高性能的RPC框架,用于实现分布式服务的调用和管理。 | Dubbo | gRPC | gRPC是由Google开源的一款高性能、通用的RPC框架,支持多种编程语言 链接:gRPC |
Dubbo更注重于服务治理和可扩展性,而gRPC更注重于跨语言和跨平台的通信。 |
RocketMQ | 高性能、可靠的分布式消息队列中间件,用于实现异步通信和解耦。 | RocketMQ | Apache Kafka | Apache Kafka是一款高吞吐量的分布式消息队列系统,支持水平扩展和持久化消息存储。Apache Kafka链接:Apache Kafka | RocketMQ适用于大规模、高吞吐量的场景,而Kafka适用于大数据流处理和日志传输。 |
Tair | 阿里巴巴自研的分布式缓存中间件,具有高可靠性、高性能和高扩展性。 | Tair | Redis | Redis是一款流行的开源分布式缓存和数据存储系统,支持丰富的数据结构和复杂的操作。Redis链接:Redis | Tair适用于高并发、大规模集群的场景,而Redis注重于丰富的数据结构和灵活的扩展性。 |
OceanBase | 阿里巴巴自研的分布式关系型数据库中间件,具有高可用性、高扩展性和高性能。 | OceanBase | TiDB | TiDB是一款开源的分布式关系型数据库,支持水平扩展和强一致性的分布式事务。 链接:TiDB |
OceanBase更注重于高可靠性和高性能的企业级场景,而TiDB更注重于云原生和弹性扩展的需求。 |
Sentinel | 流量控制和熔断降级的Java中间件,用于保护系统稳定性和可用性。 | Sentinel | Hystrix | Hystrix是Netflix开源的一款流量控制和熔断降级库,用于构建弹性的分布式系统。 链接:Hystrix |
Sentinel更注重于实时监控和动态规则配置,而Hystrix更注重于线程隔离和回退策略。 |
Druid | 高性能的数据库连接池中间件,提供连接管理和监控功能。 | Druid | HikariCP | HikariCP是一款流行的高性能数据库连接池,具有快速、轻量级和简单的特点。HikariCP 链接:HikariCP |
Druid提供了更丰富的监控和统计功能,而HikariCP注重于轻量级和高性能的连接池实现。 |
Nacos | 服务注册和配置中心,用于管理系统的服务和配置。 | Nacos | Consul | Consul是一款开源的服务发现和配置中心,提供分布式服务注册和键值存储等功能。 |
Nacos更注重于高可用性和可扩展性,而Consul更注重于多数据中心和多服务发现机制。 |
Seata | 分布式事务中间件,用于保证分布式系统的事务一致性。 | Seata | TCC-Transaction | TCC-Transaction是一种基于补偿机制的分布式事务模式,用于构建分布式事务一致性保证。 链接:TCC-Transaction |
Seata提供了更全面的事务管理机制和解决方案,而TCC-Transaction更注重于尝试-确认-取消的补偿模式。 |
FDFS | 分布式文件系统,用于存储和管理大规模文件。 | FDFS | Hadoop HDFS | Hadoop HDFS是Apache Hadoop生态系统中的分布式文件系统,用于大规模数据存储和处理。 |
FDFS更注重于轻量级和高性能的文件存储,而Hadoop HDFS更注重于大数据处理和容错性。 |
DRDS | 分布式关系型数据库中间件,用于管理分布式数据库和查询优化。 | DRDS | ShardingSphere | ShardingSphere是一款开源的分布式数据库中间件,支持分库分表和数据分片等功能。ShardingSphere |
DRDS更注重于简化分布式数据库的部署和管理,而ShardingSphere更注重于灵活的分库分表和数据分片策略。 |
Havenask(HA3) | 一种分布式、面向文档的数据库,可以存储、搜索和分析数据 | havenask-federation | Elasticsearch | Elasticsearch是一个开源的分布式搜索和分析引擎,它构建在Apache Lucene库之上。它被设计用于处理大规模数据集的快速搜索、分析和存储。 |
阿里Havenask和es都是用于搜索和检索数据的技术,能处理大规模数据并支持高并发搜索和查询操作。 ES适用于大规模数据搜索和分析场景,而阿里Havenask则更侧重于电商领域的搜索和推荐场景,并与阿里生态系统深度结合。 |
2. 详细介绍
//TODO
2.1. Tair
Tair是阿里巴巴自主研发的高性能、分布式、可扩展、高可靠的 key/value 存储系统,Tair包括:MDB、LDB、RDB。Tair相较于Redis最大的区别是其底层支持多款引擎(MDB、RDB、LDB),不同的引擎工作于不同的场景(这一点有点像MySQL的插件化存储引擎,但是又不是完全像。MySQL对外接口是统一的,Tair的RDB引擎和另外两者数据模型差异较大)。各个引擎特点如下:
- MDB:
完全依赖于内存,高读写,不支持持久化,适用于:
- 缓存,降低对后端数据库的访问压力,所有需要后端有持久化的DB如MySQL
- 可临时数据存储,分钟级别后失效,偶尔数据丢失不会对业务产生较大影响。
- 读多写少,读 QPS 达到万级别以上。
- RDB:
基于redis,提供除了KV以外的数据结构存储,如list,set等,依赖于redis的特性,适用于(主要是基于复杂的数据结构):
- 如排行榜、计数器缓冲、数据统计(如TopN,交集,并集等)、最新项目检索、地理位置存储及range查询
- 实时统计和过期处理,如用户投票及排序;复杂的数据结构缓存及内存数据库
- LDB:
基于google的levelDB。存储磁盘为SSD,内嵌一层MDB作为中间层,在实现持久化的过程中,也能提供较高的性能,适用于:
- 黑白单等访问量大,miss率高的场景
- 离线数据查询
2.2. RocketMQ
2.3. Dubbo
3. 自研中间件的原因
- 定制化需求:阿里巴巴的业务规模和复杂度巨大,需要满足特定的业务需求和性能要求。通过自研中间件,阿里巴巴可以根据自身需求进行深度定制和优化,以提供更好的性能和稳定性。
- 高可用性和可靠性:阿里巴巴的业务对中间件的高可用性和可靠性要求非常高。自研中间件可以根据业务场景和需求进行架构设计和技术选型,以保证数据的安全性和服务的连续性。
- 阿里生态集成:阿里巴巴拥有庞大的阿里云生态系统和云原生技术栈。自研中间件可以更好地集成到阿里云的产品和服务中,提供更加完整的解决方案和生态系统。
- 安全性考虑:阿里巴巴是一家大型互联网企业,面临着各种安全威胁和攻击。自研中间件可以针对阿里巴巴的安全需求进行定制开发,提供更高的安全性和防护能力。
- 技术创新和积累:自研中间件可以提供阿里巴巴技术团队的创新和积累。通过自主研发中间件,阿里巴巴能够在技术上保持领先地位,并能够更好地满足未来的业务需求。
尽管阿里巴巴自研了许多中间件,但同时也积极参与和贡献开源社区。例如,阿里巴巴是Apache Dubbo和RocketMQ等开源项目的发起者和主要贡献者。通过开源,阿里巴巴可以与全球开发者社区合作,共同推动中间件技术的发展和创新。
附录: