Warning: This may not be a practical answer to your problem (but then again, it may be).
In an ideal world, you'd use multicasting for this job. The basic idea of multicasting is that routers (which, by nature, know about routing) handle the job of routing messages to your clients. The clients enable that by registering with a router to tell it what they want to subscribe to.
The good point of this is that you can send a message to all the subscribers by sending a single message to the correct multicast address on the router. The router then forwards that message either directly to subscribers or to the multicast addresses on other routers (which can, in turn, fan it out to still more clients).
If you're doing this over private infrastructure (possibly including some tunnels over public infrastructure), it may take some effort to get all the routers involved properly configured to do the job right. In particular, it's actually fairly common for the default configuration on a lot of routers to simply block all multicast packets (which will obviously stop it from working, at least via that router).
If you need to use public infrastructure, the problem is probably pretty obvious: some of the routers your data goes through may well block multicast packets--and in this case, you have no control over how the routers are configured, so if it doesn't work, you probably can't do much (if anything) to fix it. Worse, even if it works part of the time, the minute routing changes (again, something over which you generally have no control) it may break.
There is some hope though. In particular, although IPv4 does support multicast to a limited degree, it was tacked onto the side (so to speak) long after IPv4 was originally defined. As such, if you're (exclusively or even primarily) using IPv4 infrastructure, it's pretty unlikely that you can get multicast to work over public infrastructure.
Multicast has been part of IPv6 from the beginning though. IPv6 doesn't support broadcast at all, only various forms of multicast. As such, for connections where both the server and the client support IPv6, there's at least a decent chance that you can also use multicast (quite a bit better chance than if either is restricted to IPv4, anyway).