![]() |
AMPS
is an
extreme low latency high throupghput messaging system.
AMPS
is a modern Publish/Subscribe engine designed specifically for next
generation computing environments. It is intended to allow the
realization of scalable high throughput low latency messaging required
in real-time activities such as financial messaging. The architecture,
design and implementation of AMPS allows the exploitation of
parallelism inherent in emerging multi-socket multi-core commodity
computers and the low latency/high bandwidth of 10Gb Ethernet. AMPS
offers both topic and content based susbcription semantics which makes
it different than most other publish/subscribe messaging platforms.
60East Technologies, LLC.
AMPS
has been built for low latency and high throughput with high
levels of concurrency. Special care has been taken to optimize the
message processing path using lock-free and advanced parallel
programming techniques to achieve unprecedented levels of performance
and scalability. The code is written in modern C/C++ with small parts
in Assembly for atomic operations. The code contains no virtual
functions nor does it use inheritance. Great care has been taken to
design the data structures to optimize cache line usage and maximize
cache efficiency.
Computing performance
Average message processing latency on Nehalem based systems is in the
neighborhood
of 1 micro second. End to end latency is highly dependent on network
capabilities and NIC hardware. AMPS has built-in latency statistics so
that message processing latency (processing time inside the engine) can
be observed and monitored.
Persistence performance
Reliable persistence for State of the World (SOW) feature (see below)
is achieved through an internal high performance database backed by a
memory mapped file. The durable store uses regular file based storage
for durable subscriptions has been designed to take advantage of high
performance SSD's and can achieve 15-20K fully synchronous 1-4 KB
writes per second.
Limitations
AMPS has been built specifically for x86-64 Linux environments.
The following are not yet implemented:
Just
unzip the server package somewhere and start the server with the
following command:
$ bin/ampServer conf/amps.xml
(If necessary you can change default listen ports and interfaces in the
conf/amps.xml file)
On the client-side, please consult the documentation
If you find any bug or problem, you can send me an email to : support@crankupthemps.com