[Design] Monitor Rps for Past sec/min/hr - Shuatiblog.com



[Design] Monitor Rps for Past sec/min/hr - Shuatiblog.com

link

Given a server that has requests coming in.

Design a data structure such that you can fetch the count of the number requests in the last second, minute and hour.

Solution 1

Keep a record of all request timestamps, suggested by the top answer by whatevva:

  1. Use a queue implemented as a resizable array to store the timestamps of all new requests

  2. maintain head/tail pointers as usual

  3. Also maintain three pointers, for past sec, past min and past hr.

Whenever a request comes in, update 3 pointers. Then in the for-loop of the thread, remove old entries and also update 3 pointers.

Print Rps in real time. I posted my code below (the code is without thread-safety consideration).

Solution 2

This solution does not store all timestamps, and it does not generate real-time Rps data. But it's good enough because result is only updated every 1 second, so its performance is better.

Keep an array of int of size 60 * 60. Each second, use the number of request in the past second to update the array values in a rolling way.


Read full article from [Design] Monitor Rps for Past sec/min/hr - Shuatiblog.com


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts