0Pricing
Apache Kafka & Stream Processing Fundamentals · บทเรียน

การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ

เรียนรู้ว่าการตระหนักรู้แร็กของ Kafka กระจายแบบจำลองข้อมูลข้ามแร็กและโซนความพร้อมใช้งานอย่างไร เพื่อให้ทนต่อความล้มเหลวระดับศูนย์ข้อมูล

การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ เป็นบทเรียน Apache Kafka & Stream Processing Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Apache Kafka & Stream Processing Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Apache Kafka & Stream Processing Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

What Is Rack Awareness?

Rack awareness tells Kafka about the physical (or cloud) topology of your brokers.

Without it, all replicas of a partition could land on brokers sharing the same rack or availability zone. If that zone fails, the partition becomes unavailable.

  • Each broker advertises a broker.rack value.
  • Kafka then places replicas on different racks when possible.

Configuring broker.rack

Set broker.rack in each broker's server.properties to identify its rack or zone.

# server.properties on a broker in us-east-1a
broker.id=1
broker.rack=us-east-1a

# Another broker in a different zone
broker.id=2
broker.rack=us-east-1b

How Replicas Get Spread

When a topic is created, Kafka's replica assignment algorithm alternates across racks.

For a partition with replication factor 3 and 3 racks, each replica lands on a distinct rack — guaranteeing the partition survives the loss of any single rack.

Cloud Availability Zones

In AWS, GCP, or Azure, map broker.rack to the availability zone (AZ).

  • AZs are physically isolated within a region.
  • Spreading replicas across AZs protects against a full AZ outage.
  • Beware cross-AZ network costs for replication traffic.

Creating a Rack-Aware Topic

No special flag is needed — if brokers have broker.rack set, topic creation is automatically rack-aware.

kafka-topics.sh --create \
  --bootstrap-server localhost:9092 \
  --topic orders \
  --partitions 6 \
  --replication-factor 3

Verifying Replica Placement

Use --describe to inspect which brokers hold each replica, then cross-check against broker racks.

kafka-topics.sh --describe \
  --bootstrap-server localhost:9092 \
  --topic orders

The min.insync.replicas Tie-In

Rack awareness protects placement, but durability also depends on min.insync.replicas.

With replicas spread across 3 AZs and min.insync.replicas=2, a producer using acks=all can still write even if one entire AZ is down.

Follower Fetching from Closest Replica

Kafka 2.4+ supports fetch from follower. Consumers can read from a replica in their own rack, cutting cross-AZ traffic and latency.

# broker config
replica.selector.class=org.apache.kafka.common.replica.RackAwareReplicaSelector

# consumer config
client.rack=us-east-1a

Limitations to Know

Rack awareness is best-effort:

  • If racks < replication factor, some replicas share a rack.
  • Reassignments triggered manually do not always respect racks unless you generate a rack-aware plan.
  • It does not rebalance existing topics when you add broker.rack later.

Generating a Rack-Aware Reassignment

To fix existing topics after enabling rack awareness, generate a reassignment plan with the reassign-partitions tool.

kafka-reassign-partitions.sh \
  --bootstrap-server localhost:9092 \
  --topics-to-move-json-file topics.json \
  --broker-list 1,2,3 \
  --generate

Design Checklist

Before going to production:

  • Replication factor >= number of racks you want to tolerate losing + 1.
  • Set min.insync.replicas to at least 2.
  • Use acks=all on critical producers.
  • Enable follower fetching to control cross-AZ costs.

Quick Check

Test your understanding of rack awareness.

Recap

You learned how rack awareness spreads replicas across racks and availability zones.

  • Set broker.rack per broker.
  • Topic creation becomes automatically rack-aware.
  • Combine with min.insync.replicas and acks=all for AZ-failure resilience.
  • Use follower fetching to reduce cross-AZ cost.

คำถามที่พบบ่อย

บทเรียน “การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Apache Kafka & Stream Processing Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Apache Kafka & Stream Processing Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ”

เรียนรู้ว่าการตระหนักรู้แร็กของ Kafka กระจายแบบจำลองข้อมูลข้ามแร็กและโซนความพร้อมใช้งานอย่างไร เพื่อให้ทนต่อความล้มเหลวระดับศูนย์ข้อมูล คุณปฏิบัติ Apache Kafka & Stream Processing Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Apache Kafka & Stream Processing Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Apache Kafka & Stream Processing Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Apache Kafka & Stream Processing Fundamentals นี้ได้ไหม

ได้ บทเรียน Apache Kafka & Stream Processing Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจำลองข้อมูลและความทนทานต่อข้อผิดพลาด
  2. บทบาทของตัวควบคุมและ ZooKeeper/Kraft
  3. การออกแบบคลัสเตอร์ Kafka
  4. การตระหนักรู้แร็กและการจัดวางแบบหลาย AZ
← กลับไปที่ Apache Kafka & Stream Processing Fundamentals