Tempah Konsultasi Hantar Tiket

Memastikan Kebolehpercayaan Middleware: Redis, RabbitMQ, dan Kafka dalam Pengeluaran

Pelajari cara mendiagnosis dan menyelesaikan isu kebolehpercayaan biasa dengan Redis, RabbitMQ, dan Kafka. Panduan ini merangkumi senario sebenar, gejala, arahan diagnosis, kawalan risiko, prosedur rollback, langkah pengesahan, dan bila perlu menghantar tiket kepada OpsGlobal.

Memastikan Kebolehpercayaan Middleware: Redis, RabbitMQ, dan Kafka dalam Pengeluaran
NoSQL 6min 44 paparan 2026-07-25
RedisRabbitMQKafkaKebolehpercayaanSREGangguan Pengeluaran

Senario

Anda mengurus platform e-dagang yang bergantung pada Redis untuk caching, RabbitMQ untuk pesanan, dan Kafka untuk log tingkah laku pengguna. Suatu hari, pesanan tertangguh, halaman lambat dimuat, dan log bertimbun, menjejaskan pengalaman pengguna.

Gejala

  • Redis: Kadar hit cache menurun drastik, masa respons meningkat dari 1ms ke 100ms, INFO stats menunjukkan evicted_keys melonjak.
  • RabbitMQ: Kedalaman giliran melebihi ambang, rabbitmqctl list_queues menunjukkan ribuan messages_ready, sambungan pengguna menurun.
  • Kafka: Ketinggalan pengguna meningkat, kafka-consumer-groups --describe menunjukkan LAG bertambah, I/O cakera tinggi.

Diagnosis

Redis

  1. Periksa memori: redis-cli INFO memory untuk used_memory dan maxmemory.
  2. Lihat pertanyaan perlahan: SLOWLOG GET 100 untuk menganalisis perintah mahal.
  3. Sahkan sambungan: CLIENT LIST untuk melihat jika melebihi maxclients.

RabbitMQ

  1. Giliran dan sambungan: rabbitmqctl list_queues name messages_ready messages_unacknowledged.
  2. Kesihatan nod: rabbitmqctl status untuk running dan alarms.
  3. Tekanan memori: rabbitmqctl report untuk penggunaan memory.

Kafka

  1. Ketinggalan pengguna: kafka-consumer-groups --bootstrap-server localhost:9092 --group <group> --describe.
  2. Status replika partition: kafka-topics --describe --topic <topic> --bootstrap-server localhost:9092.
  3. Penggunaan cakera: df -h memantau partition log.dirs.

Arahan

Redis

# Tetapkan dasar maxmemory (cadangan allkeys-lru untuk pengeluaran)
redis-cli CONFIG SET maxmemory-policy allkeys-lru
# Hadkan sambungan
redis-cli CONFIG SET maxclients 5000
# Dayakan acara keyspace
redis-cli CONFIG SET notify-keyspace-events KEA

RabbitMQ

# Tingkatkan panjang maksimum giliran untuk elak limpahan memori
rabbitmqctl set_policy DLQ ".*" '{"max-length":1000000}' --apply-to queues
# Dayakan giliran malas untuk kurangkan memori
rabbitmqctl set_policy LazyQueue ".*" '{"queue-mode":"lazy"}' --apply-to queues
# Senarai pengguna
rabbitmqctl list_consumers

Kafka

# Laraskan masa pengekalan log untuk bebaskan cakera
kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name <topic> --alter --add-config retention.ms=604800000
# Tingkatkan partition untuk keselarian lebih tinggi
kafka-topics --alter --topic <topic> --partitions 12 --bootstrap-server localhost:9092

Kawalan Risiko

  • Sandarkan konfigurasi sebelum perubahan: cp /etc/redis/redis.conf /etc/redis/redis.conf.bak.
  • Perubahan dasar RabbitMQ mempengaruhi seluruh kluster; uji dahulu di bukan pengeluaran.
  • Partition Kafka tidak boleh dikurangkan; pastikan pengguna hiliran menyokong pengimbangan semula sebelum menambah.

Rollback

Redis

redis-cli CONFIG SET maxmemory-policy volatile-lru  # pulihkan ke lalai

RabbitMQ

rabbitmqctl clear_policy DLQ  # buang dasar

Kafka

kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name <topic> --alter --delete-config retention.ms

Pengesahan

  • Redis: Jalankan redis-benchmark -q -n 1000 untuk banding latensi; periksa INFO stats untuk evicted_keys berkurang.
  • RabbitMQ: Sahkan kedalaman giliran menurun dan pengguna bersambung semula: rabbitmqctl list_queues name messages_ready.
  • Kafka: Pantau LAG pengguna mencapai sifar; penggunaan cakera normal.

Bila Menghantar Tiket

  • Masih bermasalah selepas perubahan.
  • OOM atau cakera penuh menyebabkan perkhidmatan tidak tersedia.
  • Perlu migrasi data atau konfigurasi semula kluster (contoh: pemilihan semula pengawal Kafka).
  • Disyaki isu perkakasan atau rangkaian.

Pasukan OpsGlobal menyediakan sokongan pakar 24/7, mampu diagnosis jarak jauh dan operasi pemulihan kompleks.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu NoSQL dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Pelajari cara mendiagnosis dan menyelesaikan isu kebolehpercayaan biasa dengan Redis, RabbitMQ, dan Kafka. Panduan ini merangkumi senario sebenar, gejala, arahan diagnosis, kawalan risiko, prosedur rollback, langkah pengesahan, dan bila perlu menghantar tiket kepada OpsGlobal.

Langkah Penyelesaian

Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.

Contoh Arahan

Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.

Risiko

Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.

Pelan Rollback

Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.

Senarai Serahan

Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.

!

Perlu bantuan isu teknikal serupa?

Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.

Tiket Hubungi WhatsApp Konsultasi