Oracle RAC配置原理详解:构建高可用与高性能的数据库集群

在现代企业级应用中,数据库的高可用性和高性能是至关重要的。Oracle Real Application Clusters(RAC)是Oracle数据库提供的一种集群解决方案,能够将多个数据库实例部署在不同的服务器上,实现负载均衡和故障切换,从而确保数据库的高可用性和高性能。本文将深入解析Oracle RAC的配置原理,帮助开发者理解其工作机制并掌握配置技巧。

一、什么是Oracle RAC?

Oracle RAC(Real Application Clusters)是一种多实例、多节点的数据库集群技术,允许多个数据库实例同时访问同一个数据库。RAC的核心优势在于:

  1. 高可用性:当一个节点发生故障时,其他节点可以继续提供服务,确保数据库的持续可用。
  2. 负载均衡:通过将请求分发到多个节点,RAC能够充分利用集群资源,提升系统性能。
  3. 扩展性:可以动态添加节点,以应对不断增长的业务需求。

二、Oracle RAC的核心组件

Oracle RAC(Real Application Clusters)的架构设计非常复杂,其核心组件共同协作,实现了多节点数据库实例的高效运行。理解这些组件的功能和作用,是掌握RAC配置和优化的关键。以下是Oracle RAC的核心组件及其详细说明:


1. 共享存储(Shared Storage)

共享存储是Oracle RAC的基础,所有节点都需要访问同一个数据库文件。共享存储确保了数据的一致性和可用性,常见的共享存储技术包括:

  • SAN(Storage Area Network):通过高速网络连接存储设备,提供高性能和可扩展性。
  • NAS(Network Attached Storage):通过网络文件系统(如NFS)提供共享存储。
  • ASM(Automatic Storage Management):Oracle提供的存储管理工具,能够自动分配和优化存储资源。

共享存储中存储的文件包括:

  • 数据文件(Data Files):存储实际的数据。
  • 控制文件(Control Files):记录数据库的结构和状态信息。
  • 日志文件(Redo Log Files):记录数据库的变更操作,用于恢复和故障切换。

2. 集群管理软件(Clusterware)

Clusterware是Oracle RAC的核心管理组件,负责管理集群中的节点、资源和故障切换。它的主要功能包括:

  • 节点管理:监控集群中每个节点的健康状态,检测节点故障。
  • 资源管理:管理集群中的资源(如数据库实例、虚拟IP、服务等),确保资源的高可用性。
  • 故障切换:在节点或资源发生故障时,自动将资源转移到其他节点,确保服务的连续性。
  • 仲裁机制:防止集群脑裂(Split Brain)问题,确保集群的一致性。

Clusterware的核心进程包括:

  • CRSD(Cluster Ready Services Daemon):管理集群资源。
  • CSSD(Cluster Synchronization Services Daemon):监控节点状态和集群同步。
  • EVMD(Event Manager Daemon):处理集群事件和通知。

3. 数据库实例(Database Instances)

在Oracle RAC中,每个节点上运行一个独立的数据库实例,多个实例共享同一个数据库文件。每个实例都有自己的内存区域(SGA和PGA),但共享存储中的数据文件、控制文件和日志文件。数据库实例的主要组件包括:

  • SGA(System Global Area):存储数据库的共享内存区域,包括缓存、共享池和日志缓冲区。
  • PGA(Program Global Area):存储每个会话的私有内存区域,用于排序、哈希操作等。
  • 后台进程:管理数据库的运行,包括SMON(系统监控进程)、PMON(进程监控进程)、DBWn(数据库写进程)等。

多个实例通过高速网络通信,协调对数据的访问,确保数据的一致性和完整性。


4. 高速互联网络(Interconnect)

高速互联网络是Oracle RAC中节点之间通信的关键组件,用于传输缓存同步信息和锁管理信息。高速网络的性能直接影响RAC的整体性能,因此需要选择高性能的网络设备(如InfiniBand或10GbE)。

高速互联网络的主要作用包括:

  • 缓存融合(Cache Fusion):在多个实例之间传输数据块,减少磁盘I/O。
  • 全局资源管理:协调多个实例对共享资源的访问,防止资源冲突。
  • 心跳检测:监控节点的健康状态,检测节点故障。

5. 自动存储管理(ASM)

ASM(Automatic Storage Management)是Oracle提供的存储管理工具,专门用于管理共享存储中的数据库文件。ASM的主要功能包括:

  • 磁盘组管理:将多个物理磁盘组合成一个逻辑磁盘组,简化存储管理。
  • 数据分布:自动将数据分布到多个磁盘上,实现负载均衡和性能优化。
  • 冗余与恢复:支持多种冗余级别(如镜像和条带化),确保数据的高可用性。
  • 动态扩展:支持在线添加或移除磁盘,无需停机。

ASM的核心进程包括:

  • ASMB(ASM Background Process):管理ASM实例和数据库实例之间的通信。
  • RBAL(Rebalance Process):负责磁盘组的重新平衡操作。

6. 虚拟IP(VIP)

虚拟IP(Virtual IP)是Oracle RAC中用于实现高可用性的重要组件。每个节点都有一个虚拟IP,客户端通过虚拟IP连接到数据库。当某个节点发生故障时,虚拟IP会自动转移到其他节点,确保客户端的连接不会中断。

虚拟IP的主要作用包括:

  • 故障切换:在节点故障时,快速将客户端连接转移到其他节点。
  • 负载均衡:通过虚拟IP将客户端请求分发到多个节点,提升系统性能。

7. 服务(Services)

服务是Oracle RAC中用于管理客户端连接和负载均衡的重要组件。通过服务,可以将特定的工作负载分配到指定的节点或实例上,从而实现更精细的资源管理和优化。服务的主要功能包括:

  • 负载均衡:将客户端请求均匀分发到多个实例,避免单个实例过载。
  • 故障切换:在实例或节点发生故障时,自动将客户端连接转移到其他实例。
  • 优先级管理:为不同的服务配置优先级,确保关键业务优先分配到高性能节点。

服务的配置可以通过Oracle Net Services或srvctl命令行工具完成。例如,使用以下命令创建一个服务:

srvctl add service -d <db_name> -s <service_name> -r <primary_instance> -a <standby_instance>

8. 全局缓存服务(Global Cache Service, GCS)

全局缓存服务是Oracle RAC中实现缓存融合(Cache Fusion)的核心组件。它负责管理多个实例之间的数据块传输和锁管理,确保数据的一致性和完整性。GCS的主要功能包括:

  • 数据块传输:当一个实例需要访问某个数据块时,如果该数据块已经在其他实例的缓存中,GCS会通过高速网络将数据块传输到请求实例。
  • 锁管理:协调多个实例对共享资源的访问,防止资源冲突。
  • 缓存一致性:确保多个实例的缓存数据保持一致,避免脏读或数据不一致问题。

GCS的性能直接影响RAC的整体性能,因此需要优化高速网络和缓存配置。


9. 全局队列服务(Global Enqueue Service, GES)

全局队列服务是Oracle RAC中用于管理全局锁和队列的组件。它负责协调多个实例对共享资源的访问,确保资源的独占性和一致性。GES的主要功能包括:

  • 锁管理:管理全局锁(如行锁、表锁等),防止多个实例同时修改同一资源。
  • 队列管理:管理全局队列(如消息队列、任务队列等),确保任务的顺序执行。
  • 死锁检测:检测和解决全局死锁问题,确保系统的正常运行。

GES与GCS紧密协作,共同实现RAC的高效运行。


10. 投票磁盘(Voting Disk)

投票磁盘是Oracle RAC中用于防止集群脑裂(Split Brain)的关键组件。它存储了集群的仲裁信息,用于确定哪些节点是活跃的,哪些节点是故障的。投票磁盘的主要功能包括:

  • 仲裁机制:在节点间通信中断时,通过投票磁盘确定哪些节点可以继续运行。
  • 高可用性:通常配置多个投票磁盘,确保在单个磁盘故障时集群仍能正常运行。

投票磁盘的配置可以通过crsctl命令行工具完成。例如,使用以下命令添加投票磁盘:

