Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ DAX Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° ΡΡΠ΅Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·Π»Π°Ρ (Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅), ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΊΠΎΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
1. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² Docker Swarm Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ·Π»ΠΎΠ²:
docker swarm join-token worker
Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½ΠΎΠ΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377
ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² Swarm ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΠΈΠ½:
docker node ls
2.Β Β ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π»Π΅ΠΉΠ±Π»Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π½ΠΎΠ΄. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΈΡΡΠ° ΠΏΠΎΡΠ»Π΅ v3-clickhouse
ΠΌΠ΅Π½ΡΠ΅ΡΡΡ:
docker node update --label-add=v3-clickhouse-1=true WORKER_NODE_ID_1
docker node update --label-add=v3-clickhouse-2=true WORKER_NODE_ID_2
docker node update --label-add=v3-clickhouse-3=true WORKER_NODE_ID_3
β¦
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_2
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_3
β¦
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎ "Π²ΠΎΡΠΊΠ΅Ρ" Π½ΠΎΠ΄Π°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ:docker inspect -f "{{.ID}} {{.Status.Addr}} {{.Spec.Labels}}" $(docker node ls -q)
3.Β ΠΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» /var/lib/visiology/scripts/v3/visiology3.yml
:
ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ
clickhouse-1
ΠΈjdbc-bridge-1
Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅, ΡΠ°Π²Π½ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π²Π°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². Π ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΠΊΡΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ (1
) Π½Π°2
,3
,4
ΠΈ Ρ.Π΄.
ΠΡΠΈΠΌΠ΅Ρ (Π½Π°Π΄ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΡΡΡ Π² ΡΡΡΠΎΠΊΠ°Ρ 1, 29, 39, 49, 51, 61, 71):
clickhouse-2:
# Use clickhouse/clickhouse-server:23.3.4.17-alpine
image: ${CLICKHOUSE_TAG}
ulimits:
nofile:
soft: 262144
hard: 262144
configs:
- source: clickhousejdbcbridge
target: /etc/clickhouse-server/config.d/clickhouse-jdbc-bridge.xml
- source: clickhousedisabledroplimits
target: /etc/clickhouse-server/config.d/clickhouse-disable-drop-limits.xml
- source: clickhousetimezone
target: /etc/clickhouse-server/config.d/clickhouse-timezone.xml
- source: clickhousequerymaskingrulesforjdbc
target: /etc/clickhouse-server/config.d/clickhouse-query-masking-rules-for-jdbc.xml
- source: clickhouselogging
target: /etc/clickhouse-server/config.d/clickhouse-logging.xml
- source: clickhouseentrypoint
target: /entrypoint.sh
mode: 0555
- source: clickhousecreatedmstemp
target: /docker-entrypoint-initdb.d/clickhouse-create-dmstemp.sql
environment:
CLICKHOUSE_DB: ${CLICKHOUSE_DB}
DM_CLICKHOUSE_DB: ${DM_CLICKHOUSE_DB}
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
CLICKHOUSE_INIT_TIMEOUT: 600
JDBC_BRIDGE_HOST: ${JDBC_BRIDGE_HOST_2}
secrets:
- source: CLICKHOUSE_FE_USER
target: CLICKHOUSE_USER
- source: CLICKHOUSE_FE_PASSWORD
target: CLICKHOUSE_PASSWORD
volumes:
- clickhouse_data:/var/lib/clickhouse
<< : [*logging-options]
labels:
component: "v3-clickhouse-2"
networks:
visiology-3:
smart-forms-share:
deploy:
endpoint_mode: dnsrr
replicas: 1
placement:
max_replicas_per_node: 1
constraints:
- "node.labels.v3-clickhouse-2==true"
jdbc-bridge-2:
# Use cr.yandex/crpe1mi33uplrq7coc9d/visiology/release/original/jdbc-bridge:2.1.0-v3.10
image: ${JDBC_BRIDGE_TAG}
environment:
JDBC_BRIDGE_JVM_OPTS: ${JDBC_BRIDGE_MEM_OPTIONS}
configs:
- source: jdbcbridge
target: /app/config/server.json
<< : [*logging-options]
labels:
component: "v3-jdbc-bridge-2"
networks:
visiology-3:
smart-forms-share:
deploy:
endpoint_mode: dnsrr
replicas: 1
placement:
max_replicas_per_node: 1
constraints:
- "node.labels.v3-clickhouse-2==true"
Π² ΡΠ΅ΠΊΡΠΈΡ
environment
ΡΠ°Π·Π΄Π΅Π»Π°formula-engine
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
Β CLICKHOUSE_HOST_2: ${CLICKHOUSE_HOST_2}
Β CLICKHOUSE_HOST_3: ${CLICKHOUSE_HOST_3}
Β Β ΠΈ Ρ.Π΄.
4.Β Β ΠΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» /var/lib/visiology/scripts/v3/configs/viqube2.json
:
Π² ΡΠ΅ΠΊΡΠΈΡ
ClickHouseSettings.Nodes
Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ:
"clickhouse2": {
"ConnectionString": "Compression=True;CheckCompressedHash=False;Compressor=lz4;Host={{ env "CLICKHOUSE_HOST_2" }};Port={{ env "CLICKHOUSE_PORT" }};Username={{ secret "CLICKHOUSE_FE_USER" }};Password={{ secret "CLICKHOUSE_FE_PASSWORD" }};Database={{ env "CLICKHOUSE_DB" }};UseSession=true;Timeout=120;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;set_timeout_before_checking_execution_speed=30;",
"TcpPort": "9000"
},
"clickhouse3": {
"ConnectionString": "Compression=True;CheckCompressedHash=False;Compressor=lz4;Host={{ env "CLICKHOUSE_HOST_3" }};Port={{ env "CLICKHOUSE_PORT" }};Username={{ secret "CLICKHOUSE_FE_USER" }};Password={{ secret "CLICKHOUSE_FE_PASSWORD" }};Database={{ env "CLICKHOUSE_DB" }};UseSession=true;Timeout=120;set_max_execution_time=120;set_cancel_http_readonly_queries_on_client_close=1;set_timeout_before_checking_execution_speed=30;",
"TcpPort": "9000"
},
...
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 3.8.
ΠΠ°ΠΏΡΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊΠ°Ρ , ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΠΏΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
"clickhouse1"
.
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΠΈΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π² ΡΠ°ΡΡΠΈ Host={{ env "CLICKHOUSE_HOST_1" }}
.
5.Β ΠΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» /var/lib/visiology/scripts/v3/defaults.env
:
Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
CLICKHOUSE_HOST_2=clickhouse-2
CLICKHOUSE_HOST_3=clickhouse-3
ΠΈ Ρ.Π΄.Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
JDBC_BRIDGE_HOST_2=jdbc-bridge-2
JDBC_BRIDGE_HOST_3=jdbc-bridge-3
ΠΈ Ρ.Π΄.ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
RefreshDataJob__ParallelWorkers
ΠΈHangfire__WorkerCount
Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Clickhouse, ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 2, Ρ.Π΅. Π΄Π»Ρ ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°Π· Clickhouse ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 8.Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π΅ΡΡΡ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π°.
6.Β ΠΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» /var/lib/visiology/scripts/v3/backup-service.yml
:
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅
CLICKHOUSE_HOSTS
Π½Π°CLICKHOUSE_HOSTS: ${CLICKHOUSE_HOST_1} ${CLICKHOUSE_HOST_2}
ΠΈ Ρ.Π΄.
7.Β Β ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ clickhouse, jdbc-bridge, cadvisor, node-exporter, promtail
Π² ΠΏΠ°ΠΌΡΡΡ Π΄ΠΎΠΊΠ΅ΡΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅.
8.Β Β ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅:
/var/lib/visiology/scripts/v3/prepare-config.sh --force-regenerate-configs
9.Β Β ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ClickHouse Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
Π Π°Π½Π΅Π΅ Π² Visiology 3 (Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 3.9) ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ API Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ βΠ½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ βοΈ ClickHouse-ΡΠ΅ΡΠ²Π΅Ρβ. Π’.Π΅. ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ClickHouse-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ .
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.9 ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² API ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ .
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² API
ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ serverKey ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Π° Π½Π΅ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠΎΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ serverKey ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Π° Π½Π΅ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠΎΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ServerKey, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ²Π΅ΡΠ°Π»ΠΎ Π·Π° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ βΠ½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ βοΈ ClickHouse-ΡΠ΅ΡΠ²Π΅Ρβ Π±ΡΠ»ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΎ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΊ ClickHouse-ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΡΠΌ. Π½ΠΈΠΆΠ΅). ΠΠ»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ.
ΠΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ServerSelectionType (ΡΠΈΡΠ»ΠΎ), Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
Static (1)
Dynamic (2) - ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ .
ΠΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ActiveServerKeys (ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ).
ΠΡΠ»ΠΈ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ServerSelectionType = Dynamic, ΡΠΎ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ClickHouse-ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ ActiveServerKeys, Ρ.ΠΊ. ΠΎΠ½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ DAX-Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ TargetServerKeys (ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ).
ΠΡΠ»ΠΈ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ServerSelectionType = Static, ΡΠΎ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ClickHouse ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ· ΠΏΠΎΠ»Ρ TargetServerKeys.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ClickHouse-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΠ»Ρ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· UI ΠΏΠΎΠ»Ρ ServerSelectionType Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Dynamic, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ClickHouse ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ClickHouse-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΊ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ , ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ServerSelectionType Π½Π° Static ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ API ΠΏΠΎ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ServerSelectionType Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ :
ΠΠ»Ρ ΡΡΠ°ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° 3.9 Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ΅Π½ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠ°Π½Π΅Π΅ Π·Π° ΡΡΠ΅Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ.
Β
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JDBC
Β