All content on nostr is put on relays. Your nip-05 can list what relays you use and some relays run bots to crawl the network for kind 0 events which have your relay and profile information.
Relays can use a syncing protocol between themselves.
The traditional nostr model just reads from some set of relays. And you miss things. There are inbox / outbox models where you find what relay a person is using and read from / write to those relays. That’s where nostr is going. Primal and some others like nos use a bot and big caching server. Which is a kind of centralization but hasn’t risked the network the way Bluesky does it because it’s entirely open and you can easily opt out. Inbox / outbox plus caching is probably the best solution for performance and openness.