crsctl add votedisk <disk_path>

11. OCR(Oracle Cluster Registry)

OCR(Oracle Cluster Registry)是Oracle RAC中用于存储集群配置信息的组件。它记录了集群资源、节点状态、服务配置等关键信息。OCR的主要功能包括:

  • 配置管理:存储集群的配置信息,确保集群的一致性和可管理性。
  • 高可用性:通常配置多个OCR文件,确保在单个文件损坏时集群仍能正常运行。

OCR的配置可以通过ocrconfig命令行工具完成。例如,使用以下命令备份OCR:

ocrconfig -export <backup_file>

Oracle RAC的核心组件共同协作,实现了多节点数据库实例的高效运行。通过深入理解这些组件的功能和作用,开发者可以更好地配置和优化RAC集群,满足企业级应用的高可用性和高性能需求。在实际项目中,合理配置共享存储、Clusterware、高速网络和ASM等组件,是确保RAC集群稳定运行的关键。

三、Oracle RAC的工作原理

Oracle RAC(Real Application Clusters)通过多实例共享数据库、缓存融合、全局资源管理和故障切换等机制,实现了高可用性、高性能和可扩展性。以下是其工作原理的详细解析:


1. 多实例共享数据库

在Oracle RAC环境中,多个数据库实例可以同时访问同一个物理数据库。每个实例运行在独立的节点上,拥有自己的内存区域(SGA和PGA),但它们共享存储中的数据文件、控制文件和日志文件。这种架构的核心特点包括:

  • 共享存储:所有实例通过共享存储(如SAN、NAS或ASM)访问同一组数据库文件,确保数据的一致性。
  • 独立内存:每个实例有自己的SGA(System Global Area)和PGA(Program Global Area),用于缓存数据和执行会话操作。
  • 并行访问:多个实例可以同时读写数据库,充分利用集群资源,提升系统性能。

多实例共享数据库的架构使得RAC能够实现负载均衡和高可用性,同时支持动态扩展节点以满足业务需求。


2. 缓存融合(Cache Fusion)

缓存融合是Oracle RAC的核心技术,用于协调多个实例对数据的访问。它的主要目标是通过减少磁盘I/O来提升性能。缓存融合的工作原理如下:

  • 数据块传输:当一个实例需要访问某个数据块时,如果该数据块已经在其他实例的缓存中,缓存融合会通过高速互联网络将数据块传输到请求实例,而不是从磁盘读取。
  • 一致性维护:缓存融合确保多个实例的缓存数据保持一致。例如,当一个实例修改了某个数据块时,缓存融合会通知其他实例更新其缓存中的该数据块。
  • 性能优化:通过减少磁盘I/O和优化数据块传输,缓存融合显著提升了RAC的性能,尤其是在高并发场景下。

缓存融合的实现依赖于高速互联网络和全局缓存服务(GCS),确保数据块传输的低延迟和高效率。


3. 全局资源管理(Global Resource Management)

在Oracle RAC中,多个实例同时访问共享资源(如数据块、表、索引等),因此需要一种机制来协调资源的访问,防止冲突和数据不一致。全局资源管理机制的核心组件包括:

  • 全局锁(Global Enqueue):用于协调多个实例对共享资源的访问。例如,当一个实例需要修改某个数据块时,它会先获取该数据块的全局锁,以防止其他实例同时修改。
  • 全局队列(Global Queue):用于管理任务的顺序执行。例如,当一个实例需要执行某个任务时,它会将任务放入全局队列,确保任务的顺序执行。
  • 死锁检测:全局资源管理机制能够检测和解决全局死锁问题,确保系统的正常运行。

全局资源管理的实现依赖于全局缓存服务(GCS)和全局队列服务(GES),它们共同协作,确保资源访问的独占性和一致性。


4. 故障切换(Failover)

故障切换是Oracle RAC实现高可用性的关键技术。当一个节点或实例发生故障时,故障切换机制能够快速将资源和工作负载转移到其他节点,确保数据库的持续可用。故障切换的工作原理如下:

  • 故障检测:Clusterware通过心跳机制监控每个节点的健康状态。如果某个节点无法响应,Clusterware会将其标记为故障节点。
  • 资源转移:Clusterware将故障节点上的资源(如虚拟IP、服务、数据库实例等)转移到其他节点。例如,虚拟IP会从故障节点转移到健康节点,确保客户端的连接不会中断。
  • 工作负载接管:其他实例会接管故障实例的工作负载,确保数据库的持续可用。例如,如果某个实例故障,其正在执行的事务会由其他实例接管并完成。

故障切换的实现依赖于Clusterware和服务的配置,确保在故障发生时能够快速恢复服务。

Oracle RAC通过多实例共享数据库、缓存融合、全局资源管理和故障切换等机制,实现了高可用性、高性能和可扩展性。多实例共享数据库充分利用了集群资源,缓存融合减少了磁盘I/O,全局资源管理确保了数据的一致性,故障切换保障了系统的持续可用。这些技术的协同工作使得Oracle RAC成为企业级数据库集群的理想选择。

四、Oracle RAC的配置步骤

以下是一个典型的Oracle RAC配置流程:

1. 环境准备

  • 硬件:准备多台服务器、共享存储和高速网络设备。
  • 操作系统:确保所有节点使用相同的操作系统版本,并安装必要的补丁。
  • 网络配置:为每个节点配置公共IP、私有IP和虚拟IP(VIP)。

2. 安装Oracle Clusterware

  • 在所有节点上安装Oracle Clusterware。
  • 使用crsctl命令启动和配置集群。

3. 配置共享存储

  • 使用ASM或第三方存储管理工具配置共享存储。
  • 创建磁盘组并分配存储资源。

4. 安装Oracle数据库软件

  • 在所有节点上安装Oracle数据库软件。
  • 使用Oracle Universal Installer(OUI)进行安装。

5. 创建RAC数据库

  • 使用Database Configuration Assistant(DBCA)创建RAC数据库。
  • 在创建过程中指定集群节点和共享存储配置。

6. 配置负载均衡和故障切换

  • 使用Oracle Net Services配置客户端连接负载均衡。
  • 使用Service配置故障切换策略。

五、Oracle RAC的优化与监控

1. 性能优化

  • 缓存融合优化:通过调整DB_CACHE_SIZESHARED_POOL_SIZE参数优化缓存性能。
  • 网络优化:确保高速网络的带宽和低延迟,减少缓存融合的开销。
  • 负载均衡:使用Oracle的负载均衡功能,将客户端请求均匀分发到各个节点,避免单个节点过载。
  • 并行查询:通过配置并行查询参数(如PARALLEL_MAX_SERVERS),充分利用集群资源,提升查询性能。
  • 分区表:对大数据表进行分区,将数据分布到不同的节点上,减少单个节点的负载。

2. 监控与故障排查

为了确保RAC集群的稳定运行,需要实时监控集群状态并及时排查故障。以下是一些常用的监控工具和方法:

1. Oracle Enterprise Manager (OEM)

OEM是Oracle提供的图形化管理工具,可以监控RAC集群的健康状态、性能指标和资源使用情况。

2. 命令行工具
  • crsctl:用于管理Clusterware资源。例如,使用crsctl status resource -t查看集群资源状态。
  • srvctl:用于管理RAC数据库和服务。例如,使用srvctl status database -d <db_name>查看数据库状态。
  • asmcmd:用于管理ASM存储。例如,使用asmcmd lsdg查看磁盘组状态。
3. 日志文件
  • Clusterware日志:位于$GRID_HOME/log/<node_name>目录下,用于排查Clusterware相关问题。
  • 数据库日志:位于$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace目录下,用于排查数据库相关问题。

3. 高可用性配置

为了进一步提升RAC集群的高可用性,可以配置以下功能:

  • 1. 快速应用通知(FAN)和快速连接故障切换(FCF)

        FAN和FCF能够在节点或服务发生故障时,快速通知客户端并切换到可用节点,减少故障恢复时间。

  • 2. 服务优先级

        通过配置服务优先级,确保关键业务在故障切换时优先分配到高性能节点。

  • 3. 数据保护

        使用Oracle Data Guard或备份工具(如RMAN)定期备份数据,防止数据丢失。

六、常见问题与解决方案

1. 节点间通信延迟

如果节点间通信延迟较高,可能会影响缓存融合的性能。可以通过优化网络配置(如使用高性能网络设备)来解决问题。

2. 资源争用

多个实例同时访问共享资源时,可能会发生资源争用。可以通过调整锁管理参数(如LM_LOCKSLM_RESS)来优化资源分配。

3. 存储性能瓶颈

如果共享存储性能不足,可能会导致数据库性能下降。可以通过增加存储设备或优化ASM配置来提升存储性能。

4. 集群脑裂(Split Brain)

在极端情况下,集群可能会出现脑裂问题,即多个节点无法通信但都认为自己是主节点。可以通过配置仲裁机制(如使用投票磁盘)来避免脑裂。

七、总结

Oracle RAC是一种强大的数据库集群技术,能够为企业级应用提供高可用性、高性能和可扩展性。通过深入理解RAC的配置原理和优化方法,开发者可以更好地构建和管理数据库集群,满足业务需求。希望本文的内容能够帮助读者掌握Oracle RAC的核心技术,并在实际项目中灵活应用。

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

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

相关文章

ESP8266TCP客户端(单连接TCP Client)

单连接TCP Client 电脑作为服务器&#xff0c;8266作为客户端 1.配置WiFi模式 ATCWMODE3 //softAPstation mode 相应&#xff1a;ok 2.连接路由器 ATCWJAP“SSID”&#xff0c;“password” //SSID就是wifi的名字&#xff0c; password WIFI密码 响应&#xff…

【Linux】软硬连接与动静态库

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.软硬连接02.动静态库静态库&#xff08;Static Library&#xff09;动态库&#xff08;Dynamic Library&#xff09; 03.动态库加载 01.软硬连接 我们先看一下它的用法 这个是…

关于Springboot 应配置外移和Maven个性化打包一些做法

期望达到的效果是每次更新服务器端应用只需要更新主程序jar 依赖jar单独分离。配置文件独立存放于文件夹内&#xff0c;更新程序并不会覆盖已有的配置信息。 一、配置外移 1、开发环境外移 做法&#xff1a;在项目同级或者上级创建config文件夹放置配置文件&#xff0c;具体m…

阿里云操作系统控制台——解决服务器磁盘I/O故障

目录 引言 需求介绍 操作系统使用实例 获得的帮助与提升 建议 引言 你的云服务器是否遇到过系统响应变慢、服务超时&#xff0c;或者进程卡顿、磁盘空间不足、系统日志频繁告警的问题&#xff1f;这些情况在日常运维中并不少见&#xff0c;尤其是在 高负载或资源紧张时&a…

【英伟达AI论文】多模态大型语言模型的高效长视频理解

摘要&#xff1a;近年来&#xff0c;基于视频的多模态大型语言模型&#xff08;Video-LLMs&#xff09;通过将视频处理为图像帧序列&#xff0c;显著提升了视频理解能力。然而&#xff0c;许多现有方法在视觉主干网络中独立处理各帧&#xff0c;缺乏显式的时序建模&#xff0c;…

蓝桥杯备考:图论初解

1&#xff1a;图的定义 我们学了线性表和树的结构&#xff0c;那什么是图呢&#xff1f; 线性表是一个串一个是一对一的结构 树是一对多的&#xff0c;每个结点可以有多个孩子&#xff0c;但只能有一个父亲 而我们今天学的图&#xff01;就是多对多的结构了 V表示的是图的顶点集…

记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序&#xff08;一&#xff09;&#xff1a;注册账号及下载工具&#xff08;250308&#xff09;一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序&#xff08…

【Linux学习笔记】Linux基本指令分析和权限的概念

【Linux学习笔记】Linux基本指令分析和权限的概念 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

【消息队列】数据库的数据管理

1. 数据库的选择 对于当前实现消息队列这样的一个中间件来说&#xff0c;具体要使用哪个数据库&#xff0c;是需要稍作考虑的&#xff0c;如果直接使用 MySQL 数据库也是能实现正常的功能&#xff0c;但是 MySQL 也是一个客户端服务器程序&#xff0c;也就意味着如果想在其他服…

