常州网站建设招聘,全球搜钻是什么公司,建设网点查询,海外网站建设公司KRaft 模式是 Kafka 在 3.0 版本中引入的新模式。KRaft 模式使用了 Raft 共识算法来管理 Kafka 集群元数据。Raft 算法是一种分布式共识算法#xff0c;具有高可用性、可扩展性和安全性等优势。 在 KRaft 模式下#xff0c;Kafka 集群中的每个 Broker 都具有和 Zookeeper 类… KRaft 模式是 Kafka 在 3.0 版本中引入的新模式。KRaft 模式使用了 Raft 共识算法来管理 Kafka 集群元数据。Raft 算法是一种分布式共识算法具有高可用性、可扩展性和安全性等优势。 在 KRaft 模式下Kafka 集群中的每个 Broker 都具有和 Zookeeper 类似的角色。每个 Broker 都参与管理 Kafka 集群元数据包括分区分配、副本分配、元数据快照等。
Zookeeper 模式和KRaft 模式 对比
特性KRaft 模式Zookeeper 模式使用共识算法RaftZookeeper可用性高高扩展性高高安全性高高复杂度低高
KRaft 模式的优势
KRaft 模式具有以下优势
更简单KRaft 模式将 Kafka 集群元数据管理整合到了 Kafka 中因此不需要使用外部服务这使得 Kafka 集群的部署和管理更加简单。 更高效KRaft 模式使用了 Raft 算法来管理 Kafka 集群元数据Raft 算法具有更高的效率因此 Kafka 集群的性能可以得到提升。 更可靠KRaft 模式使用了 Raft 算法来管理 Kafka 集群元数据Raft 算法具有更高的可靠性因此 Kafka 集群的稳定性可以得到提升。
helm安装
helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kafka --untarhelm install kafka kafka --values ./kafka/values.yaml \--set replicaCount1 \--set kafka.kafkaConfigOverridestransaction.state.log.replication.factor1 \--set kafka.kafkaConfigOverridestransaction.state.log.min.isr1 \--set kafka.kafkaConfigOverridesdefault.replication.factor1 \--set kafka.kafkaConfigOverridesnum.io.threads2 \--set kafka.kafkaConfigOverridesnum.network.threads2 \--set kafka.kafkaConfigOverridesinter.broker.protocol.version3.5.1 \--set kafka.kafkaConfigOverridesoffsets.topic.replication.factor1 \--set kafka.kafkaConfigOverridestransaction.state.log.num.partitions50最后得到 kafka-controller-0.kafka-controller-headless.openim-dev.svc.cluster.local:9092kafka-controller-1.kafka-controller-headless.openim-dev.svc.cluster.local:9092kafka-controller-2.kafka-controller-headless.openim-dev.svc.cluster.local:9092The CLIENT listener for Kafka client connections from within your cluster have been configured with the following security settings:- SASL authenticationTo connect a client to your Kafka, you need to create the client.properties configuration files with the content below:security.protocolSASL_PLAINTEXT
sasl.mechanismSCRAM-SHA-256
sasl.jaas.configorg.apache.kafka.common.security.scram.ScramLoginModule required \usernameuser1 \password$(kubectl get secret kafka-user-passwords --namespace openim-dev -o jsonpath{.data.client-passwords} | base64 -d | cut -d , -f 1);在安装一个kafka-web
apiVersion: apps/v1
kind: Deployment
metadata:name: kafka-uilabels:app: kafka-ui
spec:replicas: 1selector:matchLabels:app: kafka-uitemplate:metadata:labels:app: kafka-uispec:containers:- name: kafka-uiimage: provectuslabs/kafka-ui:latestenv:- name: KAFKA_CLUSTERS_0_NAMEvalue: 可以自定义名字 Kafka Cluster- name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERSvalue: kafka-controller-0:9092,kafka-controller-1:9092,kafka-controller-2:9092- name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOLvalue: SASL_PLAINTEXT- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISMvalue: PLAIN- name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIGvalue: org.apache.kafka.common.security.plain.PlainLoginModule required usernameuser1 password19fJTxgwnD;resources:requests:memory: 256Micpu: 100mports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: kafka-ui
spec:selector:app: kafka-uitype: NodePortports:- protocol: TCPport: 8080targetPort: 8080