open-source-ideas / ideas

💡 Looking for inspiration for your next open source project? Or perhaps you've got a brilliant idea you can't wait to share with others? Open Source Ideas is a community built specifically for this! 👋
6.59k stars 220 forks source link

Async API Gateway #166

Open DhruvBarot opened 5 years ago

DhruvBarot commented 5 years ago

Project description

currently all API gateway work on HTTP rest protocol and those all are sync call which is block resource and time for API gateway. so idea behind async API gateway is to communicate between service in async mode. There is lots of future enhancement like communicate via GRPC.

currently we can implement async API communication via message queue but as per CQRS read always sync if we have few writer and lots of reader then how we achieve best performance via API gateway? This questions answer is available in proposed solution.

currently in market there is no one deliver this type of solution so this solution may be become commercial.

Relevant Technology

ASP.Net core

Complexity and required time

[Please only tick off one box in each category by changing [ ] to [x]. The labels on the project will then be updated by the maintainers as soon as possible.]

Complexity

Required time (ETA)

Kreijstal commented 5 years ago

how would you notify client of the result, polling?

dhruv-dv commented 5 years ago

Client wait for result... Service notify API gateway for result.

Kreijstal commented 5 years ago

doesn't that defeat the purpose of async?

dhruv-dv commented 5 years ago

Why??? It will create single workers threads application.... This solution reduces work load of API gateway so your API gateway will deploy on small server and handle lots of requests.

remram44 commented 5 years ago

That sounds like the gateway is synchronous. Only the client is asynchronous. Like @kreijstal I don't really grasp the difference.

dhruv-dv commented 5 years ago

Nop Client to gateway sync but internal communication is async. There is lots of technology and product available but full solution is not available. There is one or two solutions available one is Akka and another one is vert.x. But there are based on ESB.

If you want some real world example then I can provide

remram44 commented 5 years ago

Apache vert.x is "event-driven" so very much asynchronous. Akka Streams is also "asynchronous, non-blocking"

dhruv-dv commented 5 years ago

So that's idea. In market Async API gateway not available

dhruv-dv commented 5 years ago

If we create than this product will dominating market. Also we can provide dynamic execution work flow, server less microservices hosting. Polyglot Architecture etc.

remram44 commented 5 years ago

ASP.Net seems also like a very peculiar choice, Go or to a lesser extent Python/Ruby/Clojure/Node seem way better suited, especially for an open-source project.

dhruv-dv commented 5 years ago

I have two choices Java and c# as language. If going with Java then choose spring framework and if going with c# then choose asp. Net core. Currently asp. Net core is more popular and much mature. They provide lots of unique feature and continuous improvement. So as of now my choices is Asp.net Also this solution have polyglot Architecture so we can create some part in any other language.

rafaelfcsouza commented 5 years ago

I have something that I have already started in Kotlin + vert.x, if you are interested I can upload to github and we can work on that together.

rafaelfcsouza commented 5 years ago

https://github.com/rafaelfcsouza/bounce