【HarmonyOS Next】鸿蒙加固方案调研和分析

【HarmonyOS Next】鸿蒙加固方案调研和分析 一、前言 根据鸿蒙应用的上架流程&#xff0c;本地构建app文件后&#xff0c;上架到AGC平台&#xff0c;平台会进行解析。根据鸿蒙系统的特殊设置&#xff0c;仿照IOS的生态闭环方案。只能从AGC应用市场下载app进行安装。这样的流程…

nuxt2 打包优化使用“compression-webpack-plugin”插件

在使用 Nuxt.js 构建项目时&#xff0c;为了提高性能&#xff0c;通常会考虑对静态资源进行压缩。compression-webpack-plugin 是一个常用的 Webpack 插件&#xff0c;用于在生产环境中对文件进行 Gzip 压缩。这对于减少网络传输时间和提高页面加载速度非常有帮助。下面是如何在…

不同开发语言之for循环的用法、区别总结

一、Objective-C &#xff08;1&#xff09;标准的c风格 for (int i 0; i < 5; i) {NSLog("i %d", i); } &#xff08;2&#xff09;for in循环。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …

ctfshow做题笔记—栈溢出—pwn65~pwn68

目录 前言 一、pwn65(你是一个好人) 二、pwn66(简单的shellcode&#xff1f;不对劲&#xff0c;十分得有十二分的不对劲) 三、pwn67(32bit nop sled)&#xff08;确实不会&#xff09; 四、pwn68(64bit nop sled) 前言 做起来比较吃力哈哈&#xff0c;自己还是太菜了&…

Git基础之工作原理

基础概念 git本地有三个工作区域&#xff0c;工作目录 Working Directory&#xff0c;暂存区Stage/Index和资源区Repository/Git Directory&#xff0c;如果在加上远程的git仓库就是四个工作区域 四个区域与文件交换的命令之间的关系 WorkSpace&#xff1a;工作区&#xff0c;就…

Linux 指定命令行前后添加echo打印内容

目录 一. 前提条件二. 通过sh脚本进行批量修改三. 通过Excel和文本编辑器进行批量转换四. 实际执行效果 一. 前提条件 ⏹项目中有批量检索文件的需求&#xff0c;如下所示需要同时执行500多个find命令 find ./work -type f -name *.java find ./work -type f -name *.html fi…

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 小伙伴们&#xff0c;你们好呀&#xff01;今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册&#xff0c;并…

pytorch 50 大模型导出的onnx模型优化尝试

本博文基于Native-LLM-for-Android项目代码实现,具体做了以下操作: 1、尝试并实现将模型结构与权重零散的onnx模型进行合并,通过该操作实现了模型加载速度提升,大约提升了3倍 2、突破了onnxconverter_common 无法将llm模型导出为fp16的操作,基于该操作后将10g的权重降低到…

Training-free Neural Architecture Search for RNNs and Transformers(预览版本)

摘要 神经架构搜索 (NAS) 允许自动创建新的有效神经网络架构&#xff0c;为手动设计复杂架构的繁琐过程提供了替代方案。然而&#xff0c;传统的 NAS 算法速度慢&#xff0c;需要大量的计算能力。最近的研究调查了图像分类架构的无训练 NAS 指标&#xff0c;大大加快了搜索算…

c++_二叉树的介绍

内存模型 一.内存中有代码区&#xff1b;栈区&#xff1b;数据段 堆区 1、栈区存放了函数所有局部变量和形参&#xff1b; 它的局限在于&#xff1a;局部变量和形参的生存期&#xff1b;即函数返回后对象就会被回收 解决方案是&#xff1a;1&#xff09;使用全局变量 &…

②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网https://item.taobao.com/item.htm?ftt&id784749793551 网关 MS-A1-5081 MS-A1-5081 网关通过 MODBUS TCP 协议与 Modbus RTU/ASCII 协议的相互转换&#xff0c;可以将 Modbus 串口设备接入 MODBUS TCP 网络…