-
Notifications
You must be signed in to change notification settings - Fork 81
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
EPIC: Evaluate Jetty as replacement for Netty #1270
Comments
This issue is to track the idea of running Deephaven Core and its associated browser-based UI without requiring docker or a local envoy install. As netty in grpc-netty is hard to extend (to offer a built-in grpc-web proxy, a ssl-less websocket proxy, or a server for static html/js content), we're exploring an old branch to the grpc-java project which added support for the jetty webserver. Whereas netty is being used an internal implementation to grpc-netty, the grpc-jetty project assumed that the grpc wiring could coexist in a standard jetty server, along-side other filters and servlets. This would allow us to
Each of these three removes the need for a single external process that we presently require - four distinct docker images are offered, along with a sample docker-compose.yml to show roughly how to wire them up, but they could as easily be run as local processes. Consolidating to a single process would still easily allow running from within docker, or behind an envoy proxy, but these would no longer be required, and setup/scaling could be simpler in some cases. Running natively on mac/windows or without the indirection of docker on linux would be possible too, making for easier debugging and integration with any other local resources. Risks involved include any work needed to update the grpc-jetty project to latest grpc, and losing our hermetically-created python environment (we might want to produce jpy-dh wheels for other platforms and python versions). Basic projected milestones of this epic:
|
This is a first step towards making the http server for grpc replacable with Jetty. Partial deephaven#1270
This is a first step towards making the http server for grpc replacable with Jetty. Partial deephaven#1270
This is a first step towards making the http server for grpc replacable with Jetty. Partial #1270
This class is specific to application mode, and is even already in the package for app mode, and seems to have been included in the grpc-api server for DI purposes only, but need not be there (and split packages, etc). Partial #1270
These classes are specific to uri but lived in grpc-api server packages. These could also end up in their own module just for reuse in other projects that want to register, expose their own set of resolvers, but the simplest refactor was to move to :java-client-uri. Partial #1270
The "new" dependencies introduced in this commit were ones that were transitive before with no need to be (i.e. not part of the actual API, but exposed anyway). Some of these are negotiable, like what should the grpc-api project actually expose to downstream projects - this is just a proposal that appears to build as-is, cherry-picked from the jetty work, to make that eventual merge smaller. Partial #1270
Dependencies are distributed to where they are used now, and now-unnecessary proto/build.gradle is removed entirely. Partial deephaven#1270
Dependencies are distributed to where they are used now, and now-unnecessary proto/build.gradle is removed entirely. Partial deephaven#1270
See readme in this commit for details Partial deephaven#1270
See readme in this commit for details Partial #1270
This patch introduces a new server implementation that uses Jetty as the http server rather than Netty, so is able to avoid using nginx, grpc-proxy, and envoy to let browsers connect. There are a few known bugs with this, and so for now this is not expected to replace the existing server which uses docker, until we've had more time to test and investigate. In order to use Jetty, slf4j is updated to an alpha release. Fixes #1270
No description provided.
The text was updated successfully, but these errors were encountered: