nic-chen commented on issue #2170:
URL: 
https://github.com/apache/apisix-dashboard/issues/2170#issuecomment-946463771


   > Hi @RedemptionC, to be honest, it's a great question. I also had this one 
a few whiles back.
   > 
   > Now coming to the explanation, etcd v3 `watch` API is event-driven, i.e. 
whenever a PUT or DELETE events occurs it generates an event of type
   > 
   > ```go
   > message Event {
   >   enum EventType {
   >     PUT = 0;
   >     DELETE = 1;
   >   }
   >   EventType type = 1;
   >   KeyValue kv = 2;
   >   KeyValue prev_kv = 3;
   > }
   > ```
   > 
   > and this watch call on a key is a long-running request. So, for high 
performance, the watch API implementation uses gRPC bidirectional streaming to 
squeeze the best out of HTTP2.0. 
([ref](https://etcd.io/docs/v3.2/learning/api/#watch-streams)) But in BIDI 
streaming, you lose the topmost reliability of the request-response 
acknowledgement cycle. gRPC internally caches them most of the time if there 
are a large number of stream requests coming from the server. And that's where 
the problem is. It might lead to several problems in non-ideal scenarios (from 
delayed delivery to buffer overflow etc.)
   > 
   > That's why I guess, I saw the project coming from @nic-chen. I never asked 
him though. Hi Nic, is this the particular cause behind this sync or there is 
something more?
   > 
   > Thank you!
   
   Definitely! 
   
   There is no other special reason. Compared to the dashboard, that tool is 
more useful for APISIX.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to