Federated Catalog scalability: crawling strategy for large dataspaces #202
Replies: 2 comments
-
|
Assuming that everyone always needs everyone else's latest data, then I think this is a classic poll-vs-event-driven problem. I can think of several ways to approach this: Centralized Event SystemEvery connector subscribes to a (centralized) event system. Each connector emits an event when their data inventory changes: e.g. when an asset is added or updated. For this, the existing EDC event routing can be used. Then, when a connector receives an event, that someone else's inventory has changed, it simply triggers a catalog request to fetch the newest update. To optimize even further, differential updates could be implemented, where the asset added/updated event carries the dataset ID, so that the consumer connector can do a dataset request instead of a catalog request. The obvious elephant in the room is that this requires centralized infrastructure, namely the event system. This might not be suitable in all situations. Consumer registers with Provider-owned messaging systemAnother slightly more decentralized approach would be:
This would be quite efficient in terms of resources, because the provider publishes once, and every consumer gets the update. However, the provider would need to admin the message system Provider actively informs ConsumerA third option could be a variant of the previous one, where the provider calls an API of the consumer to notify about asset updates, instead of the consumer subscribing to a topic:
This would require no additional infrastructure, no NATS/Kafka,..., but a custom registration process must be implemented, and on every update the provider would have to call N interested consumers, but at least that could be spread out over time. Also, the publication of the event could happen over HTTP/REST, so no additional infrastructure is needed. |
Beta Was this translation helpful? Give feedback.
-
60-second crawl period is totally overkill in every case, why would anybody need such frequency to get their catalog updated from all the participants, giving that contract offers are something that (in a sane scenario) are meant to stay there for days/weeks/months? I think that we engineers tend to look in the "micro" scenario because we are used to test environments that need to run in short amounts of time, but, the production is different.
It works the same with web scrapers: if the number of nodes you have to scrape becomes too high or you get throttled, the scrape frequency needs to be reduced accordingly.
Just crawl what you need, not everything, typically in an use case a consumer knows its own providers, so it's just a matter to just crawl those, for all the use cases supported by that control-plane.
We can use some concepts from other p2p networks that have been running for decades, and the catalog crawling is not different from cough...cough... torrent indexers: any participant could fetch other offers related to specific use cases and aggregate them into a catalog that will be available to the whole network. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
With the Federated Catalog now embedded as a default control-plane feature, each participant runs its own crawler that periodically fetches the catalog of every other participant. For N participants, this means:
For a dataspace with 5,000 participants and a 60-second crawl period, that's ~25 million requests/cycle network-wide, and if each catalog response is non-trivial (hundreds of offers with policies), the bandwidth adds up quickly.
The main Questions:
deployments?
I understand the design intentionally avoids a single centralized broker (for sovereignty/trust reasons), but I'm curious to understand how to deal with this scaling issue.
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions