๐Ÿ“—
smiley book
  • Smiley Books
  • AI
    • Readme
    • openai-whisper
      • ์ƒ˜ํ”Œ ์‹คํ–‰ํ•ด๋ณด๊ธฐ
      • GPU ์„œ๋ฒ„ ์ค€๋น„ํ•˜๊ธฐ
      • API๋กœ whisper๋ฅผ ์™ธ๋ถ€์— ์˜คํ”ˆํ•˜๊ธฐ
      • ํ”„๋กฌํ”„ํŠธ ์ง€์›
      • ์‹ค์‹œ๊ฐ„ message chat
      • ํ™”๋ฉด ์ด์˜๊ฒŒ ๋งŒ๋“ค๊ธฐ์™€ ๋กœ๊ทธ์ธ
      • ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ
      • ์‹ค์‹œ๊ฐ„ voice chat
      • fine tunning(๋ฏธ์„ธ ์กฐ์ •) ์œผ๋กœ ์„ฑ๋Šฅ ์˜ฌ๋ฆฌ๊ธฐ
      • app์—์„œ api๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ…์ŠคํŠธ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ
    • ollama - llm์„ ์‰ฝ๊ฒŒ ๋‚ด์ปด์—์„œ ์‹คํ–‰
      • ollama webui
      • ollama docker
    • stable diffusion
      • SDXL - text to image
      • SD-webui
    • ChatGPT
      • ๋‹ต๋ณ€์ด ๋Š๊ธธ๋•Œ
      • ์—ญํ• ์„ ์ •ํ•˜์ž
      • ๊ตฌ์ฒด์ ์ธ ์งˆ๋ฌธ
      • ๊ฒฐ๊ณผํ˜•ํƒœ๋ฅผ ์ง€์ •
      • ํ”„๋กฌํ”„ํŠธ๋ฅผ ์—ฌ๋Ÿฌ์ค„๋กœ ์‚ฌ์šฉํ•˜์ž.
      • ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ ๊ธ€ ๋ฒˆ์—ญ๋ณธ
    • Prompt Engineering
    • Auto-GPT
    • Gemini
      • google ai studio
      • gemini-api
      • embedding guide
    • Huggingface
      • huggingface ์‚ฌ์šฉ๋ฒ•
      • huggingface nlp ๊ณต๋ถ€์ค‘
    • kaggle
      • download dataset
    • langchain
      • langchain์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌ
      • basic
      • slackbot
      • rag
      • document-loader
      • website-loader
      • confluence
      • memory
      • function-call
      • langsmith
      • agent-toolkit
  • Ansible
    • templates vs files and jinja2
    • dynamic inventory
    • limit ์˜ต์…˜ ๊ฐ•์ œํ•˜๊ธฐ
    • limit ์‚ฌ์šฉํ›„ gather_fact ๋ฌธ์ œ
  • AWS
    • AWS CLI
    • EKS
      • cluster manage
      • ALB Controller
      • external-dns
      • fargate
    • ECR
    • S3
    • Certificate Manager
  • Azure
    • Azure AD OAuth Client Flow
  • Container
    • Registry
    • ๋นŒ๋“œ์‹œ์— env๊ฐ’ ์„ค์ •ํ•˜๊ธฐ
  • DB
    • PXC
      • Operator
      • PMM
      • ์‚ญ์ œ
      • GTID
      • Cross Site Replication
    • Mssql
    • Mysql
  • dotnet
    • Thread Pool
    • Connection Pool
    • Thread Pool2
  • Devops
    • Recommendation
  • GIT
    • Basic
    • Submodule
  • GitHub
    • Repository
    • GitHub Action
    • GitHub PR
    • Self Hosted Runner
    • GitHub Webhook
  • GitLab
    • CI/CD
    • CI/CD Advance
    • Ssl renew
    • CI/CD Pass env to other job
  • Go Lang
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
    • multi os binary build
    • kubectl๊ฐ™์€ cli๋งŒ๋“ค๊ธฐ
    • azure ad cli
    • embed static file
    • go study
      • pointer
      • module and package
      • string
      • struct
      • goroutine
  • Kubernetes
    • Kubernetes๋Š” ๋ฌด์—‡์ธ๊ฐ€
    • Tools
    • Install with kubespray
    • Kubernetes hardening guidance
    • 11 ways not to get hacked
    • ArgoCD
      • Install
      • CLI
      • Repository
      • Apps
      • AWS ALB ์‚ฌ์šฉ
      • Notification slack
      • Backup / DR
      • Ingress
      • 2021-11-16 Github error
      • Server Config
      • auth0 ์ธ์ฆ ์ถ”๊ฐ€(oauth,OIDC)
    • Extension
      • Longhorn pvc
      • External dns
      • Ingress nginx
      • Cert Manager
      • Kube prometheus
    • Helm
      • Subchart
      • Tip
    • Loki
    • Persistent Volume
    • TIP
      • Job
      • Pod
      • Log
  • KAFKA
    • raft
  • KVM
    • kvm cpu model
  • Linux
    • DNS Bind9
      • Cert-Manager
      • Certbot
      • Dynamic Update
      • Log
    • Export and variable
    • Grep ์‚ฌ์šฉ๋ฒ•
  • Modeling
    • C4 model introduce
    • Mermaid
    • reference
  • Monitoring
    • Readme
    • 0. What is Monitoring
    • 1. install prometheus and grafana
    • 2. grafana provisioning
    • 3. grafana dashboard
    • 4. grafana portable dashboard
    • 5. prometheus ui
    • 6. prometheus oauth2
    • Prometheus
      • Metric type
      • basic
      • rate vs irate
      • k8s-prometheus
    • Grafana
      • Expolorer
    • Node Exporter
      • advance
      • textfile collector
  • Motivation
    • 3 Simple Rule
  • OPENNEBULA
    • Install(ansible)
    • Install
    • Tip
    • Windows vm
  • Reading
    • comfort zone
    • ๋ฐฐ๋ ค
    • elon musk 6 rule for insane productivity
    • Feynman Technique
    • how to interview - elon musk
    • ๊ฒฝ์ฒญ
    • Readme
  • Redis
    • Install
    • Master-slave Architecture
    • Sentinel
    • Redis Cluster
    • Client programming c#
  • SEO
    • Readme
  • Security
    • criminalip.io
      • criminalip.io
  • Stock
    • robinhood-python
  • Terraform
    • moved block
    • output
  • vault
    • Readme
  • VS Code
    • dev container
    • dev container on remote server
  • Old fashione trend
    • curity
    • MAAS
      • Install maas
      • Manage maas
      • Tip
Powered by GitBook
On this page
  • 1. Raft Consensus Algorithm
  • ์ด๋ก ๋นผ๊ณ  ์‹ค์ „
  • zookeeper
  • kraft
  • ๊ฒฐ๋ก 
  • ์ฐธ๊ณ 
  • ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ„ํ•œ ์ตœ์ ์˜ ๋…ธ๋“œ ์ˆ˜

Was this helpful?

  1. KAFKA

raft

1. Raft Consensus Algorithm

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„๋•Œ, ๋…ธ๋“œ๋“ค์ด ์„œ๋กœ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ด๋ก ๋นผ๊ณ  ์‹ค์ „

zookeeper

vi docker-compose.yml

version: '3.8'
services:
  zk1:
    image: confluentinc/cp-zookeeper:7.4.1
    hostname: zk1
    container_name: zk1
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888
  zk2:
    image: confluentinc/cp-zookeeper:7.4.1
    hostname: zk2
    container_name: zk2
    environment:
      ZOOKEEPER_SERVER_ID: 2
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888
  zk3:
    image: confluentinc/cp-zookeeper:7.4.1
    hostname: zk3
    container_name: zk3
    environment:
      ZOOKEEPER_SERVER_ID: 3
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: zk1:2888:3888;zk2:2888:3888;zk3:2888:3888

  kafka1:
    image: confluentinc/cp-kafka:7.4.1
    hostname: kafka1
    container_name: kafka1
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2182,zk3:2183
      KAFKA_LISTENERS: INTERNAL://kafka1:9092
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
  kafka2:
    image: confluentinc/cp-kafka:7.4.1
    hostname: kafka2
    container_name: kafka2
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2182,zk3:2183
      KAFKA_LISTENERS: INTERNAL://kafka2:9092
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka2:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
  kafka3:
    image: confluentinc/cp-kafka:7.4.1
    hostname: kafka3
    container_name: kafka3
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2182,zk3:2183
      KAFKA_LISTENERS: INTERNAL://kafka3:9092
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka3:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3

  kafka-ui:
    image: provectuslabs/kafka-ui:latest
    hostname: kafka-ui
    container_name: kafka-ui
    ports:
      - 8080:8080
    environment:
      KAFKA_CLUSTERS_0_NAME: kafka
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka1:9092,kafka2:9092,kafka3:9092
    depends_on:
      - kafka1
      - kafka2
      - kafka3
cd 'sample/raft/zookeeper-3-node'
docker-compose up -d

์ด์ œ zookeeper๋ฅผ ํ•˜๋‚˜ ์ฃฝ์—ฌ๋ด…๋‹ˆ๋‹ค.

docker stop zk3

kafka-topics --bootstrap-server kafka1:9092 --create --topic test2

๋™์ž‘

ํ•˜๋‚˜ ๋” ์ฃฝ์—ฌ๋ด…๋‹ˆ๋‹ค.

docker stop zk2

kafka-topics --bootstrap-server kafka1:9092 --create --topic test3

์—๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3๊ฐœ์—์„œ๋Š” 2๊ฐœ ์ฃฝ์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ํญ๋ฐœ..

kraft

3๊ฐœ node kraft kafka cluster๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

vi docker-compose.yml

version: '3'
services:
  controller1:
    image: confluentinc/cp-kafka:7.4.0
    hostname: controller
    container_name: controller
    # ports:
    #   - '9093:9093'
    environment:
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LISTENERS: 'CONTROLLER://controller1:9093'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_PROCESS_ROLES: 'controller'
      KAFKA_NODE_ID: 11
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='
  controller2:
    image: confluentinc/cp-kafka:7.4.0
    hostname: controller2
    container_name: controller2
    environment:
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LISTENERS: 'CONTROLLER://controller2:9093'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_PROCESS_ROLES: 'controller'
      KAFKA_NODE_ID: 12
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='
  controller3:
    image: confluentinc/cp-kafka:7.4.0
    hostname: controller3
    container_name: controller3
    environment:
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LISTENERS: 'CONTROLLER://controller3:9093'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_PROCESS_ROLES: 'controller'
      KAFKA_NODE_ID: 13
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='

  kafka1:
    image: confluentinc/cp-kafka:7.4.0
    container_name: kafka1
    hostname: kafka1
    ports:
      - '9092:9092'
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      KAFKA_LISTENERS: 'INTERNAL://kafka1:9092'
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT'
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_PROCESS_ROLES: 'broker'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_JMX_PORT: 9999
      KAFKA_JMX_HOSTNAME: kafka1
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='
    depends_on:
      - controller1
      - controller2
      - controller3

  kafka2:
    image: confluentinc/cp-kafka:7.4.0
    container_name: kafka2
    hostname: kafka2
    environment:
      KAFKA_NODE_ID: 2
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      KAFKA_LISTENERS: 'INTERNAL://kafka2:9092'
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka2:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT'
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_PROCESS_ROLES: 'broker'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_JMX_PORT: 9999
      KAFKA_JMX_HOSTNAME: kafka2
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='
    depends_on:
      - controller1
      - controller2
      - controller3

  kafka3:
    image: confluentinc/cp-kafka:7.4.0
    container_name: kafka3
    hostname: kafka3
    environment:
      KAFKA_NODE_ID: 3
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CONTROLLER_QUORUM_VOTERS: '11@controller1:9093,12@controller2:9093,13@controller3:9093'
      KAFKA_LISTENERS: 'INTERNAL://kafka3:9092'
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka3:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT'
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_PROCESS_ROLES: 'broker'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_JMX_PORT: 9999
      KAFKA_JMX_HOSTNAME: kafka3
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      # Replace CLUSTER_ID with a unique base64 UUID using "bin/kafka-storage.sh random-uuid"
      # See https://docs.confluent.io/kafka/operations-tools/kafka-tools.html#kafka-storage-sh
      CLUSTER_ID: 'ciWo7IWazngRchmPES6q5A=='
    depends_on:
      - controller1
      - controller2
      - controller3

  kafka-ui:
    image: provectuslabs/kafka-ui:latest
    restart: always
    hostname: kafka-ui
    container_name: kafka-ui
    ports:
      - 8080:8080
    environment:
      KAFKA_CLUSTERS_0_NAME: kafka
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka1:9092,kafka2:9092,kafka3:9092
      # KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka1:8083
      # KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: kafka1-connect
    depends_on:
      - kafka1
      - kafka2
      - kafka3
      - controller1
      - controller2
      - controller3
