Hi, please do not misunderstand the topic, I’m not trying to question the need for zmq at all.
I would like to ensure I have a solid understanding of the Jupyter Kernel architecture.
Given that zmq is smack in the middle, thus a critical component in the architecture, I would like to have a good grasp of zmq (how/why/benefits its used and the underlying protocol, etc)
Here are some of my assumptions about why zmq is used today:
- Support for remote connections to kernels (from other machines)
- Performance (async io, very useful for Python)
- Messaging patterns such as pub/sub
- Reliability (from what I know messages are buffered and held in memory until the other ends connection is back up)
- security (ensures data is not tampered, etc)
- back when zmq was adopted there weren’t too many other alternatives
Did i miss anything else?