Hi Lixin. Good questions! I can offer a high-level summary.
> I'm wondering what's the threading model behind the completion queue?
> Who produces items to the completion queue?
> What is between the completion queue and the network?
Quite a few things - the majority of gRPC sits between them. At a high level, there's the transport layer, handling things like HTTP/2 and cronet transports. Then there are filters that both filter and augment calls, adding things like max_age filtering and load balancing for client channels. The bottom-most layer is called iomgr, providing things like network connectivity and timers.