cd kafka/sample/raft/3-node
docker-compose up -d
docker exec -it kafka1 bash

# create topic
kafka-topics --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --create --topic test

๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ controler๋ฅผ ํ•˜๋‚˜ ์ฃฝ์—ฌ๋ด…๋‹ˆ๋‹ค.

docker stop controller3

kafka-topics --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --create --topic test2

์—ฌ์ „ํžˆ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜ ๋” ์ฃฝ์—ฌ๋ด…๋‹ˆ๋‹ค.

docker stop controller2
kafka-topics --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --create --topic test2
Error while executing topic command : Call(callName=createTopics, deadlineMs=1705497739741, tries=1, nextAllowedTryMs=1705497739889) timed out at 1705497739789 after 1 attempt(s)
[2024-01-17 13:22:19,792] ERROR org.apache.kafka.common.errors.TimeoutException: Call(callName=createTopics, deadlineMs=1705497739741, tries=1, nextAllowedTryMs=1705497739889) timed out at 1705497739789 after 1 attempt(s)
Caused by: org.apache.kafka.common.errors.DisconnectException: Cancelled createTopics request with correlation id 3 due to node 2 being disconnected
 (kafka.admin.TopicCommand$)

์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” controller๊ฐ€ ์ •์กฑ์ˆ˜(2๊ฐœ)๋ฅผ ๋„˜์ง€ ๋ชปํ•ด์„œ ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

kraft๋„ ์—ฌ์ „ํžˆ Raft Consensus Algorithm ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ •์กฑ์ˆ˜๋ฅผ ๋„˜์ง€ ๋ชปํ•˜๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ„ํ•œ ์ตœ์ ์˜ ๋…ธ๋“œ ์ˆ˜

ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Consensus Algorithm)์„ ์ฑ„ํƒํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ „์ฒด ๋…ธ๋“œ ์ˆ˜๋ฅผ ๊ฐ€๊ธ‰์  3๊ฐœ ์ด์ƒ์˜ ํ™€์ˆ˜๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค. ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์ „์ฒด ๋…ธ๋“œ ์ˆ˜
ํ•„์š” ์ •์กฑ์ˆ˜ ํ—ˆ์šฉ
๊ฐ€๋Šฅ ์žฅ์•  ๋…ธ๋“œ ์ˆ˜

1

1

0

2

2

0

3

2

1

4

3

1

5

3

2

6

4

2

7

4

3

8

5

3

... ... ... 2k (์ง์ˆ˜) k+1 k-1 2k+1 (ํ™€์ˆ˜) k+1 k

์ „์ฒด ๋…ธ๋“œ ์ˆ˜๊ฐ€ 3๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์žฅ์•  ๋…ธ๋“œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๊ทธ ๋ฏธ๋งŒ์œผ๋กœ๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๊ฐ–์ถœ ์ˆ˜ ์—†๋‹ค.

2๊ฐœ์˜ ๋…ธ๋“œ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ž์› ๊ด€๋ฆฌ์˜ ์ธก๋ฉด์—์„œ๋‚˜ ๋‚ด๊ฒฐํ•จ์„ฑ์˜ ์ธก๋ฉด์—์„œ๋‚˜ ๋ชจ๋‘ ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

zookeeper๋‚˜ controller ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š”๊ฒƒ์ž…๋‹ˆ๋‹ค. kafka ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

PreviousLogNextkvm cpu model

Last updated 1 year ago

Was this helpful?

์ด ์‚ฌ์ดํŠธ ์‹ ๊ธฐํ•˜๋„ค์š”

https://thesecretlivesofdata.com/raft/