-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Distributed API-X instances #9
Comments
If you keep the config (and insofar as possible, the state) in the repository, you can dump some of this work off your shoulders. |
This is also an area where tools like zookeeper (or any of the software built on zk) work well, especially if you want fault-tolerance and/or leader election for api-x core. If you don't care about that, then putting the shared state in a common database (or the Fedora repository) would be really easy. |
ZeroMQ (broker less) is also a good option. |
ZeroMQ is good software in many ways, but it would be better, if possible to design to some kind of interface or contract, not a specific product. ZeroMQ is not going to suit everyone. Nothing will. That is the realization that started us off on the road of specification for the repository itself. |
@ajs6f agree. Idem goes for Zookeeper. "design to some kind of interface or contract" == true. Since i'm still trying to get what an API-X compliant service should be (formal framework and/or contract on that side) i will have to dig deeper to get a better sense of what the real needs of topics like "shared state" are here. Conclusion: need to do my homework |
In my POC -- there is an API interface for the registry and binding services. The implementation can be based on any technology (ZK, ZeroMQ, whatever) -- the POC uses a simple in-memory |
It just might be that @acoburn has captured the type requirements for that component simply by using the |
@ajs6f can you further elaborate those thoughts? Too abstract for my normal Sunday night state of mind.
I'm probably not getting the goal of a shared state/ inter service communication pattern specs or maybe the how via this implementation. Thanks 😄 |
I'm saying that if a To be honest, I'd rather see API-X ignore this question entirely, at least for now. I don't think it's actually appropriate to specify this kind of behavior, for the same reason that Fedora itself is avoiding the question. But if API-X is going to get into this, then I hope it will be in most abstract and flexible way available. |
@DiegoPino The way I handled this in my POC was to write simple These interfaces use |
Revisiting this, the present API-X impl is essentially stateless. Any in-memory caches it uses for optimization purposes are initialized from repository contents, and are updated in response to messages from the repository. So I don't think all that much work would be necessary on the API-X side to scale horizontally. The hard part would be leveraging existing infrastructure to demonstrate it (i.e. track running instances of API-X with Zookeeper or Consul, load balance, etc). I think expanding the demo images would be a plausible way forward |
Determine shared state, configuration, and communication needs between instances of API-X core. Determine key patterns and use cases (e.g. load balance, failover)
The text was updated successfully, but these errors were encountered: