-
Notifications
You must be signed in to change notification settings - Fork 584
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
Proposal: remove broker ingress channel #2254
Comments
/area performance |
/assign @grantr |
related #1555 |
/assign @yolocs |
/unassign |
@yolocs could you show what is current architecture - ingress channel how it is used in particualr?
|
We could discuss it in more detail Channels WG? Add to agenda https://docs.google.com/document/d/1uxlulaAf2m_yZUqCIeI-inul2gsqP69PElnZdO0FHUo/edit#heading=h.pd8ef9j5o38k |
"Channel outbound" is the channel component which pushes events to subscribers. For IMC, it's the imc-dispatcher. The flow above has I'll try to create a nicer flow chart to explain the broker internals. |
Thanks, @lionelvillard! Nice chart and I think it's still accurate. What I'm proposing is to have (5) directly link back to the "broker ingress" rather than going through the "broker ingress channel" (called topic in this chart). |
Found in the comment: eventing/pkg/reconciler/broker/broker.go Lines 145 to 149 in ec187bd
Since we now have |
Problem
Broker currently creates two channels: trigger and ingress. The ingress channel is used to stage events replied by triggers. However, it seems like it's a meaningless additional hop that introduced latency and reliability issue. I think a better approach is to directly send replies to the ingress service.
One might argument the ingress channel can help with reliability. Since a reply is a http response, there is no indicator of whether the response is successful or not. A lost reply means a lost event that cannot be recovered. And because (in most cases) the ingress channel provides durability, it can help preventing losing replied events.
This is not true because if the ingress channel is down, we will anyway lose replied events. This is essentially the same as directly replying to the ingress service except that the ingress channel itself is yet another potential point of failure.
How should we do if the ingress service is down? It probably worths its own issue but here is my rough idea.
The current flow is:
The channel outbound can first try send the replied event to the
replyURL
, then decide whether to ack or unack the message. In this way, if it fails to deliver the replied event, the flow will be retried again.Persona:
Dev
Exit Criteria
replyURL
is replaced with the ingress service endpoint.Time Estimate (optional):
1 week.
The text was updated successfully, but these errors were encountered: