Understaning the architecture Jupyter kernels (zmq)

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?

Thanks

1 Like