Я следую документации AWS. для «Выбор количества сегментов» для индекса Elasticsearch.
Мои показатели TPS при чтении для индекса ES будут очень высокими (около 1300 TPS и могут увеличиться до 6500 TPS), но объем данных, которые будут присутствовать, будет очень меньше (менее ГБ).
- Чтобы соответствовать высоким показателям чтения, я планирую реализовать горизонтальное масштабирование (увеличить количество узлов данных).
- Из-за очень меньшего количества данных, согласно приведенной выше документации, количество осколков должно быть 1 (оптимальный желаемый размер осколка ~ 10–50 ГБ, а мои данные - менее 1 ГБ)
Вопросы:
- Насколько я понимаю, один шард не распределяется по узлам данных. (Один осколок может находиться только на одном узле данных). Правильно ли это понимание?
- From here,
In Elasticsearch, each query is executed in a single thread per shard. Multiple shards can however be processed in parallel, as can multiple queries and aggregations against the same shard.
. If the above understanding is correct, all the requests will be single threaded on a single data node, if I only have one shard. The horizontal scaling thus cannot be implemented.
What should be the optimal number of primary shards/replicas for an index given the high TPS and low data?
Should I- still have a single shard, but multiple replicas (proportional to the number of hosts), or
- несколько первичных шардов (размер которых будет в МБ), и одна реплика (для экономии памяти). (Я не вижу, чтобы узлы в моем кластере так сильно выходили из строя, что мне НУЖНО больше одной реплики!)