让你秒读懂阿里云数据库架构与选型

2023-05-16

01 阿里云RDS的架构与规格大图

下图从高可用类型、数据可靠性、资源复用率、规格大小、规格代码等角度,较为完整的概况了当前RDS主要的架构与规格:

从高可用区架构上,分为单节点(基础版)、双节点(高可用版)以及三节点企业版、集群版(仅SQL Server AlwaysOn)。从资源共享与隔离上,则分为通用型、独享型、共享型和独占物理机(可以理解为是特殊的独享型)。从磁盘使用上的不同,则分为云盘版和本地盘版。

当前,RDS最大规格为104核CPU,768GB内存。其中通用型,最大为12核CPU;共享型最大为32核CPU。

02 主要的架构类型

数据库通常是企业业务架构中的核心组件,数据库的可用性与业务可用性直接相关。所以,高可用是云数据库架构选型第一个需要关注的内容。

从高可用角度,阿里云数据库提供了基础版(即单节点)、双节点高可用版、三节点企业版。不同的版本,则是在成本、可用性、数据可靠性之间的平衡:

  • 单节点通过简单的架构,以最低的成本提供了基本可用的云数据库服务
  • 双节点高可用版则是适合绝大多数业务场景的模式,两个节点分布于一个地区的两个可用区,故障时,切换速度较快,数据双副本,可靠性也比较高
  • 三节点企业版,则通过X-Paxos实现底层数据一致,并以三副本(两份数据+一份日志)保障数据可靠性

2.1 基础版(即单节点版本)

阿里云基础版使用阿里云云盘作为数据库存储,挂载在数据库的计算节点上,实现了存储与计算的分离。这使得,计算节点出现故障的时候,重新使用一个新的计算节点,再重新挂载原来的数据库存储,即可启动数据库,恢复出现故障的数据库。所以,在计算节点发生故障的时候,RPO通常小于1分钟,RTO则为5分钟~一小时。当整个可用区发生故障的时候,RPO和RTO的值则依赖数据库备份的频率情况。

2.2 高可用版

两节点高可用是用户使用最多的版本,也是数据库最为常见的架构。数据库有主备两个节点组成,通过数据库层的逻辑日志进行复制。相比单节点,无论是在数据可靠性、服务的可用性都有非常大的提升。由于主备节点都在同一个大region,日志延迟通常都非常小,所以发生单节点故障时,高可用版的数据可靠性通常是比较高的。注意到,AWS对应的双节点版本的RPO是零,那么阿里云数据库怎样呢?

具体的,对阿里云RDS MySQL,阿里云的两节点高可用,根据所选择的参数模板分为如下三类:

  • 高性能:sync_binlog=1000, innodb_flush_log_at_trx_commit=2, async
  • 异步模式:sync_binlog=1, innodb_flush_log_at_trx_commit=1, async
  • 默认:sync_binlog=1, innodb_flush_log_at_trx_commit=1, semi-sync

其中,“高性能”版本和“异步”版本,都是异步复制,在发生主节点故障时,因为复制为异步的,可能会有少部分的事务日志没有传到备节点,则可能会丢失少部分事务。也就是说,这两个版本为了实现更好的性能,在数据库的RPO上做了小的让步。“默认”版本,使用了半同步复制,通常,数据可靠性会更高。但因为半同步可能会有退化的场景,所以,该模式下数据复制还是在极端的情况下,还会有数据丢失的可能性。

那么,既然“异步”模式和“高性能”都有数据丢失的风险,他们的区别是什么什么呢?简单的概括,“异步”产生微小数据丢失的可能性更小。因为,主备节点通过设置sync_binlog=1, innodb_flush_log_at_trx_commit=1,可以最大可能性的保障,主节点的数据可靠性。

事实上,高可用版本是可以满足绝大多数业务场景的需要的,一方面同一个可用区内数据传输延迟非常小,日志传输通常都非常通畅,即便主节点发生故障,实际的情况中,通常不会出现日志延迟。另外,主节点失败后,通常可以通过重启等方式恢复,云厂商的硬件都有着较为标准的硬件过保淘汰的机制,硬件完全不可用的情况也并不多。另外,底层磁盘会通过硬RAID或者软RAID的方式,保障磁盘数据存储的可靠性,数据即便是在一台机器上,也会保存在两块盘上。

两节点高可用版本在某些特殊场景下,数据还是存在一些不可用风险,例如,当其中一个节点发生故障,而本地数据量又非常大时,需要重新在一台新的机器上搭建备节点时,因为数据量较大,重建时间通常会比较长,而这时候,主节点则会一直单节点运行,如果不幸主节点再出现故障,则会出现不可用或者数据丢失。如果,对数据的安全性有更高的要求,则可以考虑选择“三节点企业版”。

2.3 三节点企业版

当前仅RDS MySQL有该版本。三节点企业版使用了基于X-Paxos[^4]的一致性协议实现了数据的同步复制,适用于数据安全可靠性要求非常高的场景,例如金融交易数据等。三节点中,有一个节点仅存储日志,以此实现接近于两个节点的成本与价格,实现更高的数据安全与可靠性。

三节点企业版在创建的时候,可以选择分布在1~3个可用区。如果需要跨可用区的容灾,则可以让三个副本分布于三个可用区,如果需要更高的性能,则可以让三个副本都在同一个可用区。

2.4 关于MySQL的参数sync_binlog, innodb_flush_log_at_trx_commit

在阿里云RDS的高可用参数模板选择中,不同的参数模板,最主要的区别就是这两个参数的不同配置。这是MySQL和InnoDB在数据安全性上最重要的两个参数。双1设置(sync_binlog=1, innodb_flush_log_at_trx_commit=1)是数据安全性最高的配置。

数据库是日志先行(WAL)的系统,通过事务日志的持久化存储来保障数据的持久化。在一般的Linux系统中,数据写入磁盘的持久化需要通过系统调用fsync来完成,相对于内存操作,fsync需要将数据写入磁盘,这是一个非常“耗时”的操作。而上面这两个参数就是控制MySQL的二进制日志和InnoDB的日志何时调用fsync完成数据的持久化。所以,这两个参数的配置很大程度上反应了MySQL在性能与安全性方面的平衡。

其中,sync_binlog代表了,MySQL层的日志(即二进制日志)的刷写磁盘的频率,如果设置成1,则代表每个二进制日志写入文件后,都会进行强制刷盘。如果设置成0,则代表MySQL自己不会强制要求操作系统将缓存刷入磁盘,而由操作系统自己来控制这个行为。如果设置成其他的数字N,则代表完成N个二进制日志写入后,则进行一次刷写数据的系统调用。

innodb_flush_log_at_trx_commit则控制了InnoDB的日志刷写磁盘的频率。取值可以是0,1,2。

  • 其中1最严格,代表每个事务完成后都会刷写到磁盘中。
  • 如果该参数设置成0,那么在事务完成后,InnoDB并不会立刻调用文件系统写入操作也不会调用磁盘刷写操作,而是每隔1秒才调用一次文件系统写入操作和磁盘刷写操作。那么,在操作系统崩溃的情况下,可能会丢失1秒的事务。
  • 如果该参数设置成2,那么,每次InnoDB事务完成的时候,都会通过系统调用write将数据写入文件(这时候可能只是写入到了文件系统的缓存,而不是磁盘),但是每隔1秒才会进行一次刷写到磁盘的操作。那么,在操作系统崩溃的情况下,可能会丢失1秒的事务。相比设置成0,该设置会让InnoDB更加频繁的调用文件系统写入操作,数据的安全性要比设置成0高一些。

我们可以通过下图来理解这两个参数的含义,以及在操作系统中对应的“写入文件系统”与“刷写数据到磁盘”的含义。首先,在数据库的事务处理过程中,会产生binlog日志和InnoDB的redo日志,这两个日志分别在MySQL Server层面和InnoDB引擎层面保障了事务的持久性。在事务提交的时候,数据库会先将数据“写入文件系统”,通常文件系统会先将数据写入文件缓存中,该缓存是在内存中,这样就意味着,如果发生操作系统级别的宕机,那么写入的日志就会丢失。为了避免这种数据丢失,数据库接着会通过系统调用,“刷写数据到磁盘”中。此时,即可以认为数据已经持久化到磁盘中。

这时,再回头看看阿里云RDS的参数模板。在高性能模板中,”sync_binlog=1000, innodb_flush_log_at_trx_commit=2, async”,代表了在写入1000个binlog日志后再进行刷写数据到磁盘的操作,InnoDB的日志则都会先写入文件系统,然后每隔一秒进行一次刷写数据到磁盘。在“默认模式下,“默认:sync_binlog=1, innodb_flush_log_at_trx_commit=1, semi-sync”,则是最严格的日志模式,也就是会保障每个事务日志安全的刷写到磁盘。

