1 / 20

Baratine in Practice

Baratine in Practice. Date: 2014-06-17 Location: San Diego JUG. Nam Nguyen Software Engineer Caucho Technology, Inc. Baratine in Practice. Download Install Our first @ResourceService - @Modify - Multiple counters Concepts @Service - implement an example @Workers

kathy
Download Presentation

Baratine in Practice

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Baratine in Practice Date: 2014-06-17 Location: San Diego JUG Nam Nguyen Software Engineer Caucho Technology, Inc.

  2. Baratine in Practice Download Install Our first @ResourceService - @Modify - Multiple counters Concepts @Service - implement an example @Workers - implement an example Type of services chart Partitioning and clustering

  3. Task: Baratine quick start - Download - Install - Our first service http://doc.baratine.io/v0.8/manual/quick-start/

  4. Java @Journal @ResourceService(“public:///counter/{_id}”) public class CounterServiceImpl { private long _id; private long _counter; public long get() { return _counter; } @Modify public long incrementAndGet() { return ++_counter; } @Modify public long decrementAndGet() { return --_counter; } @Modify public long addAndGet(long value) { _counter = _counter + value; return _counter; } } WebSocket OUTBOX INBOX HTTP REST HTTP Polling JOURNAL KEY-VALUE DB (internal)

  5. What You Get + Insane low-latency concurrent performance assign thread 1. incrementAndGet() 2. incrementAndGet() 3. addAndGet() 4. decrementAndGet() 5. incrementAndGet() assign thread 6. incrementAndGet() 7. ... NO BLOCKING / LOCKING !  very CPU cache friendly (for both data and instructions) • CPU core uninterrupted during batch • no context switching • no pausing • thread screams through entire batch Batch A Batch B

  6. Batch Programming assign thread @BeforeBatch 1 incrementAndGet() 2. addAndGet() 3. addAndGet() 4. decrementAndGet() 5. incrementAndGet() 6. incrementAndGet() @AfterBatch - flush writes assign thread @BeforeBatch 7. ...  Leave expensive operations to be executed at the end of the batch. Inbox is empty at this point

  7. Performance Characteristics Requests per Second Baratine Batch Size / Clients

  8. Performance Characteristics ServiceA to ServiceB within the same JVM Requests per Second - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Baratine Batch Size / Clients

  9. Reliable to Batch assign thread @BeforeBatch 1 incrementAndGet() 2. addAndGet() 3. addAndGet() 4. decrementAndGet() 5. incrementAndGet() 6. incrementAndGet() @AfterBatch - flush writes assign thread @BeforeBatch 7. ...  Safe to process in batches. @OnCheckpoint

  10. Putting it All Together • Freed to operate in memory safely! ▲Operational Data

  11. @Journal @ResourceService(“public:///counter/{_id}”) public class CounterServiceImpl { private long _id; private long _counter; public long get() { return _counter; } @Modify public long incrementAndGet() { return ++_counter; } @Modify public long decrementAndGet() { return --_counter; } @Modify public long addAndGet(long value) { _counter = _counter + value; return _counter; } }

  12. @Service Barebones service, basis of @ResourceService Singleton, only one instance within a JVM - No @Modify - No automatic restore - No automatic paging - No automatic checkpointing - No automatic query support - No automatic partitioning Warning: hardcore!

  13. @Service Less magic: you have fine-grained control + @Journal + @OnRestore + @OnCheckpoint + @OnActive + @BeforeBatch + @AfterBatch

  14. Task: implement a logging service with a @Service

  15. @Workers A @Service with a thread-pool acting on the inbox. Example: hibernate, SAP, MySQL, legacy, integration - Does not fully benefit from batching - Not single-threaded + Can block + Multi-threaded

  16. Task: implement a @Workers @Service

  17. Types of Services (manual)

  18. Partitioning and Clustering /auction/222 /auction/555 /auction/888 /auction/111 /auction/444 /auction/999 192.168.1.100 192.168.1.101 /auction/000 /auction/333 /auction/666 /auction/777 192.168.1.102 Resources are partitioned by its service URL and ID

  19. State of Baratine GPL Been in active development for over 2 years v0.8.3 (alpha) http://baratine.io (alpha) Thank you! stealth <

  20. The End Q and A

More Related