-
Notifications
You must be signed in to change notification settings - Fork 712
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
Send incremental reports probe->app #985
Comments
To send an incremental report, the probe must know what the app "already knows" in order to calculate a diff. That means the current (stateless) POST method of getting reports to apps is insufficient, and we'll need to maintain a persistent connection. Given the Go HTTP server keeps the connection around between POSTs currently, this is probably fine from an ops POV. But for the cloud offering, for example, we will end up creating a persistent connection from every node in the customer infrastructure to whatever.weave.works. Do we think that's acceptable? I suggest WebSockets, since we're already doing something exactly like this between the app and the web UI. Upon connection, send the complete report. Thereafter, send deltas. (Maybe every ~minute, dump the complete report again, as a sync.) If the connection ever dies, throw away your state and start again. Maybe can even reuse some code. If you do this, don't remove the existing POST functionality. It's still very useful for debugging, and the various test and fix probes. |
This will also need some thought wrt multi tenancy. Some sort of On Thursday, 18 February 2016, Peter Bourgon notifications@github.com
|
Not in general due to the CRDT semantics of reports (there are some exceptions to this like metrics we need to figure out, but we can decide not to send those incrementally for now). We would though need to have strict guarantees on full reports being received periodically which is much easier to obtain than keeping state about what the app knows.
As per the comment above I don't think that's true. |
Done in #3677
As described in the PR, this turned out to be unnecessary. |
The uncompressed report sizes are very large, ~1MB each. This puts a lot of pressure on the codecs and causes a lot of traffic.
See #854 (comment)
We could send reports incrementally (i.e. full report + diffs) to improve this.
The text was updated successfully, but these errors were encountered: