IP Library Granted Patent US 11,372,685
Granted Patent B2
US 11,372,685 · App. 15/901,541 · Granted Jun 28, 2022

Hash-based routing

Inventors: Frank Mitchell (Pawtucket, RI); Andrew Thompson (Attleboro, MA)
Assignee: Rapid7, Inc.
G06F9/505G06F9/546G06F11/3476H04L9/0643
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 11,372,685
App. No.
15/901,541
Granted
Jun 28, 2022
Kind
B2
Abstract

Routing log-based information by generating a log entry at a production server, computing an identifier for a logging server, and transmitting the log entry from the production server to the identified logging server. A hash-based routing system for storing and retrieving log-based information. A production server for generating and transmitting a log entry from a production server to a logging server.

Claims (42)

1. A method of routing log-based information comprising:

computing, at a production server and when the production server is initialized, an identifier by applying a hashing algorithm to at least one property of the production server, wherein the identifier is used to identify a shard of one of a plurality of logging servers to receive log entries from the production server, and wherein the at least one property of the production server is an instance identifier associated with a virtual machine implementing the production server;

selecting the identified shard of the logging server of the plurality of logging servers to receive the log entries from the production server;

generating a log entry at the production server;

transmitting the log entry from the production server to the identified shard of the logging server;

detecting an absence of the transmitted log entry at the identified shard; and

detecting failure of the logging server based on the detected absence of the transmitted log entry;

recomputing, at the production server, a new identifier for a shard of a second logging server of the plurality of logging servers in response to detecting the failure of the logging server; and

transmitting new log entries from the production server to the shard of the second logging server.

2. The method of claim 1 , further comprising storing the log entry at the logging server.

3. The method of claim 2 , further comprising retrieving the log entry from the logging server.

4. The method of claim 1 , wherein the hash function is selected from the group consisting of CRC32, MD5, and SHA256.

5. The method of claim 2 , wherein the log entry is stored in a queue at the identified logging server.

6. The method of claim 1 wherein the log entry is transmitted from the production server to the logging server without utilizing a load balancer.

7. The method of claim 1 , further comprising performing, by the production server:

in response to a determination that a new logging server is added to the plurality of logging servers:

computing another identifier using the hashing algorithm; and selecting another shard of one of the plurality of logging servers to receive log entries from the production server based on the other identifier.

8. The method of claim 1 , further comprising performing, by the production server:

in response to a determination that the logging server is removed from the plurality of logging servers:

computing another identifier using the hashing algorithm; and

selecting another shard of one of the plurality of logging servers to receive log entries from the production server based on the other identifier.

9. A hash-based routing system for storing and retrieving log-based information comprising:

at least one production server with a processor executing instructions stored on memory and configured to:

compute, when the production server is initialized, an identifier by applying a hashing algorithm to at least one property of the production server, wherein the identifier is used to identify a shard of one of a plurality of logging servers to receive log entries from the production server, and wherein the at least one property of the production server is an instance identifier associated with a virtual machine implementing the production server;

select the identified shard of the logging server of the plurality of logging servers to receive the log entries from the production server; generate at least one log entry;

transmit the log entry from the production server to the identified shard of the logging server;

wherein the identified shard of the logging server is configured to receive the at least one log entry and store the at least one log entry and failure of the logging server is detected by an absence of the generated log entry;

recompute, at the production server, a new identifier for a shard of a second logging server of the plurality of logging servers in response to detecting the failure of the logging server; and

transmit new log entries from the production server to the shard of the second logging server.

10. The routing system of claim 9 , wherein the hash function is selected from the group consisting of CRC32, MDS, and SHA256.

11. The routing system of claim 9 , further comprising a second production server.

12. The routing system of claim 9 , further comprising a user interface that, when executed, displays the log entry after the at least one log entry is received by the identified shard of the logging server.

13. The routing system of claim 9 , wherein the at least one log entry is stored in a queue at the identified logging server.

14. The routing system of claim 9 , wherein the routing system does not include a load balancer.

15. One or more non-transitory persistent computer-readable media storing program code that when executed on one or more processors of a production server cause the production server to:

compute, when the production server is initialized, an identifier by applying a hashing algorithm to at least one property of the production server, wherein the identifier is used to identify a shard of one of a plurality of logging servers to receive log entries from the production server, and wherein the at least one property of the production server is an instance identifier associated with a virtual machine implementing the production server;

select the identified shard of the logging server of the plurality of logging servers to receive the log entries from the production server;

generate a log entry; and

transmit the log entry to the identified shard of the logging server, wherein failure of the logging server is detected by an absence of the generated log entry at the identified shard;

recompute, at the production server, a new identifier for a shard of a second logging server of the plurality of logging servers in response to detecting the failure of the logging server; and

transmit new log entries from the production server to the shard of the second logging server.

16. One or more non-transitory computer-readable media of claim 15 , wherein the hash function is selected from the group consisting of CRC32, MDS, and SHA256.

Assignments (4)
SECURITY INTEREST Recorded Jun 26, 2025
From: RAPID7, INC.; RAPID7 LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071743/0537 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2024
From: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: RAPID7, INC.
Reel/Frame 069785/0328 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 24, 2020
From: RAPID7, INC.
To: KEYBANK NATIONAL ASSOCIATION
Reel/Frame 052489/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2018
From: MITCHELL, FRANK; THOMPSON, ANDREW
To: RAPID7, INC.
Reel/Frame 045141/0815 →
Continuity (1)
Related Publication 20190258515A1 · Aug 22, 2019