日志的刷写模式对性能有非常大的影响。如果不去关注这些参数,就直接去测试不同云厂商的性能,则会发现,云厂商之间的RDS有着非常大的性能差异。通常,这些差异并不是厂商之前的技术能力导致的,更多的是由于他们在对于安全性和性能的平衡时,选择的不同的平衡点。

03资源复用与规格

从资源共享与隔离上,RDS又分为:通用型、独享型和共享型。具体的:

  • “通用型”适合一般的业务使用场景,但有一定的CPU共享率,也就说是,有一定的概率实例的资源可能会被其他实例争抢而导致性能的波动 。
  • “独享型”则使用完全独享的CPU的资源和内存资源,不会共享其他人的资源,自己的资源也不会被其他人共享,所以,有更稳定的性能。
  • “共享型”则与通用型类似CPU资源会被共享,并且共享率更高,所以性价比更高,同时受到资源争抢的影响的可能性也更大,当前仅SQL Server支持。

除了,上述主要规格类型之外,阿里云还提供了“独占物理机”规格,选择该规格的用户可以完全的独占一台物理机的资源:

04数据库专属集群MyBase

专属集群MyBase是阿里云推出的一种特殊的形态。可以理解为,是一种全托管RDS与自建数据库的中间形态。在全托管的RDS基础上,提供了两个重大的能力:

  • 允许用户登录数据库所在的主机
  • 允许用户配置数据库实例CPU的“超配比”

当然,要求是用户一次购买一个非常大的、可以容纳多个RDS实例的“大集群”,专属集群则提供了以上两个能力,以及RDS其他的基本能力,包括安装配置、监控管理、备份恢复等一系列生命周期管理能力。

使用这种规格,用户具备更大的自由度。一方面可以登录主机,观测主机与数据库的状态,或者将自己原有的监控体系部署到专属集群中。另一方面,用户可以根据自己的业务特点,控制集群内的CPU资源的超配比。对于核心的应用,则使用资源完全不超配的集群;对于响应时间没有那么敏感的应用,例如开发测试环境,则可以配置高达300%的CPU超配比,以此大大降低数据库的成本。

05关于本地盘与云盘版

阿里云的主要版本都会支持本地SSD和高性能云盘。他们的差异在于计算节点与磁盘存储是否在同一台物理机器上,对于使用高性能云盘的规格,通常是通过挂载一个同地区的网络块设备作为存储。

对于阿里云厂商来说,未来主推的将是云盘版。原因是云盘相对于本地盘来说,有很多的优势:

  • 统一使用云盘版,让云厂商的供应链管理变得简单。如果使用本地盘版本,意味着数据库机型定制性会增强,供应链的困难会增加产品的成本,最终影响价格。另外,简单的供应链也会让产品的部署更加标准化,更加敏捷地实现多环境多区域的部署。
  • 使用云盘版,也可以理解为是“存储计算分离”的架构,那么如果计算节点故障,则可以快速通过使用一台新的计算节点并挂载云盘,而实现高可用。这种方式有着非常好的通用性,无论是哪种数据库都可以使用,而无需考虑数据库种类之间的差异。无论是MySQL还是PostgreSQL、Oracle都可以使用这种方式实现高可用。
  • 云盘版本身提供了一定的高可用与高可靠能力。云盘本身数据可以通过RAID或者EC算法实现数据的冗余与高可用,并且可以将数据分片到不同的磁盘与机器上,整体的吞吐会更高。
  • 云盘版本身是分布式的,可以提供更高的吞吐,通常还可以提供更大的存储空间。例如,各个云厂商的云盘存储都可以提供12TB或32TB的存储空间,基本上可以满足各类业务需要。

当然,使用云盘也有一些缺点,例如,相比本地盘,云盘的访问延迟更大,需要通过网络访问,而对于数据库这类IO极其敏感的应用,本地磁盘的IO性能的稳定性通常会更强一些

06关于通用型与独享型的性能

独享型规格的资源完全由用户独立使用,价格通常更贵。而通用型则因为部分资源的共享,会导致性能在某些不可预期的情况下发生一些不可预期的波动。而独享型规格也更贵,更多的企业级场景,也会推荐使用独享型,会有很多人会认为独享型的性能也更高。而实际上,如果做过实际测试就会发现,一般来说,相同的规格,通用型的性能与吞吐通常都会更高。

所以,实际情况是,通用型的价格更加便宜,性能也会更好。缺点在于,可能会出现一些不可预期的性能波动,而因为大多数数据库应用都是IO密集型的,所以,实际场景中,这种不可预期的波动并不是非常多。

所以,这两个版本的选择,需要用户根据自己的实际情况去选择。如果,可以接受偶尔的性能波动,则一定是建议选择通用型的;如果应用对数据库的响应时间极其敏感,则应该选择独享型。另外,当前,通用型最大规格仅支持12核CPU,所以对于压力非常大系统,则只能选择独享型。

07关于超配比

对于在线数据库应用来说,通常是IO或者吞吐密集型的。CPU资源在很多时候,会有一定的冗余。对于云厂商来说,则可以通过超配CPU的售卖率来降低成本,同时也降低数据库资源的价格,这就是通用型背后重要的逻辑。

而一般来说,可以超配的通常只有CPU资源。磁盘资源虽然可以超配,但是实际使用中,是不能重合的,当用户的磁盘占用增到购买值的时候,资源则不可以共享,这与CPU的超配并不相同。内存资源则更加是独享的,Buffer Pool的通常是满的,无论这些内存页是否被实际使用,数据库总是会尽力在内存中存储尽可能多的数据。

