阿里开源中间件一览

1. 概述以及竞品对比

间件介绍官方链接竞品竞品介绍异同点对比
Dubbo高性能的RPC框架,用于实现分布式服务的调用和管理。DubbogRPC

gRPC是由Google开源的一款高性能、通用的RPC框架,支持多种编程语言

链接:gRPC

Dubbo更注重于服务治理和可扩展性,而gRPC更注重于跨语言和跨平台的通信。
RocketMQ高性能、可靠的分布式消息队列中间件,用于实现异步通信和解耦。RocketMQApache KafkaApache Kafka是一款高吞吐量的分布式消息队列系统,支持水平扩展和持久化消息存储。Apache Kafka链接:Apache KafkaRocketMQ适用于大规模、高吞吐量的场景,而Kafka适用于大数据流处理和日志传输。
Tair阿里巴巴自研的分布式缓存中间件,具有高可靠性、高性能和高扩展性。TairRedisRedis是一款流行的开源分布式缓存和数据存储系统,支持丰富的数据结构和复杂的操作。Redis链接:RedisTair适用于高并发、大规模集群的场景,而Redis注重于丰富的数据结构和灵活的扩展性。
OceanBase阿里巴巴自研的分布式关系型数据库中间件,具有高可用性、高扩展性和高性能。OceanBaseTiDBTiDB是一款开源的分布式关系型数据库,支持水平扩展和强一致性的分布式事务。
链接:TiDB
OceanBase更注重于高可靠性和高性能的企业级场景,而TiDB更注重于云原生和弹性扩展的需求。
Sentinel流量控制和熔断降级的Java中间件,用于保护系统稳定性和可用性。SentinelHystrixHystrix是Netflix开源的一款流量控制和熔断降级库,用于构建弹性的分布式系统。
链接:Hystrix
Sentinel更注重于实时监控和动态规则配置,而Hystrix更注重于线程隔离和回退策略。
Druid高性能的数据库连接池中间件,提供连接管理和监控功能。DruidHikariCP

HikariCP是一款流行的高性能数据库连接池,具有快速、轻量级和简单的特点。HikariCP

链接:HikariCP

Druid提供了更丰富的监控和统计功能,而HikariCP注重于轻量级和高性能的连接池实现。
Nacos服务注册和配置中心,用于管理系统的服务和配置。NacosConsul

Consul是一款开源的服务发现和配置中心,提供分布式服务注册和键值存储等功能。

Consul链接:Consul

Nacos更注重于高可用性和可扩展性,而Consul更注重于多数据中心和多服务发现机制。
Seata分布式事务中间件,用于保证分布式系统的事务一致性。SeataTCC-TransactionTCC-Transaction是一种基于补偿机制的分布式事务模式,用于构建分布式事务一致性保证。
链接:TCC-Transaction
Seata提供了更全面的事务管理机制和解决方案,而TCC-Transaction更注重于尝试-确认-取消的补偿模式。
FDFS分布式文件系统,用于存储和管理大规模文件。FDFSHadoop HDFS

Hadoop HDFS是Apache Hadoop生态系统中的分布式文件系统,用于大规模数据存储和处理。

Hadoop HDFS链接:Hadoop HDFS

FDFS更注重于轻量级和高性能的文件存储,而Hadoop HDFS更注重于大数据处理和容错性。
DRDS分布式关系型数据库中间件,用于管理分布式数据库和查询优化。DRDSShardingSphere

ShardingSphere是一款开源的分布式数据库中间件,支持分库分表和数据分片等功能。ShardingSphere

链接:ShardingSphere

DRDS更注重于简化分布式数据库的部署和管理,而ShardingSphere更注重于灵活的分库分表和数据分片策略。
Havenask(HA3)一种分布式、面向文档的数据库,可以存储、搜索和分析数据havenask-federationElasticsearch

Elasticsearch是一个开源的分布式搜索和分析引擎,它构建在Apache Lucene库之上。它被设计用于处理大规模数据集的快速搜索、分析和存储。

链接:ElasticSearch

2. 详细介绍

//TODO

2.1. Tair

Tair是阿里巴巴自主研发的高性能、分布式、可扩展、高可靠的 key/value 存储系统,Tair包括:MDB、LDB、RDB。Tair相较于Redis最大的区别是其底层支持多款引擎(MDB、RDB、LDB),不同的引擎工作于不同的场景(这一点有点像MySQL的插件化存储引擎,但是又不是完全像。MySQL对外接口是统一的,Tair的RDB引擎和另外两者数据模型差异较大)。各个引擎特点如下:

  • MDB:

完全依赖于内存,高读写,不支持持久化,适用于:

  1. 缓存,降低对后端数据库的访问压力,所有需要后端有持久化的DB如MySQL
  2. 可临时数据存储,分钟级别后失效,偶尔数据丢失不会对业务产生较大影响。
  3. 读多写少,读 QPS 达到万级别以上。
  • RDB:

基于redis,提供除了KV以外的数据结构存储,如list,set等,依赖于redis的特性,适用于(主要是基于复杂的数据结构):

  1. 如排行榜、计数器缓冲、数据统计(如TopN,交集,并集等)、最新项目检索、地理位置存储及range查询
  2.  实时统计和过期处理,如用户投票及排序;复杂的数据结构缓存及内存数据库
  • LDB:

基于google的levelDB。存储磁盘为SSD,内嵌一层MDB作为中间层,在实现持久化的过程中,也能提供较高的性能,适用于:

  1. 黑白单等访问量大,miss率高的场景
  2. 离线数据查询

2.2. RocketMQ

2.3. Dubbo

3. 自研中间件的原因

  1. 定制化需求:阿里巴巴的业务规模和复杂度巨大,需要满足特定的业务需求和性能要求。通过自研中间件,阿里巴巴可以根据自身需求进行深度定制和优化,以提供更好的性能和稳定性。
  2. 高可用性和可靠性:阿里巴巴的业务对中间件的高可用性和可靠性要求非常高。自研中间件可以根据业务场景和需求进行架构设计和技术选型,以保证数据的安全性和服务的连续性。
  3. 阿里生态集成:阿里巴巴拥有庞大的阿里云生态系统和云原生技术栈。自研中间件可以更好地集成到阿里云的产品和服务中,提供更加完整的解决方案和生态系统。
  4. 安全性考虑:阿里巴巴是一家大型互联网企业,面临着各种安全威胁和攻击。自研中间件可以针对阿里巴巴的安全需求进行定制开发,提供更高的安全性和防护能力。
  5. 技术创新和积累:自研中间件可以提供阿里巴巴技术团队的创新和积累。通过自主研发中间件,阿里巴巴能够在技术上保持领先地位,并能够更好地满足未来的业务需求。

尽管阿里巴巴自研了许多中间件,但同时也积极参与和贡献开源社区。例如,阿里巴巴是Apache Dubbo和RocketMQ等开源项目的发起者和主要贡献者。通过开源,阿里巴巴可以与全球开发者社区合作,共同推动中间件技术的发展和创新。

附录:

1. 阿里有哪些厉害的开源中件间?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/184181.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web】在前端中CSS的语法

CSS规则是由两个主要的部分构成:选择器、以及一条或多条声明。 选择器通常是需要改变的HTML元素。 每条声明由一个属性和一个值组成。 属性(Property)是需要设置的样式属性(Style attribute)。每一个属性有一个值。…

峰回网关数采PLC

1.网络配置 例如:plc地址是192.168.1.56 1.访问网关 峰回网关默认网关地址 192.168.3.18,或者(10.10.253.354),本案例按照3.18讲解。 1和1相连,0和电脑相连 本地电脑修改ip为192.168.3.3(和3…

ps人像怎么做渐隐的效果?

photoshop怎么制作人像渐隐的图片效果?渐隐效果需要使用渐变来实现,下面我们就来看看详细的教程。 首先,我们打开Photoshop,点击屏幕框选的【打开】,打开一张背景图片。 下面,我们点击左上角【文件】——【…

用HTML + javaScript快速完成excel表格信息除重并合并

今天突然接到一个工作,要把两个存储在.xls的主体信息表,除重后合并成一个主体信息表,并且补充主体类型和所在县区这两列信息。 完成这项工作的方法有很多,如果信息表中的信息量不大的话,手工处理一下也行,如…

CSS实现透明度效果的两种方法—— opacity 和 rgba()

在实际开发过程中&#xff0c;为了给用户呈现一些效果&#xff0c;我们需要控制元素的透明度。CSS 提供了 opacity 属性和 rgba() 函数给我们控制透明度&#xff0c;接下来通过一个例子来感受一下两种方法的区别。 <style>.transparentBox {display: inline-block;width…

sqli-labs-1

文章目录 Less-01Less-02Less-03Less-04 Less-01 1.输入不同的id值&#xff0c;可以获取不同的用户信息&#xff1a; 2.在sql后拼接’or11–&#xff0c;并没有获取到所有用户的信息&#xff0c;猜测可能用了limit语句 3.构造错误的sql语句&#xff0c;果然有limit报错: …

【腾讯云云服务器测评】- 云原生实践,快捷部署人才招聘平台容器化技术方案!

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

windows 下 QT Android 环境搭建(QGC 4.2.x + Qt 5.15.2)

文章目录 1. QT Creator 环境搭建2. JDK1&#xff09;官网途径&#xff1a;2) 360 安装&#xff1a;配置 3. SDK1) 通过 Android Studio2&#xff09;QT 配置中安装 姊妹篇&#xff1a; win10下新版QGC地面站环境搭建全面攻略&#xff08;v4.x.x QGroundControl地面站搭建&…

从Hugging Face下载数据测试whisper、fast_whisper耗时

时长比较短的音频&#xff1a;https://huggingface.co/datasets/PolyAI/minds14/viewer/en-US 时长比较长的音频&#xff1a;https://huggingface.co/datasets/librispeech_asr?row8 此次测试过程暂时只使用比较短的音频 使用fast_whisper测试 下载安装&#xff0c;参考官方…

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG 文章目录 导入库初始化PWM开启PWMPWM硬件BUG硬件BUG复现原因附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from misc import PWM_V2或者 from misc import PWM但我觉得…

面试算法54:所有大于或等于节点的值之和

题目 给定一棵二叉搜索树&#xff0c;请将它的每个节点的值替换成树中大于或等于该节点值的所有节点值之和。假设二叉搜索树中节点的值唯一。例如&#xff0c;输入如图8.10&#xff08;a&#xff09;所示的二叉搜索树&#xff0c;由于有两个节点的值大于或等于6&#xff08;即…

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命&#xff0c;但将其应用于工业制造&#xff0c;仍面临许多挑战&#xff0c;专业知识的缺乏是关键难点。11月5日&#xff0c;香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…

家居品牌怎么做小红书投放,寻找家居达人的方式有哪些?

在当今社交媒体的时代&#xff0c;找到优秀的家居博主并不困难。但是&#xff0c;在找家居行业博主的时候&#xff0c;了解家居行业特性就很重要&#xff0c;今天来为大家分享一下家居品牌怎么做小红书投放&#xff0c;寻找家居达人的方式有哪些&#xff1f; 一、家居行业特性 …

【Python3】【力扣题】232. 用栈实现队列

【力扣题】题目描述&#xff1a; 栈&#xff1a;线性集合。后进先出。 队列&#xff1a;线性集合。先进先出。 【Python3】代码&#xff1a; 解题思路&#xff1a;两个栈&#xff0c;一个入队的栈&#xff0c;一个出队的栈。出栈时&#xff0c;若出队的栈为空&#xff0c;才将…

Java 设计模式——解释器模式

目录 1.概述2.结构3.案例实现3.1.抽象表达式类3.2.终结表达式3.3.非终结表达式3.4.环境类3.5.测试 4.优缺点5.使用场景 1.概述 &#xff08;1&#xff09;如下图&#xff0c;设计一个软件用来进行加减计算。我们第一想法可能就是使用工具类&#xff0c;提供对应的加法和减法的…

linux粘滞位的介绍及使用

文章目录 1.粘滞位的引入2.粘滞位的使用 1.粘滞位的引入 首先看一个场景 已知 对目录无w权限时 无法进行目录中的文件的创建/删除操作但是普通用户通过sudo命令 以root身份创建一个文件 rw- r-- r-- 普通用户此时是other 没有w权限 但却可以删除 [root和普通用户在一个目录下时…

mysql之子表查询、视图、连接查询

1、子查询返回的结果只能是某列&#xff0c;不能是多列。where条件in什么&#xff0c;子查询的列就是什么 &#xff08;1&#xff09;多表联查&#xff08;不要超过3张表&#xff09;重点 ①in包含 ②not in取反&#xff08;加上where条件过滤&#xff0c;否则没意义&#xff…

基于C#的GRPC

GRPC gRPC&#xff08;gRPC Remote Procedure Call&#xff09;是由Google开发的高性能、跨语言的远程过程调用框架。它基于HTTP/2协议进行通信&#xff0c;支持多种编程语言&#xff0c;包括C, C#, Java, Python等&#xff0c;使不同语言的应用程序可以通过远程调用相互通信。…

C#创建Windows Service(Windows 服务)基础教程

Windows Service这一块并不复杂&#xff0c;但是注意事项太多了&#xff0c;网上资料也很凌乱&#xff0c;偶尔自己写也会丢三落四的。所以本文也就产生了&#xff0c;本文不会写复杂的东西&#xff0c;完全以基础应用的需求来写&#xff0c;所以不会对Windows Service写很深入…

软件工程第十周

测试过程 单元测试 注意出错处理&#xff01;单元测试的数据处理部分请见Junit 单元测试之错误和异常处理-CSDN博客 单元测试准则 白盒&#xff1a;对系统结构非常清楚&#xff01;就像大题注重过程。 单元测试的测试环境 一定要保证整个环境是完整的&#xff0c;尽管可能没…