grpc-go/xds/internal/balancer
Menghan Li ff40ef4227
xds: refactor xds_client (#3477)
This PR refactors xds_client to support multiples watches. Those watches can be for the same type and same resource_name.

There's upper level `Client` and lower level `v2client`. Before this change, all logic was in `v2client`, and `Client` was a thin wrapper.

This PR moves some of the functionality from `v2client` to `Client`. New layers:

- Upper level `Client`
  - keeps a list of watchers
    - provides method `func WatchXXX() (cancel func())`
    - has `WatchService()` which involves `LDS` and `RDS`
  - handles resources from the xDS responses and dispatch to the watchers
    - including multiple watchers for the same resource_name
  - keeps cache
    - and checks cache for new watches

- Lower level `v2client`
  - is a dumb client that
    - manages ADS stream
    - sends a new xDS request when add/remove watch
    - parses xDS responses
      - It doesn't call watchers, but forwards all parsed results to upper Client
    - handles ACK/NACK
  - supports `addWatch(type, name)` and `removeWatch(type, name)`
    - instead of `func watchCDS() func()`, which is now moved up to upper `Client`

Also includes other changes:
 - Corresponding test changes (some tests for `v2client` were moved to `Client`)
 - Method and type renaming
   - CDS/EDS -> Cluster/Endpoints
 - callback functions all accept updates as non-pointers
2020-04-15 14:32:31 -07:00
..
balancergroup rename to LocalityID (#3522) 2020-04-14 09:04:53 -07:00
cdsbalancer xds: refactor xds_client (#3477) 2020-04-15 14:32:31 -07:00
edsbalancer xds: refactor xds_client (#3477) 2020-04-15 14:32:31 -07:00
lrs rename to LocalityID (#3522) 2020-04-14 09:04:53 -07:00
orca xds: use generated protos from github.com/cncf/udpa/go (#3449) 2020-03-19 13:15:44 -07:00
balancer.go lint: add missing package level comments (#3302) 2020-01-08 11:31:36 -08:00