Felix GV
09/05/2023, 12:18 AM3. Would you recommend D2 or "router-based" routing? Would router become a bottleneck over time?With D2 it also goes through the router, so the performance is the same. The upside of D2 is that it provides service discovery, so that if some router instances go up and down the clients can be aware of this. The downside is that D2 does this via Zookeeper, which at very large scale can be a bottleneck, and is an extra moving part (you could use a single ZK for Venice, Kafka and D2 if you wanted to, or spread these ZK workloads across two or even three different ZK deployments, with different cost/complexity/isolation tradeoffs). There is also a client lib which skips the routers and goes straight to the servers. We call it the fast-client (as opposed to the thin-client). We use the fast-client in production today but only in a limited way, with some of our most committed internal users that can work with us to debug issues and take patches rapidly. I would recommend starting off with the thin-client as it is the simplest and by far the most battle-tested. The Da Vinci client is also quite well tested at this point but inherently more complex to operate due to making the client service stateful. Eventually, we would probably make the fast-client into the default client lib, but we’re not there yet…