IP Library › Granted Patent US 9,619,391
Granted Patent B2
US 9,619,391 · App. 14/724,068 · Granted Apr 11, 2017

In-memory caching with on-demand migration

Inventor: Kanak B. Agarwal (Austin, TX)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/0864G06F3/067G06F3/0611G06F3/0629G06F3/0647H04L67/42G06F2212/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,619,391
App. No.
14/724,068
Granted
Apr 11, 2017
Kind
B2
Abstract

For on-demand migration of data in a distributed memory storage configuration, an identifier is transformed at a client into a transformed identifier. From a current configuration of a first plurality of servers operating on a server-side at a current time, a current server is identified at the client. From a previous configuration of a second plurality of servers operating on a server-side at a previous time, a previous server is identified at the client. A first request is sent to the current server to perform an operation using the identifier. A second request is sent to the previous server to perform the operation using the identifier. When a first data in response to the first request is invalid and a second data in response to the second request is valid, the second data is migrated to the current server in a migration request from the client to the current server.

Claims (60)

1. A method for on-demand migration of data in a distributed memory storage configuration, the method comprising:

transforming, at a client-side data processing system, using a processor, a first identifier to form a transformed identifier;

identifying, at the client-side data processing system, from a current configuration of a first plurality of servers operating on a server-side at a current time, a current server;

identifying, at the client-side data processing system, from a previous configuration of a second plurality of servers operating on a server-side at a previous time, a previous server;

sending, a first request to the current server to perform an operation using the first identifier;

sending, a second request to the previous server to perform the operation using the first identifier; and

migrating, responsive to a first data in response to the first request being invalid and responsive to a second data in response to the second request being valid, the second data in a migration request from the client side data processing system to the current server.

2. The method of claim 1 , further comprising:

saving, at the client-side data processing system, the current configuration of the first plurality of servers at the current time; and

designating at the current time, an already saved configuration of the second plurality of servers operating on a server-side at the previous time, as the previous configuration.

3. The method of claim 1 , further comprising:

receiving, at the client-side data processing system, a write request to perform a write operation on the server-side with a third data corresponding to a second identifier; sending a third request to the current server to perform the write operation; and

sending a fourth request to the previous server to perform a delete operation corresponding to the second identifier.

4. The method of claim 3 , further comprising:

sending a fifth request to a second previous server to perform a second delete operation corresponding to the second identifier.

5. The method of claim 1 , further comprising:

receiving the first request from a requestor application executing on the client-side data processing system, wherein the first request includes the first identifier, wherein the first identifier corresponds to a data object stored on a server-side data processing system; and

sending the second data to the requestor application in response to the first request.

6. The method of claim 1 , further comprising:

invalidating the second data in the previous server by sending a delete request from the client side data processing system to the previous server.

7. The method of claim 1 , further comprising:

receiving the first data in a first response from the current server; and

receiving the second data in a second response from the previous server, wherein the previous server is not designated in the current configuration to process the operation.

8. The method of claim 1 , wherein the first data being invalid comprises the first data being unavailable from the current server.

9. The method of claim 1 , wherein each server in the first plurality of servers is a memcache server, and wherein the current configuration is a ring of memcache servers.

10. The method of claim 1 , further comprising:

determining, as a part of the identifying the current server, that the current server is designated in the current configuration to process the operation; and

determining, as a part of the identifying the previous server, that the previous server was designated in the previous configuration to process the operation.

11. The method of claim 1 , wherein the transforming comprises hashing, and wherein the transformed identifier is a hash value of the first identifier according to a hashing algorithm.

12. The method of claim 1 , further comprising:

determining that the current server was added to the previous configuration after the previous time.

13. A computer usable program product comprising a computer readable storage device including computer usable code for on-demand migration of data in a distributed memory storage configuration, the computer usable code comprising:

computer usable code for transforming, at a client-side data processing system, using a processor, a first identifier to form a transformed identifier;

computer usable code for identifying, at the client-side data processing system, from a current configuration of a first plurality of servers operating on a server-side at a current time, a current server;

computer usable code for identifying, at the client-side data processing system, from a previous configuration of a second plurality of servers operating on a server-side at a previous time, a previous server;

computer usable code for sending, a first request to the current server to perform an operation using the first identifier;

computer usable code for sending, a second request to the previous server to perform the operation using the first identifier; and

computer usable code for migrating, responsive to a first data in response to the first request being invalid and responsive to a second data in response to the second request being valid, the second data in a migration request from the client side data processing system to the current server.

14. The computer usable program product of claim 13 , further comprising:

computer usable code for saving, at the client-side data processing system, the current configuration of the first plurality of servers at the current time; and

computer usable code for designating at the current time, an already saved configuration of the second plurality of servers operating on a server-side at the previous time, as the previous configuration.

15. The computer usable program product of claim 13 , further comprising:

computer usable code for receiving, at the client-side data processing system, a write request to perform a write operation on the server-side with a third data corresponding to a second identifier; sending a third request to the current server to perform the write operation; and

computer usable code for sending a fourth request to the previous server to perform a delete operation corresponding to the second identifier.

16. The computer usable program product of claim 15 , further comprising:

computer usable code for sending a fifth request to a second previous server to perform a second delete operation corresponding to the second identifier.

17. The computer usable program product of claim 13 , further comprising:

computer usable code for receiving the first request from a requestor application executing on the client-side data processing system, wherein the first request includes the first identifier, wherein the first identifier corresponds to a data object stored on a server-side data processing system; and

computer usable code for sending the second data to the requestor application in response to the first request.

18. The computer usable program product of claim 13 , wherein the computer usable code is stored in a computer readable storage device in a data processing system, and wherein the computer usable code is transferred over a network from a remote data processing system.

19. The computer usable program product of claim 13 , wherein the computer usable code is stored in a computer readable storage device in a server data processing system, and wherein the computer usable code is downloaded over a network to a remote data processing system for use in a computer readable storage device associated with the remote data processing system.

20. A data processing system for on-demand migration of data in a distributed memory storage configuration, the data processing system comprising:

a storage device, wherein the storage device stores computer usable program code; and

a processor, wherein the processor executes the computer usable program code, and wherein the computer usable program code comprises:

computer usable code for transforming, at a client-side data processing system, using a processor, a first identifier to form a transformed identifier;

computer usable code for identifying, at the client-side data processing system, from a current configuration of a first plurality of servers operating on a server-side at a current time, a current server;

computer usable code for identifying, at the client-side data processing system, from a previous configuration of a second plurality of servers operating on a server-side at a previous time, a previous server;

computer usable code for sending, a first request to the current server to perform an operation using the first identifier;

computer usable code for sending, a second request to the previous server to perform the operation using the first identifier; and

computer usable code for migrating, responsive to a first data in response to the first request being invalid and responsive to a second data in response to the second request being valid, the second data in a migration request from the client side data processing system to the current server.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: AGARWAL, KANAK B.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 035734/0017 →
Continuity (1)
Related Publication 20160350226A1 · Dec 1, 2016