external request = request with no upstream described for host
served with default configuration
//TODO
Upstream - configuration(retries amount and policy, timeout etc) + ip and its weight list to balance request with If our default Consul-based implementation described below is not applicable for you - there are 2 extension points:
- Implement custom UpstreamService and UpstreamConfigService to use it with our BalancingUpstreamManager - it requires to implement pub-sub pattern with your storage
- If BalancingUpstreamManager looks too constrained - feel free to implement UpstreamManager - this abstraction is very high)
Important. Service name for configuration in consul KV must be equal to service name in consul registration of the service
- Configuration format: ApplicationConfig must be set in Consul KV
- Client subscribes for Consul KV entries for requried services
- Client subsribes on Consul service health to get IP and weight list for required services
- We register instances in consul with related weight in any way Consul supports. We recommend do it with nuts-and-bolts - the frameworks will register instance on startup
- profit
- Раскатка конфигов в Consul: из cassandra_settings/balancer.yml. См. EXP-41677
- Задача на приведение имени сервиса и апстрима к одному значению: EXP-44785
- Сервисы, которые сами не умеют регистрироваться регаются скриптом: EXP-37504
- Configuration must be provided in any way you want but in specific format. See 2.x.x sources to get right structure of the config
- Configuration update is also up to you) You just call updateUpstreams when it's required
- profit
- Для доставки апстримов мы используем динамические настройки: settings-client
- Раскатка конфигов в cassandra: из cassandra_settings/balancer.yml через cassandra_settings.yml конфиги И список ip И их весов для апстримов
- Посмотреть апстримы
select * from settings.setting where service='system'