MyBase提供的一个重要配置项,就是可以用户自定义底层资源的超配比,该比率取值从100%~300%。也就是说,一个32核CPU的资源,最多可以分配给12个8核CPU的实例使用,看起来是96=12*8个CPU被使用,即实现了300%的超配比。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让你秒读懂阿里云数据库架构与选型 的相关文章

  • 【mcuclub】定时器/计数器

    一 简介 定时器实际上就是Soc当中的一个内部外设 定时器常与计数器扯到一起 xff0c 计数器也是Soc当中的一个内部外设 xff0c 计数器顾名思义是用来计数的 xff0c 就和我们的秒表一样 xff0c 秒表实际上就是一个计数器 xf
  • 基于A*算法自动引导车的路径规划(Matlab代码实现)

    x1f4a5 x1f4a5 x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维缜密 xff0c 逻辑清晰 xff0c 为
  • 【文章转载】使用常见Matlab工具箱调节pid参数(飞机垂直速度控制系统设计)

    申明 xff1a 这是一篇转载文章 xff0c 本人害怕原链接失效 xff0c 故转载 xff0c 没有商用 xff0c 作者也可也私我删除 使用常见Matlab工具箱调节pid参数 小白的第一篇知乎文章 xff0c 如果有不准确的地方 x
  • 制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

    2 ORBSLAM2 测试自己拍摄的数据集 使用手机 摄像机等设备拍摄视频 xff0c 对应我们只能使用单目 Monocular 2 1对相机标定 首先我们要对相机进行标定 xff0c 使用 MATLAB 里面的标定工具包 标定好之 后创建
  • c++的好处

    1 更新迭代慢 xff0c 技术成熟的很高 xff0c 基本不会有太大的改动 xff0c 工作后学习压力小 2 C C 43 43 是系统编程层级唯一的一门高级语言 xff0c 速度快 xff0c 效率高 不用担心今后会被取代 3 C C
  • lacp协议

    LACP xff08 Link Aggregation Control Protocol xff0c 链路聚合控制协议 xff09 将多条链路逻辑上模拟成一条链路 xff0c 以增加网络带宽 xff08 通常网络多条链路情况下 xff0c
  • Windows 10 下安装Linux

    使用Hype V 快速安装 选择的Ubuntu 22 04 LTS 安装一切正常 xff0c 登录提示 登录以后提示connecting to sesman ip 127 0 0 1 port 3350 关闭查看菜单的 增强模式 xff0c
  • mvvm是什么?

    1 总结 一句话总结 xff1a vm层 xff08 视图模型层 xff09 通过接口从后台m层 xff08 model层 xff09 请求数据 xff0c vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 xff
  • 汉诺塔问题(C语言实现)

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • ubuntu 16.04版本安装docker以及创建docker容器

    一 简介 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c 也可以实现虚拟化 容器是完全使用沙箱机制 xff0c
  • 字符串操作函数strstr

    目录 一 strstr函数介绍 二 strstr函数的模拟 三 代码实现 一 strstr函数介绍 在编写程序的过程中 xff0c 我们不可避免地会调用字符串操作函数 xff0c 今天要介绍的字符串操作函数是strstr函数 strstr函
  • 【无标题】前端工程师面试题手册-有点长但是很有用

    不是原作者 想想要获取更多前端开发相关学习资料 xff0c 请加微信1124692领取 前端工程师面试题手册 目录 1 前端基础 11 1 1 HTTP HTML 浏览器
  • 超详细的VMware虚拟机安装Linux图文教程保姆级

    目录 一 下载VMware 二 安装VMware 三 下载Linux 四 安装Linux 五 设置本地机与虚拟机之间的数据传输 xff08 复制 粘贴等操作 xff09 一 下载VMware VMware官网有两个版本 xff0c 分别是
  • 仿牛客技术博客项目常见问题及解答(三)

    书接上回 xff1a 仿牛客技术博客项目常见问题及解答 xff08 二 xff09 李孛欢的博客 CSDN博客 13 项目中的kafka是怎么用的 xff1f kafka入门 Apache Kafka是一个分布式流平台 一个分布式的流平台应
  • [Java] 继承 和 多态(学习总结)

    目录 继承 一 继承主要表示概念层上的 is a 的关系 二 什么是继承 三 语法 四 继承方式 xff1a 五 访问权限 六 构造方法 七 父类的属性和方法的访问 八 重载和重写 xff08 前提是子类是有权限的 xff09 九 执行顺序
  • 第七章-X86汇编语言从实模式到保护模式

    第七章 比高斯更快的计算 7 3 显示字符串 39 1 43 2 43 3 43 43 100 61 39 字符串编译阶段 xff0c 编译器将把它们拆开 xff0c 形成一个个单独的字节jump near start跳过没有指令的数据区1
  • 【java】杂七杂八的基础知识

    1 当用javac命令编译Java源程序 xff08 java文件 xff09 时 xff0c 必须写出该源文件的完整文件名 xff0c 包括扩展名 java 2 当用java exe命令运行一个字节码 class 文件时 xff0c 不必
  • 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

    摘要 修剪神经网络的参数可以在训练和测试期间节省时间 内存和能量 最近的研究发现 xff0c 通过一系列昂贵的训练和修剪周期 xff0c 初始化时存在中奖彩票或稀疏可训练的子网络 这就提出一个基本问题 xff1a 我们能否在初始化时识别出高
  • 常见通信协议-原理篇

    目录 前言通信协议分类1 串行与并行通信2 同步与异步通信3 串行通信数据传送方向常见通信方式分类不同分类协议需要额外处理的问题 各通信协议详解一 UART 通用异步收发器 1 接口连接方式2 帧格式波特率 二 IIC 集成电路总线 1 接

随机推荐

  • 树莓派安装ubuntu20.04、图形桌面、ROS笔记

    目录标题 1 安装ubuntu方式1 xff1a 树莓派镜像烧录器方式2 xff1a win32 Disk Imager 烧录软件 2 添加wifi方式一 network config文件方式二 50 cloud init yaml文件 x
  • Git 常用命令

    git 注 xff1a 在使用的任何的 git 命令前 xff0c 都要切换到 git 项目目录下 git init 初始化一个 git 仓库 git status 查看当前 git 仓库的状态 git add file 修改 file 文
  • 字符串查找函数strstr,strtok的详细介绍

    strstr 返回str2在str1中第一次出现的指针 xff0c 如果str2不是str1的一部分 xff0c 则返回空指针str1 xff08 简单来说就是在字符串里找子字符串 xff09 可以看到上图strstr函数找到子串后会把剩余
  • 实现Windows远程连接

    此方法不止局限于局域网内 xff0c 只要被控制端的电脑连接上了互联网 xff0c 那么在任意一个电脑上都可以连接 话不多说直接上干货 xff01 xff01 xff01 配置被控制端电脑 一 开启远程桌面访问功能 不是windwos专业版
  • Jetpack Compose 不止是一个UI框架~

    Jetpack Compose是用于构建原生Android UI的现代工具包 Jetpack Compose使用更少的代码 xff0c 强大的工具和直观的Kotlin API xff0c 简化并加速了Android上的UI开发 这是Andr
  • 父类和子类方法的调用

    由于没有找到想要的解释 xff0c 于是自己就在idea上自测来寻找答案 关于父类 xff0c 子类 xff0c 多态之间方法的调用 package 思考 public class 子类调用 public static void main
  • vector介绍与使用(C++)

    目录 一 vector的介绍 二 vector的使用 2 1构造函数 2 2vector iterator 的使用 2 3vector 空间增长问题 2 4 vector 增删查改 2 5 vector 迭代器失效问题 一 vector的介
  • 网络层——IP协议详细解读

    文章目录 IP协议1 IP协议的报文格式2 IP协议的地址管理3 IP地址的组成4 IP协议的路由选择 IP协议 之前介绍了传输层的重点协议 xff0c TCP和UDP协议 xff0c 以下将介绍网络层的重点协议IP协议 1 IP协议的报文
  • 基于opencv实现追踪物体的功能

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp From sztu 自动化专业的小菜鸡 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 本篇将介绍计算机视觉的物体追踪 基于py
  • PX4源码中CMakeLists.txt文件的相关含义

    在px4每个模块中 xff0c 都会引用到CMakeLists txt文件 比如 代码 px4 add module MODULE modules attitude estimator q MAIN attitude estimator q
  • 位置式Pid和增量式Pid的定义及应用

    PID算法是一个典型的闭环控制系统 P I D xff0c 比例 积分 微分 开环 xff1a 输入量对输出量没有反馈作用 xff1b 闭环 xff1a 输入量对输出量有反馈作用 位置式Pid 位置式Pid就是位置闭环控制 xff0c 位置
  • Mysql中的in和find_in_set的区别?

    1 是否使用索引 find in set xff1a 不使用索引 xff0c 是全表扫描in xff1a 使用索引 2 使用方法 在mysql中in的使用情况如下 xff08 in里面放的是常量 xff09 xff1a select fro
  • Docker 常用命令---持续更新中

    Docker xff1a Docker的三大核心概念 xff1a 镜像 容器 仓库 镜像 xff1a 类似虚拟机的镜像 用俗话说就是安装文件 容器 xff1a 类似一个轻量级的沙箱 xff0c 容器是从镜像创建应用运行实例 xff0c 可以
  • ubutu的Realsense摄像头的环境配置的报错解决(个人认为官方文档存在问题)以及官方视频流样例测试(无需摄像头)

    Realsense支持多种语言进行开发 xff0c 因为之前学过python xff0c 所以计划使用Pycharm进行相关的项目开发 xff0c 由于没带摄像头回家 xff0c 所以使用了官方的视频流进行测试 xff0c 以下是 xff3
  • launch文件

    1 launch文件 可以一次性启动多个ROS节点 实现 选定功能包右击 gt 添加 launch 文件夹 选定 launch 文件夹右击 gt 添加 launch 文件 编辑 launch 文件内容 lt launch gt lt nod
  • ROS文件系统相关命令

    1 增 catkin create pkg 自定义包名 依赖包 61 61 61 创建新的ROS功能包 sudo apt install xxx 61 61 61 安装 ROS功能包 2 删 sudo apt purge xxx 61 61
  • ros服务通信

    1 srv 61 请求 43 响应 2 不要重复添加路径 xff0c 会导致头文件寻找不到 客户端 include 34 ros ros h 34 include 34 plumbing server client AddInts h 34
  • ros常用组件

    一 TF坐标变换 transform frame frame id是被参考的坐标系 xff0c child frame id是另一个坐标系 translation代表child frame id相对于frame id的偏移量 rotatio
  • FreeRTOS学习(1)-- FreeRTOS任务创建、调度、任务间通信

    FreeRTOS学习 xff08 1 xff09 FreeRTOS任务创建 调度 任务间通信 文章目录 FreeRTOS学习 xff08 1 xff09 FreeRTOS任务创建 调度 任务间通信前言一 FreeRTOS任务状态二 Free
  • 让你秒读懂阿里云数据库架构与选型

    01 阿里云RDS的架构与规格大图 下图从高可用类型 数据可靠性 资源复用率 规格大小 规格代码等角度 xff0c 较为完整的概况了当前RDS主要的架构与规格 xff1a 从高可用区架构上 xff0c 分为单节点 xff08 基础版 xff