WO2015062228A1 - 一种访问共享内存的方法和装置 - Google Patents
一种访问共享内存的方法和装置 Download PDFInfo
- Publication number
- WO2015062228A1 WO2015062228A1 PCT/CN2014/076647 CN2014076647W WO2015062228A1 WO 2015062228 A1 WO2015062228 A1 WO 2015062228A1 CN 2014076647 W CN2014076647 W CN 2014076647W WO 2015062228 A1 WO2015062228 A1 WO 2015062228A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- shared memory
- node
- identifier
- mapping table
- destination node
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000013507 mapping Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 abstract description 3
- 230000004044 response Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Definitions
- the present invention relates to the field of computers, and in particular, to a method and apparatus for accessing shared memory.
- shared memory refers to large-capacity memory that can be accessed by different node servers in a server cluster. When the local memory of the node server is insufficient, the node server can access the shared memory and perform read and write operations on the shared memory.
- a method for accessing shared memory is provided, which may be: in a computer cluster, a proxy server is selected, and the proxy server manages the shared memory in the cluster.
- the node server sends a call request to the proxy server, and the call request carries the identifier of the node server; the proxy server receives the call request sent by the node server, and allocates a share to the node server according to the call request.
- Memory sending the identity of the allocated shared memory to the node server.
- the node server remotely calls the shared memory according to the identifier of the shared memory; and reads and writes the shared memory of the call according to the read/write algorithm.
- the present invention provides a method and apparatus for accessing shared memory.
- the technical solution is as follows:
- the present invention provides a method for accessing shared memory, the method comprising: obtaining an identifier of a shared memory corresponding to a destination node and the destination node, where the destination node is a node in a shared memory mapping table. Identify the corresponding node, and the shared memory mapping table is used to Correspondence between the identifier of the storage node and the identifier of the shared memory;
- the API reads and writes the shared memory corresponding to the identifier of the shared memory on the destination node, including:
- the reading and writing operations of the shared memory corresponding to the identifier of the shared memory on the destination node by using the API include:
- the acquiring, by the destination node, the identifier of the shared memory corresponding to the destination node includes:
- the method before the obtaining the identifier of the shared memory corresponding to the destination node and the destination node, the method further includes: The correspondence between the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node is saved in the shared memory mapping table.
- the method before the obtaining the identifier of the shared memory corresponding to the destination node and the destination node, the method further includes:
- the registration request carrying an identifier of the self node and an identifier of the shared memory corresponding to the identifier of the self node, so that the proxy node associates the identifier of the self node with the identifier of the self node
- the correspondence of the identifiers of the shared memory is saved in the shared memory map.
- the obtaining the shared memory mapping table includes:
- the method further includes:
- the method further includes:
- the present invention provides an apparatus for accessing a shared memory, where the apparatus includes: a first acquiring module, configured to acquire an identifier of a shared memory corresponding to a destination node and the destination node, where the destination node is a shared memory a node corresponding to the identifier of a node in the mapping table, where the shared memory mapping table is used to store a correspondence between the identifier of the node and the identifier of the shared memory;
- the calling module is configured to invoke the remote direct memory access RDM ⁇ 's application programming interface API; and the access module is configured to perform read and write operations on the shared memory corresponding to the identifier of the shared memory on the destination node by using the API.
- the access module includes:
- a first sending unit configured to send the identifier of the shared memory and the data to be written to the destination node by using the API, so that the destination node sends the data to be written according to the identifier of the shared memory Write to the shared memory corresponding to the identifier of the shared memory.
- the access module includes:
- a second sending unit configured to send, by using the API, an identifier of the shared memory and an identifier of data to be read to the destination node, so that the destination node is configured to read according to the identifier of the shared memory
- the identifier of the data is obtained from the shared memory corresponding to the identifier of the shared memory
- a receiving unit configured to receive the data to be read sent by the destination node.
- the first acquiring module includes:
- a first acquiring unit configured to acquire the shared memory mapping table
- a selecting unit configured to select an identifier of a node from the shared memory mapping table as an identifier of the destination node
- the device further includes:
- a saving module configured to save, in the shared memory mapping table, a correspondence between the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the self node.
- the apparatus further includes:
- a first sending module configured to send a registration request to the proxy node, where the registration request carries an identifier of the self node and an identifier of the shared memory corresponding to the identifier of the self node, so that the proxy node identifies the identifier of the self node
- the correspondence between the identifiers of the shared memory corresponding to the identifiers of the self nodes is saved in the shared memory mapping table.
- the first acquiring unit is configured to obtain the shared memory mapping table from a locally stored database; or The first obtaining unit is configured to send a first obtaining request to the proxy node, where the first obtaining request carries an identifier of the self node, and receives the shared memory mapping table sent by the proxy node according to the identifier of the self node.
- the device further includes:
- a determining module configured to determine whether the shared memory mapping table sent by the proxy node is received within a first preset time
- the second sending module is configured to send a second obtaining request to the backup proxy node, where the second obtaining request carries the identifier of the self node, and the backup proxy node is a backup node of the proxy node;
- a receiving module configured to receive the shared memory mapping table sent by the backup proxy node according to the identifier of the self node.
- the device further includes:
- the present invention provides an apparatus for accessing a shared memory, the apparatus comprising: a memory and a processor, the memory storing program code, the processor is configured to invoke program code execution in the memory as first Aspects of access to shared memory.
- the access node obtains the identifier of the destination node and the identifier of the shared memory from the shared memory mapping table, and does not require the proxy node to allocate shared memory, which simplifies the process of accessing the shared memory; and the access node invokes the API by calling the API.
- Read and write operations on shared memory do not consume system resources, improving the read and write performance of shared memory.
- FIG. 1 is a flowchart of a method for accessing shared memory according to Embodiment 1 of the present invention
- FIG. 2 is a flowchart of a method for accessing shared memory according to Embodiment 2 of the present invention
- FIG. 4 is a schematic structural diagram of another device for accessing shared memory according to Embodiment 4 of the present invention.
- Embodiments of the present invention provide a method for accessing shared memory. See Figure 1, where the party The law includes:
- the access node obtains the identifier of the destination node and the identifier of the shared memory from the shared memory mapping table, and does not require the proxy node to allocate shared memory, which simplifies the process of accessing the shared memory; and the access node invokes the API by calling the API. Read and write operations on shared memory do not consume system resources, improving the read and write performance of shared memory.
- Example 2
- Embodiments of the present invention provide a method for accessing shared memory. See Figure 2, where the method includes:
- the access node saves the correspondence between the identifier of the node and the identifier of the shared memory in the shared memory mapping table;
- the access node is any node in the server cluster, and is used to access the shared memory node of the target node in the server cluster; the destination node is a node corresponding to the identifier of a node in the shared memory mapping table, and the destination node is the accessed node.
- the shared memory map is located in the shared memory management component; the shared memory management component is used to manage shared memory, and one or more shared memory management components exist in one server cluster.
- the shared memory management component is deployed in the proxy node, which is any node in the server cluster; when there are multiple shared memory management components in the server cluster, the shared memory management component Can be deployed on each node included in the server cluster. If the shared memory management component is not installed on the access node and the shared memory management component is installed on only the proxy node in the server cluster, the access node saves the correspondence between the identifier of the node and the identifier of the shared memory in the shared memory mapping table. Can be:
- the access node sends a registration request to the proxy node, where the registration request carries the identifier of the access node and the identifier of the shared memory corresponding to the identifier of the access node, and the proxy node receives the registration request sent by the access node, and obtains the identifier and sharing of the access node according to the registration request.
- the identifier of the memory is stored in the shared memory mapping table by the correspondence between the identifier of the access node and the identifier of the shared memory corresponding to the identifier of the access node.
- the access node may send the first registration request to the node.
- a shared memory management component carrying an identifier of the access node and an identifier of the shared memory on the access node; the shared memory management component receiving the first registration request sent by the access node, and acquiring the access node according to the first registration request.
- the operation of saving the correspondence between the identifier of the access node and the identifier of the shared memory in the shared memory mapping table may be:
- the correspondence between the identifier of the access node and the identifier of the shared memory is encoded as 64bi t data, and the high 16bi t data included in the 64bi t data is the identifier of the access node; the low 48 bi t data included in the 64bi t data is the identifier of the shared memory .
- the registration request carries the identifier of the access node and the identifier of the shared memory corresponding to the identifier of the access node, and the registration request may also carry the start address and length of the shared memory.
- the first registration request carries the identifier of the node and the identifier of the shared memory on the node, and the first registration request may also carry the starting address and length of the shared memory.
- Each node in the server cluster saves the correspondence between the identifier of the node and the identifier of the shared memory on the node in the shared memory mapping table.
- the infrastructure requirements of each node in the server cluster are required.
- the method of accessing shared memory relies on these configurations.
- the system configuration includes: [ ⁇ capability link layer, operating system layer, driver layer and protocol layer.
- the link layer of the RDM ⁇ capability is mainly provided by a hardware network interface card with RDM ⁇ capability; for example, wireless bandwidth ⁇ n ⁇ ni band network interface HCA (Host Channel Adapter), RoCE (RDIN over Converged Ethernet) , based on RDM ⁇ ) network interface card or i ⁇ RP (Internet Wde-Area RDM ⁇ Protocol, RDM protocol on the wide area Internet) network interface card.
- a hardware network interface card with RDM ⁇ capability for example, wireless bandwidth ⁇ n ⁇ ni band network interface HCA (Host Channel Adapter), RoCE (RDIN over Converged Ethernet) , based on RDM ⁇ ) network interface card or i ⁇ RP (Internet Wde-Area RDM ⁇ Protocol, RDM protocol on the wide area Internet) network interface card.
- HCA Home Channel Adapter
- RoCE RDIN over Converged Ethernet
- the operating system layer mainly provides an operating system platform.
- the driver layer mainly provides the underlying device driver for the hardware network interface card; for example, open source 0FED (CpenFabri cs Enter pri se D" stri but i on, CpenFabri cs enterprise distribution), which includes the mainstream RDM ⁇ network interface Card driver.
- open source 0FED CpenFabri cs Enter pri se D" stri but i on, CpenFabri cs enterprise distribution
- the protocol stack layer is mainly for RDM ⁇ operation and provides protocol processing; for example, an open source 0FED release can be used.
- the access node obtains an identifier of the shared memory corresponding to the destination node and the destination node, where the destination node is a node corresponding to the identifier of a node in the shared memory mapping table, and the shared memory mapping table is used to store the identifier of the node and the shared memory.
- the corresponding relationship of the logo is a node corresponding to the identifier of a node in the shared memory mapping table.
- the access node when the memory of the access node is insufficient, the access node needs to access the shared memory.
- the access node accesses the shared memory, it obtains the identifier of the shared memory corresponding to the destination node and the destination node that need to be accessed.
- the operation of the access node to obtain the identifier of the shared memory corresponding to the destination node and the destination node may be:
- the access node obtains the shared memory mapping table, and selects the identifier of a node from the shared memory mapping table as the identifier of the destination node; the access node acquires the destination node according to the identifier of the destination node; and obtains from the shared memory mapping table according to the identifier of the destination node. ID of the shared memory corresponding to the ID of the destination node.
- the identifier and destination section of the destination node are stored in the access node. According to the identifier of the destination node, the destination node corresponding to the identifier of the destination node may be obtained from the identifier of the destination node and the correspondence relationship of the destination node.
- the operation of selecting the identifier of a node from the shared memory mapping table as the identifier of the destination node, and obtaining the identifier of the shared memory from the shared memory mapping table according to the identifier of the destination node may be:
- Select a 64bi t data from the shared memory mapping table parse the high 16bi t data included in the 64bi t data, obtain the identifier of the destination node, and parse the low 48bi t data included in the 64bi t data to obtain the identifier of the shared memory.
- the access node obtains the shared memory mapping table, which may be:
- the access node obtains the shared memory mapping table, which can be:
- the access node sends a first acquisition request to the proxy node, where the first acquisition request carries the identifier of the access node; the proxy node receives the first acquisition request sent by the access node, and obtains the identifier of the access node according to the first acquisition request;
- the identity of the access node sends a shared memory map to the access node; the access node receives a shared memory map sent by the proxy node according to the identity of the access node.
- the timer is started, and it is determined whether the shared memory mapping table sent by the proxy node is received within the first preset time; if not received within the first preset time
- the access node sends a second acquisition request to the backup proxy node
- the second acquisition request carries the identifier of the access node
- the backup proxy node receives the second acquisition request sent by the access node, and according to the second Obtaining an identifier for obtaining an access node
- the backup proxy node sends a shared memory mapping table to the access node according to the identifier of the access node
- the access node receives the shared memory mapping table sent by the backup proxy node according to the identifier of the access node.
- the access node does not send the second acquisition request to the backup proxy node.
- the backup proxy node is any node other than the proxy node in the server cluster; and the backup proxy node is the backup node of the proxy node; the backup node stores the same database as the proxy node, that is, the backup proxy
- the same shared memory map is stored in the node as the proxy node.
- the first preset time may be set and changed according to the system requirements. The first preset time is not specifically limited in the embodiment of the present invention.
- the backup proxy node is set.
- the second acquisition request may be sent to the backup proxy node to obtain a shared memory mapping table, thereby ensuring the reliability of the system.
- the access node calls the RDM ⁇ API
- [ ⁇ is a kind of network card technology, which can directly transfer data to a certain memory area of another server through the network, and does not need to consume the processing power of the server during data transmission.
- the access node reads and writes the shared memory corresponding to the identifier of the shared memory on the destination node by using the API;
- the access node writes the shared memory corresponding to the identifier of the shared memory on the destination node through the API, and may be:
- the access node sends the identifier of the shared memory and the data to be written to the destination node through the API, and the destination node receives the identifier of the shared memory sent by the access node through the API and the data to be written, and the to-be-written according to the identifier of the shared memory.
- the data is written to the shared memory corresponding to the ID of the shared memory.
- the access node reads the shared memory corresponding to the identifier of the shared memory on the destination node through the API, and may be:
- the access node sends the identifier of the shared memory and the identifier of the data to be read to the destination node through the API, and the destination node receives the identifier of the shared memory sent by the access node and the identifier of the data to be read, and according to the identifier of the shared memory and the to-be-read
- the identifier of the data obtained is obtained from the shared memory corresponding to the identifier of the shared memory.
- the destination node sends the data to be read to the access node and accesses the section. The point receives the data to be read sent by the destination node.
- the access node reads and writes the shared memory by calling the API, and does not need to consume system resources, which can reduce system performance and improve the read and write performance of the shared memory.
- the access node reads and writes the shared memory corresponding to the identifier of the shared memory on the destination node through the API, and sends a response message to the shared memory management component or the proxy node of the node, where the response message carries the identifier of the access node.
- the access node sends a first response message to the proxy node.
- the response message carries the identifier of the destination node; the proxy node receives the first response message sent by the access node, and obtains the identifier of the destination node according to the first response message.
- the proxy node deletes the correspondence between the identifier of the destination node in the shared memory map and the identifier of the shared memory according to the identifier of the destination node.
- the access node If the access node performs the read/write operation on the shared memory corresponding to the identifier of the shared memory on the destination node through the API, the access node sends a second response message to the shared memory management of the node. And the second response message carries the identifier of the destination node; the shared memory management component receives the second response message sent by the access node, and obtains the identifier of the destination node according to the second response message. The shared memory management component deletes the correspondence between the identifier of the destination node in the shared memory map and the identifier of the shared memory according to the identifier of the destination node.
- the access node deletes the correspondence between the identifier of the destination node and the identifier of the shared memory by using the API to read and write the shared memory corresponding to the identifier of the shared memory on the destination node, thereby ensuring shared memory and shared memory in the server cluster.
- the shared memory in the mapping table is consistent.
- the access node acquires a shared memory mapping table every second preset time, and updates the locally stored shared memory mapping table to the obtained shared memory mapping table.
- the access node updates the shared memory mapping table every second preset time to ensure data consistency and ensure the accuracy of the shared memory.
- the second preset time can be based on The system needs to be set and changed. In the embodiment of the present invention, the second preset time is not specifically limited.
- the access node obtains the identifier of the destination node and the identifier of the shared memory from the shared memory mapping table, and does not require the proxy node to allocate shared memory, which simplifies the process of accessing the shared memory; and the access node invokes the API by calling the API. Read and write operations on shared memory do not consume system resources, improving the read and write performance of shared memory.
- Example 3
- Embodiments of the present invention provide an apparatus for accessing shared memory.
- the device includes:
- the first obtaining module 301 is configured to obtain an identifier of the shared memory corresponding to the destination node and the destination node, where the destination node is a node corresponding to the identifier of a node in the shared memory mapping table, and the shared memory mapping table is used for identifier and sharing of the storage node. Correspondence of the identifier of the memory;
- the access module 303 is configured to perform read and write operations on the shared memory corresponding to the identifier of the shared memory on the destination node by using the API.
- the access module 303 includes:
- the first sending unit is configured to send the identifier of the shared memory and the data to be written to the destination node through the API, so that the destination node writes the data to be written into the shared memory corresponding to the identifier of the shared memory according to the identifier of the shared memory.
- the access module 303 includes:
- a second sending unit configured to send, by using an API, an identifier of the shared memory and an identifier of the data to be read to the destination node, so that the destination node shares the identifier corresponding to the shared memory according to the identifier of the shared memory and the identifier of the data to be read.
- a receiving unit configured to receive data to be read sent by the destination node.
- the first obtaining module 301 includes: a first obtaining unit, configured to acquire a shared memory mapping table;
- a selecting unit configured to select an identifier of a node from the shared memory mapping table as an identifier of the destination node
- a second acquiring unit configured to acquire a destination node according to the identifier of the destination node
- a third obtaining unit configured to obtain, from the shared memory mapping table, an identifier of the shared memory corresponding to the identifier of the target node according to the identifier of the destination node.
- the device further includes:
- the saving module is configured to save the correspondence between the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node in the shared memory mapping table.
- the device further includes:
- the first sending module is configured to send a registration request to the proxy node, where the registration request carries the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node, so that the proxy node associates the identifier of the own node with the shared memory of the identifier of the own node.
- the correspondence of the identifiers is saved in the shared memory map.
- the first obtaining unit is configured to obtain the shared memory mapping table from the locally stored database; or the first obtaining unit is configured to send the first obtaining request to the proxy node, where the first obtaining request carries the identifier of the own node
- the shared memory mapping table sent by the receiving proxy node according to the identity of its own node.
- the device further includes:
- a determining module configured to determine whether a shared memory mapping table sent by the proxy node is received within the first preset time
- the second sending module is configured to send the second obtaining request to the backup proxy node, the second obtaining request carries the identifier of the own node, the backup proxy node is the backup node of the proxy node, and the receiving module is configured to receive the backup proxy node according to A shared memory map sent by the identity of the own node.
- the device further includes:
- a second acquiring module configured to acquire a shared memory mapping table every second preset time;
- An update module for updating a locally stored shared memory map to an acquired shared memory map.
- the access node obtains the identifier of the destination node and the identifier of the shared memory from the shared memory mapping table, and does not require the proxy node to allocate shared memory, which simplifies the process of accessing the shared memory; and the access node invokes the API by calling the API. Read and write operations on shared memory do not consume system resources, improving the read and write performance of shared memory.
- Embodiments of the present invention provide an apparatus for accessing shared memory.
- the apparatus includes: a memory 401 and a processor 402.
- the memory 401 stores program code
- the processor 402 is configured to call a program code in the memory to perform the following method of accessing the shared memory:
- the destination node is a node corresponding to the identifier of a node in the shared memory mapping table
- the shared memory mapping table is used to store the correspondence between the identifier of the node and the identifier of the shared memory
- the shared memory corresponding to the shared memory identifier on the destination node is read and written by the API.
- the shared memory corresponding to the identifier of the shared memory on the destination node is read and written by the API, including:
- the identifier of the shared memory and the data to be written are sent to the destination node through the API, so that the destination node writes the data to be written into the shared memory corresponding to the identifier of the shared memory according to the identifier of the shared memory.
- the shared memory corresponding to the identifier of the shared memory on the destination node is read and written by the API, including:
- obtaining the identifier of the shared memory corresponding to the destination node and the destination node including: acquiring a shared memory mapping table;
- the identifier of the shared memory corresponding to the identifier of the destination node is obtained from the shared memory mapping table according to the identifier of the destination node.
- the method further includes:
- the correspondence between the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node is stored in the shared memory mapping table.
- the method before acquiring the identifier of the shared memory corresponding to the destination node and the destination node, the method further includes:
- the registration request carries the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node, so that the proxy node saves the correspondence between the identifier of the own node and the identifier of the shared memory corresponding to the identifier of the own node in the In the shared memory map.
- obtaining a shared memory mapping table includes:
- the first acquisition request carries the identifier of the own node; and the shared memory mapping table sent by the receiving proxy node according to the identifier of the own node.
- the method further includes: determining whether the shared memory mapping table sent by the proxy node is received in the first preset time; if not, sending the second obtaining request to the backup proxy node
- the second obtaining request carries the identifier of the own node, and the backup proxy node is the backup node of the proxy node;
- the method further includes:
- the access node obtains the identifier of the destination node and the identifier of the shared memory from the shared memory mapping table, and does not require the proxy node to allocate shared memory, which simplifies the process of accessing the shared memory; and the access node invokes the API by calling the API.
- Read and write operations on shared memory do not consume system resources, improving the read and write performance of shared memory.
- the device for accessing the shared memory provided by the foregoing embodiment accesses the shared memory, only the division of the above functional modules is illustrated. In actual applications, the functions may be allocated by different functional modules according to requirements. Upon completion, the internal structure of the device is divided into different functional modules to perform all or part of the functions described above.
- the device for accessing the shared memory provided by the foregoing embodiment is the same as the method for accessing the shared memory.
- the specific implementation process is described in detail in the method embodiment, and details are not described herein again.
- a person skilled in the art may understand that all or part of the steps of implementing the above embodiments may be completed by hardware, or may be instructed by a program to execute related hardware, and the program may be stored in a computer readable storage medium.
- the storage medium mentioned may be a read-only memory, and the above description is only a preferred embodiment of the present invention and is not intended to limit the present invention, and is within the spirit and principles of the present invention. Any modifications, equivalent substitutions, improvements, etc., are intended to be included within the scope of the present invention.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种访问共享内存的方法和装置,属于计算机领域。该方法包括:获取目的节点和所述目的节点对应的共享内存的标识,所述目的节点为共享内存映射表中的一个节点的标识对应的节点,所述共享内存映射表用于存储节点的标识与共享内存的标识的对应关系;调用远程直接内存访问RDMA的应用程序编程接口API;通过所述API对所述目的节点上的所述共享内存的标识对应的共享内存进行读写操作。该装置包括:第一获取模块、调用模块和访问模块。本发明中访问节点可以直接从共享内存映射表中获取目的节点的标识和共享内存的标识,简化了访问共享内存的处理过程;并且,通过调用API对共享内存进行读写操作,不需要消耗系统资源,提高了共享内存的读写性能。
Description
一种访问共享内存的方法和装置
技术领域
本发明涉及计算机领域,特别涉及一种访问共享内存的方法和装置。 背景技术 在服务器集群中 ,共享内存是指可以被服务器集群中的不同节点服务器 访问的大容量内存, 当节点服务器本地内存不足时,节点服务器可以访问共 享内存,对共享内存进行读写操作。
现有技术中提供了一种访问共享内存的方法,可以为 :在计算机集群中 , 选取一个代理服务器,代理服务器对集群中的共享内存进行管理。 当集群中 某个节点服务器的内存不足时,节点服务器发送调用请求给代理服务器,该 调用请求携带节点服务器的标识;代理服务器接收节点服务器发送的调用请 求,并根据该调用请求为节点服务器分配共享内存,发送分配的共享内存的 标识给节点服务器。 节点服务器根据共享内存的标识远程调用共享内存;并 根据读写算法对该调用的共享内存进行读写操作。
在实现本发明的过程中 ,发明人发现现有技术至少存在以下问题: 当节点服务器本地内存不足时,需要发送请求给代理服务器, 由代理服 务器分配共享内存,操作复杂;并且,节点服务器远程调用共享内存的过程 消耗大量系统资源,降低系统性能。 发明内容 为了解决现有技术的问题,本发明提供了一种访问共享内存的方法和装 置。 所述技术方案如下:
第一方面,本发明提供了一种访问共享内存的方法,所述方法包括: 获取目的节点和所述目的节点对应的共享内存的标识,所述目的节点为 共享内存映射表中的一个节点的标识对应的节点,所述共享内存映射表用于
存储节点的标识与共享内存的标识的对应关系;
调用远程直接内存访问 RDM\的应用程序编程接口 API ;
通过所述 API对所述目的节点上的所述共享内存的标识对应的共享内存 进行读写操作。
结合第一方面,在第一方面的第一种可能的实现方式中 ,所述通过所述
API对所述目的节点上的所述共享内存的标识对应的共享内存进行读写操 作,包括:
通过所述 API发送所述共享内存的标识和待写入的数据给所述目的节 点,使所述目的节点根据所述共享内存的标识将所述待写入的数据写入所述 共享内存的标识对应的共享内存中。
结合第一方面,在第一方面的第二种可能的实现方式中 ,所述通过所述 API对所述目的节点上的所述共享内存的标识对应的共享内存进行读写操 作,包括:
通过所述 API发送所述共享内存的标识和待读出的数据的标识给所述目 的节点,使所述目的节点根据所述共享内存的标识和所述待读出的数据的标 识从所述共享内存的标识对应的共享内存中获取所述待读出的数据;
接收所述目的节点发送的所述待读出的数据。
结合第一方面,在第一方面的第三种可能的实现方式中 ,所述获取目的 节点和所述目的节点对应的共享内存的标识,包括:
获取所述共享内存映射表;
从所述共享内存映射表中选择一个节点的标识作为所述目的节点的标 识;
根据所述目的节点的标识获取所述目的节点;
根据所述目的节点的标识从所述共享内存映射表中获取与所述目的节点 的标识对应的所述共享内存的标识。
结合第一方面,在第一方面的第四种可能的实现方式中 ,所述获取目的 节点和所述目的节点对应的共享内存的标识之前,所述方法还包括:
将自身节点的标识和所述自身节点的标识对应的共享内存的标识的对应 关系保存在所述共享内存映射表中。
结合第一方面,在第一方面的第五种可能的实现方式中 ,所述获取目的 节点和所述目的节点对应的共享内存的标识之前,所述方法还包括:
发送注册请求给代理节点,所述注册请求携带自身节点的标识和所述自 身节点的标识对应的共享内存的标识,使所述代理节点将所述自身节点的标 识和所述自身节点的标识对应的共享内存的标识的对应关系保存在所述共享 内存映射表中。
结合第一方面的第三种可能,在第一方面的第六种可能的实现方式中, 所述获取所述共享内存映射表,包括:
从本地已存储的数据库中获取所述共享内存映射表;或者,
发送第一获取请求给代理节点,所述第一获取请求携带自身节点的标识; 接收所述代理节点根据所述自身节点的标识发送的所述共享内存映射表。
结合第一方面的第六种可能,在第一方面的第七种可能的实现方式中, 所述发送第一获取请求给代理节点之后,所述方法还包括:
判断在第一预设时间内是否接收到所述代理节点发送的所述共享内存映 射表;
如果否,发送第二获取请求给备份代理节点,所述第二获取请求携带所 述自身节点的标识,所述备份代理节点为所述代理节点的备份节点;
接收所述备份代理节点根据所述自身节点的标识发送的所述共享内存映 射表。
结合第一方面的第三种可能,在第一方面的第八种可能的实现方式中, 所述方法还包括:
每隔第二预设时间获取所述共享内存映射表;
将本地已存储的所述共享内存映射表更新为所述获取的共享内存映射 表。
第二方面,本发明提供了一种访问共享内存的装置,所述装置包括: 第一获取模块,用于获取目的节点和所述目的节点对应的共享内存的标 识,所述目的节点为共享内存映射表中的一个节点的标识对应的节点,所述 共享内存映射表用于存储节点的标识与共享内存的标识的对应关系;
调用模块,用于调用远程直接内存访问 RDM\的应用程序编程接口 API ; 访问模块,用于通过所述 API对所述目的节点上的所述共享内存的标识 对应的共享内存进行读写操作。
结合第二方面,在第二方面的第一种可能的实现方式中,所述访问模块, 包括:
第一发送单元,用于通过所述 API发送所述共享内存的标识和待写入的 数据给所述目的节点,使所述目的节点根据所述共享内存的标识将所述待写 入的数据写入所述共享内存的标识对应的共享内存中。
结合第二方面,在第二方面的第二种可能的实现方式中,所述访问模块, 包括:
第二发送单元,用于通过所述 API发送所述共享内存的标识和待读出的 数据的标识给所述目的节点,使所述目的节点根据所述共享内存的标识和所 述待读出的数据的标识从所述共享内存的标识对应的共享内存中获取所述待 读出的数据;
接收单元,用于接收所述目的节点发送的所述待读出的数据。
结合第二方面,在第二方面的第三种可能的实现方式中 ,所述第一获取 模块,包括:
第一获取单元,用于获取所述共享内存映射表;
选择单元,用于从所述共享内存映射表中选择一个节点的标识作为所述 目的节点的标识;
第二获取单元,用于根据所述目的节点的标识获取所述目的节点; 第三获取单元,用于根据所述目的节点的标识从所述共享内存映射表中 获取与所述目的节点的标识对应的所述共享内存的标识。
结合第二方面,在第二方面的第四种可能的实现方式中 ,所述装置还包 括:
保存模块,用于将自身节点的标识和所述自身节点的标识对应的共享内 存的标识的对应关系保存在所述共享内存映射表中。
结合第二方面,在第二方面的第五种可能的实现方式中 ,所述装置还包 括:
第一发送模块,用于发送注册请求给代理节点,所述注册请求携带自身 节点的标识和所述自身节点的标识对应的共享内存的标识,使所述代理节点 将所述自身节点的标识和所述自身节点的标识对应的共享内存的标识的对应 关系保存在所述共享内存映射表中。
结合第二方面的第三种可能,在第二方面的第六种可能的实现方式中, 所述第一获取单元用于从本地已存储的数据库中获取所述共享内存映射表; 或者,所述第一获取单元,用于发送第一获取请求给代理节点,所述第一获 取请求携带自身节点的标识;接收所述代理节点根据所述自身节点的标识发 送的所述共享内存映射表。
结合第二方面的第六种可能,在第二方面的第七种可能的实现方式中, 所述装置还包括:
判断模块,用于判断在第一预设时间内是否接收到所述代理节点发送的 所述共享内存映射表;
如果否,第二发送模块,用于发送第二获取请求给备份代理节点,所述 第二获取请求携带所述自身节点的标识,所述备份代理节点为所述代理节点 的备份节点;
接收模块,用于接收所述备份代理节点根据所述自身节点的标识发送的 所述共享内存映射表。
结合第二方面的第三种可能,在第二方面的第八种可能的实现方式中, 所述装置还包括:
第二获取模块,用于每隔第二预设时间获取所述共享内存映射表;
更新模块,用于将本地已存储的所述共享内存映射表更新为所述获取的 共享内存映射表。 第三方面,本发明提供了一种访问共享内存的装置,所述装置包括:存 储器和处理器,所述存储器存储程序代码,所述处理器用于调用所述存储器 中的程序代码执行如第一方面提供的访问共享内存的方法。
在本发明实施例中,访问节点从共享内存映射表中获取目的节点的标识 和共享内存的标识,不需要代理节点分配共享内存,简化了访问共享内存的 处理过程;并且,访问节点通过调用 API对共享内存进行读写操作,不需要 消耗系统资源,提高了共享内存的读写性能。 附图说明 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的 前提下,还可以根据这些附图获得其他的附图。
图 1是本发明实施例 1提供的一种访问共享内存的方法流程图; 图 2是本发明实施例 2提供的一种访问共享内存的方法流程图; 图 3是本发明实施例 3提供的一种访问共享内存的装置结构示意图; 图 4是本发明实施例 4提供的一种访问共享内存的另一装置结构示意图。 具体实施方式 为使本发明的目的、 技术方案和优点更加清楚,下面将结合附图对本发 明实施方式作进一步地详细描述。 实施例 1
本发明实施例提供了一种访问共享内存的方法。 参见图 1 ,其中 ,该方
法包括:
101 :获取目的节点和目的节点对应的共享内存的标识,目的节点为共享 内存映射表中的一个节点的标识对应的节点,共享内存映射表用于存储节点 的标识与共享内存的标识的对应关系;
102:调用 RDM RernDt e Di rect ^nrory Access ,远程直接内存访问) 的 API ( Appl i cat i on Pr ogrammi ng I nt erf ace ,应用程序编程接口) ;
103:通过 API对目的节点上的共享内存的标识对应的共享内存进行读写 操作。
在本发明实施例中,访问节点从共享内存映射表中获取目的节点的标识 和共享内存的标识,不需要代理节点分配共享内存,简化了访问共享内存的 处理过程;并且,访问节点通过调用 API对共享内存进行读写操作,不需要 消耗系统资源,提高了共享内存的读写性能。 实施例 2
本发明实施例提供了一种访问共享内存的方法。 参见图 2 ,其中 ,该方 法包括:
201 :访问节点将节点的标识和共享内存的标识的对应关系保存在共享内 存映射表中;
其中 ,访问节点为服务器集群中的任一节点,用于访问服务器集群中目 的节点的共享内存的节点; 目的节点为共享内存映射表一个节点的标识对应 的节点, 目的节点为被访问节点。
其中 ,共享内存映射表位于共享内存管理组件中;共享内存管理组件用 于对共享内存进行管理,且一个服务器集群中存在一个或多个共享内存管理 组件。 当服务器集群中存在一个共享内存管理组件时,该共享内存管理组件 部署在代理节点中 ,代理节点为服务器集群中任一节点; 当服务器集群中存 在多个共享内存管理组件时,共享内存管理组件可以部署在服务器集群中包 括的每个节点上。
其中 ,如果访问节点上没有安装共享内存管理组件,服务器集群中仅代 理节点上安装共享内存管理组件时,访问节点将节点的标识和共享内存的标 识的对应关系保存在共享内存映射表中的操作,可以为:
访问节点发送注册请求给代理节点,该注册请求携带访问节点的标识和 访问节点的标识对应的共享内存的标识,代理节点接收访问节点发送的注册 请求,并根据注册请求获取访问节点的标识和共享内存的标识,将访问节点 的标识和访问节点的标识对应的共享内存的标识的对应关系保存在共享内存 映射表中。
其中 ,如果访问节点上安装共享内存管理组件时,访问节点将节点的标 识和共享内存的标识的对应关系保存在共享内存映射表中的操作,可以为 : 访问节点发送第一注册请求给本节点的共享内存管理组件,该第一注册 请求携带访问节点的标识和访问节点上的共享内存的标识;共享内存管理组 件接收访问节点发送的第一注册请求,并根据第一注册请求获取访问节点的 标识和共享内存的标识,将访问节点的标识和共享内存的标识的对应关系保 存在共享内存映射表中。
其中 ,将访问节点的标识和共享内存的标识的对应关系保存在共享内存 映射表中的操作,可以为 :
将访问节点的标识和共享内存的标识的对应关系编码为 64bi t数据, 64bi t数据中包括的高 16bi t数据为访问节点的标识;64bi t数据中包括的低 48bi t数据为共享内存的标识。
其中 ,需要说明的是,注册请求携带访问节点的标识和访问节点的标识 对应的共享内存的标识,注册请求中还可以携带共享内存的起始地址和长度。 第一注册请求携带节点的标识和节点上的共享内存的标识,第一注册请求中 还可以携带共享内存的起始地址和长度。
其中 ,服务器集群中每个节点均将节点的标识和节点上的共享内存的标 识的对应关系保存在共享内存映射表中。
其中 ,在步骤 201之前,需要按照服务器集群中各节点的基础设施要求
进行系统安装和配置,本发明提供的访问共享内存的方法,依赖于这些配置。 其中 ,系统配置包括: [^^\能力的链路层、 操作系统层、 驱动层和协议 戋层。
其中 ,RDM\能力的链路层主要由具有 RDM\能力的硬件网络接口卡提供; 例如,无线带宽 ί nf ί ni band网络接口 HCA( Host Channel Adapter ,主机通 道适配器)、 RoCE( RDIN over Converged Ethernet ,基于融合以太网的 RDM\) 网络接口卡或者 i\ RP( Internet Wde-Area RDM\ Protocol ,广域因特网 上的 RDM 办议)网络接口卡。
其中 ,操作系统层主要提供操作系统平台。
其中 ,驱动层主要针对硬件网络接口卡提供底层设备驱动;例如,可以 采用开源 0FED( CpenFabri cs Enter pri se D" stri but i on , CpenFabri cs企业 发行版) ,其中已包含的主流 RDM\网络接口卡的驱动。
其中 ,协议栈层主要针对 RDM\操作,提供协议处理;例如,可以采用开 源的 0FED发布版。
202:访问节点获取目的节点和目的节点对应的共享内存的标识; 其中 , 目的节点为共享内存映射表中的一个节点的标识对应的节点;共 享内存映射表用于存储节点的标识与共享内存的标识的对应关系。
其中 , 当访问节点的内存不足时,访问节点需要访问共享内存。 访问节 点访问共享内存时,获取需要访问的目的节点和目的节点对应的共享内存的 标识。
其中 ,访问节点获取目的节点和目的节点对应的共享内存的标识的操作, 可以为 :
访问节点获取共享内存映射表,从共享内存映射表中选择一个节点的标 识作为目的节点的标识;访问节点根据目的节点的标识获取目的节点;并根 据目的节点的标识从共享内存映射表中获取与目的节点的标识对应的共享内 存的标识。
其中 ,需要说明的是,访问节点中实现存储有目的节点的标识和目的节
点的对应关系,根据目的节点的标识可以从目的节点的标识和目的节点的对 应关系中获取与目的节点的标识对应的目的节点。
其中 ,从共享内存映射表中选择一个节点的标识作为目的节点的标识, 根据目的节点的标识从共享内存映射表中获取共享内存的标识的操作,可以 为 :
从共享内存映射表中选择一个 64bi t数据,解析 64bi t数据包括的高 16bi t数据,得到目的节点的标识,解析 64bi t数据包括的低 48bi t数据, 得到共享内存的标识。
其中 ,如果访问节点上安装共享内存管理组件时,访问节点获取共享内 存映射表的操作,可以为 :
从本地已存储的数据库中获取共享内存映射表。
其中 ,如果访问节点上没有安装共享内存管理组件,服务器集群中仅代 理节点上安装共享内存管理组件时,访问节点获取共享内存映射表的操作, 可以为 :
访问节点发送第一获取请求给代理节点,该第一获取请求携带访问节点 的标识;代理节点接收访问节点发送的第一获取请求,并根据该第一获取请 求获取访问节点的标识;代理节点根据访问节点的标识发送共享内存映射表 给访问节点;访问节点接收代理节点根据访问节点的标识发送的共享内存映 射表。
其中 ,访问节点发送第一获取请求给代理节点之后,启动定时器,并判 断在第一预设时间内是否接收到代理节点发送的共享内存映射表;如果在第 一预设时间内没有接收到代理节点发送的共享内存映射表时,访问节点发送 第二获取请求给备份代理节点,该第二获取请求携带访问节点的标识,备份 代理节点接收访问节点发送的第二获取请求,并根据第二获取请求获取访问 节点的标识;备份代理节点根据访问节点的标识发送共享内存映射表给访问 节点;访问节点接收备份代理节点根据访问节点的标识发送的共享内存映射 表。
进一步地,访问节点在第一预设时间内接收到代理节点发送的共享内存 映射表时,访问节点不发送第二获取请求给备份代理节点。
其中 ,需要说明的是,备份代理节点为服务器集群中除代理节点之外的 任一节点;且备份代理节点为代理节点的备份节点;备份节点中存储有和代 理节点相同的数据库, 即备份代理节点中存储有和代理节点相同的共享内存 映射表。 第一预设时间可以根据系统需要进行设置并更改,在本发明实施例 中对第一预设时间不作具体限定。
其中 ,在本发明实施例中 ,设置备份代理节点, 当代理节点宕机时,可 以发送第二获取请求给备份代理节点, 以获取共享内存映射表,从而能够保 证系统的可靠性。
203:访问节点调用 RDM^ API ;
其中 , [^^是一种网卡技术,可以通过网络将数据直接传入另一台服务 器的某一块内存区域,并且,在数据传输过程中不需要消耗服务器的处理能 力。
204:访问节点通过 API对目的节点上的共享内存的标识对应的共享内存 进行读写操作;
其中 ,访问节点通过 API对目的节点上的共享内存的标识对应的共享内 存进行写操作,可以为 :
访问节点通过 API发送共享内存的标识和待写入的数据给目的节点, 目 的节点接收访问节点通过 API发送的共享内存的标识和待写入的数据,并根 据共享内存的标识将待写入的数据写入共享内存的标识对应的共享内存中。
其中 ,访问节点通过 API对目的节点上的共享内存的标识对应的共享内 存进行读操作,可以为 :
访问节点通过 API发送共享内存的标识和待读出的数据的标识给目的节 点, 目的节点接收访问节点发送的共享内存的标识和待读出的数据的标识, 并根据共享内存的标识和待读出的数据的标识从共享内存的标识对应的共享 内存中获取待读出的数据。 目的节点发送待读出的数据给访问节点,访问节
点接收目的节点发送的待读出的数据。
其中 ,需要说明的是,访问节点通过调用 API对共享内存进行读写操作, 不需要消耗系统资源,能够降低系统性能,提高共享内存的读写性能。
其中 ,访问节点通过 API对目的节点上的共享内存的标识对应的共享内 存进行读写操作之后,发送响应消息给本节点的共享内存管理组件或者代理 节点,该响应消息携带访问节点的标识。
其中 ,如果访问节点上没有安装共享内存管理组件时,访问节点通过 API 对目的节点上的共享内存的标识对应的共享内存进行读写操作之后,访问节 点发送第一响应消息给代理节点,该第一响应消息携带目的节点的标识;代 理节点接收访问节点发送的第一响应消息,并根据第一响应消息获取目的节 点的标识。 代理节点根据目的节点的标识将共享内存映射表中目的节点的标 识与共享内存的标识的对应关系删除。
其中 ,如果访问节点上安装共享内存管理组件时,访问节点通过 API对 目的节点上的共享内存的标识对应的共享内存进行读写操作之后,访问节点 发送第二响应消息给本节点的共享内存管理组件,该第二响应消息携带目的 节点的标识;共享内存管理组件接收访问节点发送的第二响应消息,并根据 第二响应消息获取目的节点的标识。 共享内存管理组件根据目的节点的标识 将共享内存映射表中目的节点的标识与共享内存的标识的对应关系删除。
其中 ,访问节点通过 API对目的节点上的共享内存的标识对应的共享内 存进行读写操作之后,将目的节点的标识与共享内存的标识的对应关系删除, 能够保证服务器集群中共享内存与共享内存映射表中的共享内存一致。
205:访问节点每隔第二预设时间获取共享内存映射表,将本地已存储的 共享内存映射表更新为获取的共享内存映射表。
其中 ,访问节点每隔第二预设时间更新一次共享内存映射表,能够保证 数据的一致性,并保证获取共享内存的准确性。
其中 ,需要说明的是,访问节点获取共享内存映射表的操作和步骤 202 中获取共享内存映射表的步骤相同 ,在此不再赘述。 第二预设时间可以根据
系统需要进行设置并更改,在本发明实施例中 ,对第二预设时间不作具体限 定。
在本发明实施例中,访问节点从共享内存映射表中获取目的节点的标识 和共享内存的标识,不需要代理节点分配共享内存,简化了访问共享内存的 处理过程;并且,访问节点通过调用 API对共享内存进行读写操作,不需要 消耗系统资源,提高了共享内存的读写性能。 实施例 3
本发明实施例提供了一种访问共享内存的装置。 参见图 3 ,其中 ,该装 置包括:
第一获取模块 301 ,用于获取目的节点和目的节点对应的共享内存的标 识, 目的节点为共享内存映射表中的一个节点的标识对应的节点,共享内存 映射表用于存储节点的标识与共享内存的标识的对应关系;
调用模块 302 ,用于调用远程直接内存访问 RDM\的应用程序编程接口 API ;
访问模块 303 ,用于通过 API对目的节点上的共享内存的标识对应的共 享内存进行读写操作。
进一步地,访问模块 303 ,包括:
第一发送单元,用于通过 API发送共享内存的标识和待写入的数据给目 的节点,使目的节点根据共享内存的标识将待写入的数据写入共享内存的标 识对应的共享内存中。
进一步地,访问模块 303 ,包括:
第二发送单元,用于通过 API发送共享内存的标识和待读出的数据的标 识给目的节点,使目的节点根据共享内存的标识和待读出的数据的标识从共 享内存的标识对应的共享内存中获取待读出的数据;
接收单元,用于接收目的节点发送的待读出的数据。
进一步地,第一获取模块 301 ,包括:
第一获取单元,用于获取共享内存映射表;
选择单元,用于从共享内存映射表中选择一个节点的标识作为目的节点 的标识;
第二获取单元,用于根据目的节点的标识获取目的节点;
第三获取单元,用于根据目的节点的标识从共享内存映射表中获取与目 的节点的标识对应的共享内存的标识。
进一步地,该装置还包括:
保存模块,用于将自身节点的标识和自身节点的标识对应的共享内存的 标识的对应关系保存在共享内存映射表中。
进一步地,该装置还包括:
第一发送模块,用于发送注册请求给代理节点,注册请求携带自身节点 的标识和自身节点的标识对应的共享内存的标识,使代理节点将自身节点的 标识和自身节点的标识对应的共享内存的标识的对应关系保存在共享内存映 射表中。
进一步地,第一获取单元,用于从本地已存储的数据库中获取共享内存 映射表;或者,第一获取单元,用于发送第一获取请求给代理节点,第一获 取请求携带自身节点的标识;接收代理节点根据自身节点的标识发送的共享 内存映射表。
进一步地,该装置还包括:
判断模块,用于判断在第一预设时间内是否接收到代理节点发送的共享 内存映射表;
如果否,第二发送模块,用于发送第二获取请求给备份代理节点,第二 获取请求携带自身节点的标识,备份代理节点为代理节点的备份节点; 接收模块,用于接收备份代理节点根据自身节点的标识发送的共享内存 映射表。
进一步地,该装置还包括:
第二获取模块,用于每隔第二预设时间获取共享内存映射表;
更新模块,用于将本地已存储的共享内存映射表更新为获取的共享内存 映射表。
在本发明实施例中,访问节点从共享内存映射表中获取目的节点的标识 和共享内存的标识,不需要代理节点分配共享内存,简化了访问共享内存的 处理过程;并且,访问节点通过调用 API对共享内存进行读写操作,不需要 消耗系统资源,提高了共享内存的读写性能。 实施例 4
本发明实施例提供了一种访问共享内存的装置。 参见图 4 ,其中 ,该装 置包括:存储器 401和处理器 402 ,该存储器 401存储程序代码,该处理器 402用于调用存储器中的程序代码执行如下访问共享内存的方法:
获取目的节点和目的节点对应的共享内存的标识, 目的节点为共享内存 映射表中的一个节点的标识对应的节点,共享内存映射表用于存储节点的标 识与共享内存的标识的对应关系;
调用远程直接内存访问 RDM\的应用程序编程接口 API ;
通过 API对目的节点上的共享内存的标识对应的共享内存进行读写操 作。
进一步地,通过 API对目的节点上的共享内存的标识对应的共享内存进 行读写操作,包括:
通过 API发送共享内存的标识和待写入的数据给目的节点,使目的节点 根据共享内存的标识将待写入的数据写入共享内存的标识对应的共享内存 中。
进一步地,通过 API对目的节点上的共享内存的标识对应的共享内存进 行读写操作,包括:
通过 API发送共享内存的标识和待读出的数据的标识给目的节点,使目 的节点根据共享内存的标识和待读出的数据的标识从共享内存的标识对应的 共享内存中获取待读出的数据;
接收目的节点发送的待读出的数据。
进一步地,获取目的节点和目的节点对应的共享内存的标识,包括: 获取共享内存映射表;
从共享内存映射表中选择一个节点的标识作为目的节点的标识; 根据目的节点的标识获取目的节点;
根据目的节点的标识从共享内存映射表中获取与目的节点的标识对应的 共享内存的标识。
进一步地,获取目的节点和目的节点对应的共享内存的标识之前,方法 还包括:
将自身节点的标识和自身节点的标识对应的共享内存的标识的对应关系 保存在共享内存映射表中。
进一步地,获取目的节点和目的节点对应的共享内存的标识之前,该方 法还包括:
发送注册请求给代理节点,注册请求携带自身节点的标识和自身节点的 标识对应的共享内存的标识,使代理节点将自身节点的标识和自身节点的标 识对应的共享内存的标识的对应关系保存在共享内存映射表中。
进一步地,获取共享内存映射表,包括:
从本地已存储的数据库中获取共享内存映射表;或者,
发送第一获取请求给代理节点,第一获取请求携带自身节点的标识;接 收代理节点根据自身节点的标识发送的共享内存映射表。
进一步地,发送第一获取请求给代理节点之后,该方法还包括: 判断在第一预设时间内是否接收到代理节点发送的共享内存映射表; 如果否,发送第二获取请求给备份代理节点,第二获取请求携带自身节 点的标识,备份代理节点为代理节点的备份节点;
接收备份代理节点根据自身节点的标识发送的共享内存映射表。
进一步地,该方法还包括:
每隔第二预设时间获取共享内存映射表;
将本地已存储的共享内存映射表更新为获取的共享内存映射表。
在本发明实施例中,访问节点从共享内存映射表中获取目的节点的标识 和共享内存的标识,不需要代理节点分配共享内存,简化了访问共享内存的 处理过程;并且,访问节点通过调用 API对共享内存进行读写操作,不需要 消耗系统资源,提高了共享内存的读写性能。 需要说明的是:上述实施例提供的访问共享内存的装置在访问共享内存 时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要 而将上述功能分配由不同的功能模块完成, 即将装置的内部结构划分成不同 的功能模块, 以完成以上描述的全部或者部分功能。 另外,上述实施例提供 的访问共享内存的装置与访问共享内存的方法实施例属于同一构思,其具体 实现过程详见方法实施例,这里不再赘述。 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通 过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存 储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器, 石 ¾ ^¾ sjc 7¾ ^¾ ο 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明 的精神和原则之内 ,所作的任何修改、 等同替换、 改进等,均应包含在本发 明的保护范围之内。
Claims
1、 一种访问共享内存的方法,其特征在于,所述方法包括: 获取目的节点和所述目的节点对应的共享内存的标识,所述目的节点为 共享内存映射表中的一个节点的标识对应的节点,所述共享内存映射表用于 存储节点的标识与共享内存的标识的对应关系;
调用远程直接内存访问 RDM\的应用程序编程接口 API ;
通过所述 API对所述目的节点上的所述共享内存的标识对应的共享内 存进行读写操作。
2、 如权利要求 1所述的方法,其特征在于,所述通过所述 API对所述 目的节点上的所述共享内存的标识对应的共享内存进行读写操作,包括: 通过所述 API发送所述共享内存的标识和待写入的数据给所述目的节 点,使所述目的节点根据所述共享内存的标识将所述待写入的数据写入所述 共享内存的标识对应的共享内存中。
3、 如权利要求 1所述的方法,其特征在于,所述通过所述 API对所述 目的节点上的所述共享内存的标识对应的共享内存进行读写操作,包括: 通过所述 API发送所述共享内存的标识和待读出的数据的标识给所述 目的节点,使所述目的节点根据所述共享内存的标识和所述待读出的数据的 标识从所述共享内存的标识对应的共享内存中获取所述待读出的数据; 接收所述目的节点发送的所述待读出的数据。
4、 如权利要求 1所述的方法,其特征在于,所述获取目的节点和所述 目的节点对应的共享内存的标识,包括:
获取所述共享内存映射表;
从所述共享内存映射表中选择一个节点的标识作为所述目的节点的标 识;
根据所述目的节点的标识获取所述目的节点;
根据所述目的节点的标识从所述共享内存映射表中获取与所述目的节 点的标识对应的所述共享内存的标识。
5、 如权利要求 1所述的方法,其特征在于,所述获取目的节点和所述 目的节点对应的共享内存的标识之前,所述方法还包括:
将自身节点的标识和所述自身节点的标识对应的共享内存的标识的对 应关系保存在所述共享内存映射表中。
6、 如权利要求 1所述的方法,其特征在于,所述获取目的节点和所述 目的节点对应的共享内存的标识之前,所述方法还包括:
发送注册请求给代理节点,所述注册请求携带自身节点的标识和所述自 身节点的标识对应的共享内存的标识,使所述代理节点将所述自身节点的标 识和所述自身节点的标识对应的共享内存的标识的对应关系保存在所述共 享内存映射表中。
7、 如权利要求 4所述的方法,其特征在于,所述获取所述共享内存映 射表,包括:
从本地已存储的数据库中获取所述共享内存映射表;或者,
发送第一获取请求给代理节点,所述第一获取请求携带自身节点的标 识;接收所述代理节点根据所述自身节点的标识发送的所述共享内存映射 表。
8、 如权利要求 7所述的方法,其特征在于,所述发送第一获取请求给 代理节点之后,所述方法还包括:
判断在第一预设时间内是否接收到所述代理节点发送的所述共享内存 映射表;
如果否,发送第二获取请求给备份代理节点,所述第二获取请求携带所 述自身节点的标识,所述备份代理节点为所述代理节点的备份节点;
接收所述备份代理节点根据所述自身节点的标识发送的所述共享内存 映射表。
9、 如权利要求 4所述的方法,其特征在于,所述方法还包括: 每隔第二预设时间获取所述共享内存映射表;
将本地已存储的所述共享内存映射表更新为所述获取的共享内存映射 表。
10、 一种访问共享内存的装置,其特征在于,所述装置包括:
第一获取模块,用于获取目的节点和所述目的节点对应的共享内存的标 识,所述目的节点为共享内存映射表中的一个节点的标识对应的节点,所述 共享内存映射表用于存储节点的标识与共享内存的标识的对应关系;
调用模块,用于调用远程直接内存访问 RDM\的应用程序编程接口 API ; 访问模块,用于通过所述 API对所述目的节点上的所述共享内存的标识 对应的共享内存进行读写操作。
11、 如权利要求 10所述的装置,其特征在于,所述访问模块,包括: 第一发送单元,用于通过所述 API发送所述共享内存的标识和待写入的 数据给所述目的节点,使所述目的节点根据所述共享内存的标识将所述待写 入的数据写入所述共享内存的标识对应的共享内存中。
12、 如权利要求 10所述的装置,其特征在于,所述访问模块,包括: 第二发送单元,用于通过所述 API发送所述共享内存的标识和待读出的 数据的标识给所述目的节点,使所述目的节点根据所述共享内存的标识和所 述待读出的数据的标识从所述共享内存的标识对应的共享内存中获取所述
待读出的数据;
接收单元,用于接收所述目的节点发送的所述待读出的数据。
13、 如权利要求 10所述的装置,其特征在于,所述第一获取模块,包 括:
第一获取单元,用于获取所述共享内存映射表;
选择单元,用于从所述共享内存映射表中选择一个节点的标识作为所述 目的节点的标识;
第二获取单元,用于根据所述目的节点的标识获取所述目的节点; 第三获取单元,用于根据所述目的节点的标识从所述共享内存映射表中 获取与所述目的节点的标识对应的所述共享内存的标识。
14、 如权利要求 10所述的装置,其特征在于,所述装置还包括: 保存模块,用于将自身节点的标识和所述自身节点的标识对应的共享内 存的标识的对应关系保存在所述共享内存映射表中。
15、 如权利要求 10所述的装置,其特征在于,所述装置还包括: 第一发送模块,用于发送注册请求给代理节点,所述注册请求携带自身 节点的标识和所述自身节点的标识对应的共享内存的标识,使所述代理节点 将所述自身节点的标识和所述自身节点的标识对应的共享内存的标识的对 应关系保存在所述共享内存映射表中。
16、 如权利要求 13所述的装置,其特征在于,
所述第一获取单元,用于从本地已存储的数据库中获取所述共享内存映 射表;或者,所述第一获取单元,用于发送第一获取请求给代理节点,所述 第一获取请求携带自身节点的标识;接收所述代理节点根据所述自身节点的 标识发送的所述共享内存映射表。
17、 如权利要求 16所述的装置,其特征在于,所述装置还包括: 判断模块,用于判断在第一预设时间内是否接收到所述代理节点发送的 所述共享内存映射表;
如果否,第二发送模块,用于发送第二获取请求给备份代理节点,所述 第二获取请求携带所述自身节点的标识,所述备份代理节点为所述代理节点 的备份节点;
接收模块,用于接收所述备份代理节点根据所述自身节点的标识发送的 所述共享内存映射表。
18、 如权利要求 13所述的装置,其特征在于,所述装置还包括: 第二获取模块,用于每隔第二预设时间获取所述共享内存映射表; 更新模块,用于将本地已存储的所述共享内存映射表更新为所述获取的 共享内存映射表。
19、 一种访问共享内存的装置,其特征在于,所述装置包括:存储器和 处理器,所述存储器存储程序代码,所述处理器用于调用所述存储器中的程 序代码执行如权利要求 1 - 9任一所述的访问共享内存的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310529433.1 | 2013-10-30 | ||
CN201310529433.1A CN103607428B (zh) | 2013-10-30 | 2013-10-30 | 一种访问共享内存的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015062228A1 true WO2015062228A1 (zh) | 2015-05-07 |
Family
ID=50125628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2014/076647 WO2015062228A1 (zh) | 2013-10-30 | 2014-04-30 | 一种访问共享内存的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103607428B (zh) |
WO (1) | WO2015062228A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607428B (zh) * | 2013-10-30 | 2017-11-17 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
CN105518611B (zh) * | 2014-12-27 | 2019-10-25 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
WO2017128103A1 (zh) * | 2016-01-27 | 2017-08-03 | 华为技术有限公司 | 一种内存访问方法、装置及系统架构 |
US10303646B2 (en) * | 2016-03-25 | 2019-05-28 | Microsoft Technology Licensing, Llc | Memory sharing for working data using RDMA |
CN107690622B9 (zh) * | 2016-08-26 | 2020-09-22 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
CN106844048B (zh) * | 2017-01-13 | 2020-11-06 | 上海交通大学 | 基于硬件特性的分布式共享内存方法及系统 |
CN107609093B (zh) * | 2017-09-08 | 2020-12-18 | 东软集团股份有限公司 | 一种数据库表监控方法、装置、设备和存储介质 |
CN112422615B (zh) * | 2018-02-24 | 2023-11-10 | 华为技术有限公司 | 一种通信的方法及装置 |
CN108762822B (zh) * | 2018-03-23 | 2021-11-16 | 中国银联股份有限公司 | 一种数据加载方法及装置 |
CN109597713A (zh) * | 2018-11-29 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 数据备份方法及装置 |
CN109766199B (zh) * | 2018-12-29 | 2024-01-30 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN112114947B (zh) * | 2020-09-17 | 2024-02-02 | 石家庄科林电气股份有限公司 | 一种基于边缘计算网关的系统资源调度方法 |
CN114780465B (zh) * | 2022-03-01 | 2024-04-16 | 阿里巴巴(中国)有限公司 | 可共享远程直接数据存取链接的创建方法及装置 |
CN114490141B (zh) * | 2022-04-14 | 2022-07-05 | 中国电子科技集团公司第二十八研究所 | 一种基于共享内存的高并发ipc数据交互方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101860574A (zh) * | 2010-07-02 | 2010-10-13 | 中国人民解放军国防科学技术大学 | P2p内存资源共享网络中基于信誉的服务匹配方法 |
CN103136110A (zh) * | 2013-02-18 | 2013-06-05 | 华为技术有限公司 | 内存管理方法、内存管理装置及numa系统 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428730B2 (en) * | 2003-12-15 | 2008-09-23 | Intel Corporation | Software development environment |
-
2013
- 2013-10-30 CN CN201310529433.1A patent/CN103607428B/zh active Active
-
2014
- 2014-04-30 WO PCT/CN2014/076647 patent/WO2015062228A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101860574A (zh) * | 2010-07-02 | 2010-10-13 | 中国人民解放军国防科学技术大学 | P2p内存资源共享网络中基于信誉的服务匹配方法 |
CN103136110A (zh) * | 2013-02-18 | 2013-06-05 | 华为技术有限公司 | 内存管理方法、内存管理装置及numa系统 |
CN103607428A (zh) * | 2013-10-30 | 2014-02-26 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103607428A (zh) | 2014-02-26 |
CN103607428B (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2015062228A1 (zh) | 一种访问共享内存的方法和装置 | |
US10609150B2 (en) | Lock management method in cluster, lock server, and client | |
TWI431978B (zh) | Methods, devices and systems for obtaining resources | |
WO2014056356A1 (zh) | 一种数据查询方法、系统及存储介质 | |
CN103780679B (zh) | 基于http协议的长延时远程调用方法 | |
WO2015180648A1 (zh) | 一种资源分配的方法及装置 | |
CN106933548B (zh) | 全局信息获取、处理及更新、方法、装置和系统 | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
WO2014101475A1 (zh) | 云平台应用部署方法及装置 | |
US8600999B2 (en) | System and method for efficient resource management | |
WO2020038443A1 (zh) | 桥接通信的方法和设备 | |
WO2016041322A1 (zh) | 移动智能终端下转发应用内流量的方法 | |
US20220269428A1 (en) | System Startup Method and Related Device | |
TW201724001A (zh) | 全域資訊獲取、處理及更新方法、裝置和系統 | |
WO2014183417A1 (zh) | 管理内存的方法、装置和系统 | |
WO2019041670A1 (zh) | 一种降低功能页面请求次数的方法、存储介质、设备及系统 | |
CN112597039A (zh) | 虚拟机访问方法、系统、设备及计算机可读存储介质 | |
WO2016101662A1 (zh) | 一种数据处理方法及相关服务器 | |
CN113746641B (zh) | 一种基于分布式存储的odx协议处理方法 | |
WO2016095644A1 (zh) | 数据库的高可用解决方法和装置 | |
TW202232316A (zh) | 計算裝置以及用於儲存裝置資源管理的系統和方法 | |
US9547590B2 (en) | Managing memory | |
WO2019184107A1 (zh) | 数据传输通道建立系统、方法、网络存储设备、服务器及存储介质 | |
CN111382132A (zh) | 医学影像数据云存储系统 | |
CN111107119A (zh) | 基于云存储系统的数据访问方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14858401 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14858401 Country of ref document: EP Kind code of ref document: A1 |