comms_champion
Aeron
comms_champion | Aeron | |
---|---|---|
4 | 20 | |
242 | 7,064 | |
0.0% | 0.6% | |
0.0 | 9.8 | |
almost 2 years ago | 4 days ago | |
CMake | Java | |
Mozilla Public License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
comms_champion
-
C++ Show and Tell - June 2023
I've been developing CommsChampion Ecosystem for about 9 years as my pet project. It's about easy and compile-time configurable implementation of binary communication protocols using C++11 programming language, with main focus on embedded systems (including bare-metal ones).
-
What network messaging library do you recommend?
If this is the case, for the third stage of the application specific protocol handling I recommend CommsChampion Ecosystem.
-
When to use template meta programming ?
I suppose if you develop something that is going to be used in a single project / product without much of a customization, then meta-programming is not really justified. The meta-programming is justified in many cases when you implement some kind of a library, which can be used in multiple independent products, and these uses may require some product specific customizations. For example, I'm developing a solution for implementing binary communication protocols for embedded systems in C++, called CommsChampion Ecosystem. The core component of which is the COMMS library. Every single use of this library requires different customization. Every application may require different polymorphic interface to handle its message objects. I use template meta-programming there to define virtual functions only needed by the application and not adding unnecessary ones. I also use template meta programming to allow customization of the storage data structures and may use different, more optimized code for some.
-
Protocols that use a map/config to coordinate embedded device and host?
I use commschamp. You describe the protocol in an XML format, it only supports C++ though
Aeron
-
LMAX Disruptor – High Performance Inter-Thread Messaging Library
Semi-related is the Aeron project: https://github.com/real-logic/aeron
-
Nálatok mi a helyzet?
- ez itt most egy izgalmasabb product (trading/matching engine, low latency code, aeron alapokon)
-
How do you do UDP Flow control?
Look into Aeron for examples of high performance UDP message sending. We use it for high performance audio messaging, and I previously used it in high frequency trading https://github.com/real-logic/aeron. It is written in Java/C, but the general concepts of back pressure and reliable delivery over UDP are well documented.
- Aeron: Efficient reliable UDP unicast, UDP multicast, and IPC message transport
-
Experience taking the training offer from real-logic Aeron framework creators?
They mention their training offer on the Aeron GitHub page here: https://github.com/real-logic/aeron
-
Low Latency C++ programs for High Frequency Trading (HFT)
Yup the Disruptor paper actually shocked the industry a bit, b/c it was so out of place. BTW, Martin Thompson went on improving the Disruptor, and the result is the Aeron Protocol: https://github.com/real-logic/aeron
- What network messaging library do you recommend?
-
Possibly stupid question, is java the right language for low latency and high throughput web servers?
I was about to suggest Chronicle, but it looks like they have gone closed-source. The older version is still interesting to look through though. Aeron / Disruptor / SBE are good projects for inspiration as well.
-
Looking similar framework with Aeron ( Java) to do benchmark test
We are using this Java Aeron (https://github.com/real-logic/aeron) to build our production distributed messaging cluster. As a Rust lover, Is there any similar lib or framework in our ecosystem to test benchmark with it?
-
if you had to restart at 0 knowledge what would you do?
Java: In the past years C++ in finance has been rapidly supplanted by Java thanks to breakthrough technologies in the past decade like LMAX Disruptor, Chronicle Queue, Azul JVM, and Aeron (not the ergonomic chair, but this one, the transport protocol that breaks kafka performance records out of the park - not really a full kafka replacement, as Kafka enforces subscriber GD and aeron is more of an OSI layer 4 better than TCP; google "Best-effort delivery vs reliable delivery"). There's plenty more but thanks to these technologies, they allowed a Java based stack to perform the latency and throughput requirements needed for high frequency trading/HFT. From top trading firms like Two Sigma to the New York Stock Exchange, they're in Java. For banks, large modern western banks worth their salt and have modernized their systems are dominated by Java, especially thanks to Azul. To list a few banks, ING, Wells Fargo, Credit Suisse, and Barclays are all in Azul. Even at work Java still dominates.
What are some alternatives?
ReductStore - A time series database for storing and managing large amounts of blob data
Apache Kafka - Mirror of Apache Kafka
luos_engine - Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
Embedded RabbitMQ - A JVM library to use RabbitMQ as an embedded service
system-bus-radio - Transmits AM radio on computers without radio transmitting hardware.
Apache Pulsar - Apache Pulsar - distributed pub-sub messaging system
IRremoteESP8266 - Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
Apache ActiveMQ - Mirror of Apache ActiveMQ
p-net - PROFINET device stack for embedded devices
JeroMQ - Pure Java ZeroMQ
retro-game - a 2d game made in SFML and c++
Apache Camel - Apache Camel is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.