-
Notifications
You must be signed in to change notification settings - Fork 898
Design Principles
mjpt777 edited this page Nov 2, 2014
·
20 revisions
To achieve low-latency with minimal variance, while achieving high throughput, it is important to define a set of design principles that guide the development. When a trade off is required then the design principles help guide the decision in choosing between competing alternatives.
Many design principles come to bear on any implementation. Not all design principles require trade-offs but many do. The following set of design principles are key to the design of Aeron and the likely to drive most trade-offs. When two or more design principles conflict with each other then the one with the highest rank wins.
- Garbage free in steady state running
- Apply Smart Batching in the message path
- Wait-free algorithms in the message path
- Non-blocking IO in the message path
- No exceptional cases in the message path
- Apply the Single Writer Principle
- Prefer unshared state
- Strict Separation of Concerns
- Avoid unnecessary data copies
Stuff
Stuff
Stuff
Stuff
Stuff
Stuff
Stuff
Stuff
Stuff