Timeout Management using Hashed Timing Wheels | Gautam's personal blog



Timeout Management using Hashed Timing Wheels | Gautam's personal blog

Here is an effort to implement a simple Timeout Management framework based on the concept of Hashed Timing Wheel design. The details of this design was published in a paper by George Varghese and Tony Lauck, 'Hashed and Hierarchical Timing Wheels: data structures to efficiently implement a timer facility'. More comprehensive slides are located here.

JBoss HashWheelTimer was designed based on this concept.

Idea here is to design a Timeout Manager that uses minimum system resources (clock cycles) and works in a highly multi-threaded environment.

Lets assume we have a JTA based transaction manager.  Lets pick a simple design where we store all the transactions in a HashMap as values against the Keys as Threads. Lets a Thread 1 starts a transaction TX1, Transaction Manager inserts an entry into the HashMap.

txMap.put(Thread1, TX1);

As time progresses there would be multiple entries of threads and their associated transactions.

Why we store Transactions against Threads?

When the threads accesses a transactional entity (supports or required Transaction) thread can look up the txMap and see if already a transaction is associated with the Thread. If thread finds a transaction, it associates the entity with the transaction if not it starts a new transaction and pushes a new entry into the txMap.


Read full article from Timeout Management using Hashed Timing Wheels | Gautam's personal blog


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