Simple Sistem Logging Terdistribusi Mengunakan Go dan Kafka

Subscribe dengan Account Google untuk mendapatkan News Letter terbaru dari Halovina !
Simple Sistem Logging Terdistribusi Mengunakan Go dan Kafka
Informa Topaz Meja Tamu Dengan Penyimpanan - Hitam

Informa Topaz Meja Tamu Dengan Penyimpanan - Hitam

Topaz Meja dengan penyimpanan merupakan jawaban atas kebutuhan ruangan yang tidak terlalu luas. Meja ini memiliki desain fungsional yaitu sebagai meja dan tempat penyimpanan serbaguna pada bagian bawahnya. Desainnya minimalis dan unik untuk digunakan di rumah ataupun area komersil seperti kafe dan butik.

Free Klik Disini !

Ide Aplikasi System Loging Terdistribusi


 

  • Setiap layanan dalam sistem kita akan mengirimkan log ke topik Kafka yang sama.

  • Kita bisa memiliki consumer yang berbeda untuk:

    • Menampilkan log secara real-time di dashboard.

    • Mengumpulkan log untuk analisis lebih lanjut (misalnya, menggunakan Elasticsearch).

    • Mengirimkan notifikasi jika terjadi error tertentu.




Contoh Implementasi Golang


1) Producer, untuk mempublish data ke kafka topic.

package main

import (
"fmt"
"log"

"github.com/confluentinc/confluent-kafka-go/kafka"
)

func main() {
// Konfigurasi producer
config := &kafka.ConfigMap{
"bootstrap.servers": "localhost:9092",
}

// Buat producer
producer, err := kafka.NewProducer(config)
if err != nil {
log.Fatalf("Failed to create producer: %s", err)
}
defer producer.Close()

// Topic yang akan digunakan
topic := "my-logs"

// Pesan yang akan dikirim
message := &kafka.Message{
Value: []byte("Hello from Golang!"),
}

// Kirim pesan
err = producer.Produce(message, nil)
if err != nil {
log.Printf("Failed to produce message: %v", err)
} else {
fmt.Printf("Produced message to topic %s\n", topic)
}
}

2) Consumer, untuk meng-konsumsi pesan dari topic kafka.

package main

import (
"fmt"
"log"

"github.com/confluentinc/confluent-kafka-go/kafka"
)

func main() {
// Konfigurasi consumer
config := &kafka.ConfigMap{
"bootstrap.servers": "localhost:9092",
"group.id": "my-group",
"auto.offset.reset": "earliest",
}

// Buat consumer
c, err := kafka.NewConsumer(config)
if err != nil {
log.Fatalf("Failed to create consumer: %s", err)
}
defer c.Close()

// Subscrib ke topic
err = c.Subscribe([]string{"my-logs"}, nil)
if err != nil {
log.Fatalf("Failed to subscribe: %s", err)
}

for {
msg, err := c.ReadMessage(100)
if err == nil {
fmt.Printf("Message on %s: %s\n", msg.TopicPartition, string(msg.Value))
} else {
// Handle errors
}
}
}

Penjelasan Singkat



  • Producer: Membuat pesan dan mengirimkannya ke topik yang ditentukan.

  • Consumer: Membaca pesan dari topik yang telah disubscribe.

  • Konfigurasi: Mengatur parameter seperti alamat broker, group ID, dan offset.

  • Topic: Saluran untuk mengirim dan menerima pesan.


Ide Pengembangan Lebih Lanjut



  • Schema Registry: Menggunakan schema registry untuk mendefinisikan struktur data pesan.

  • KStream: Menggunakan KStream untuk melakukan pemrosesan data secara streaming.

  • KTable: Menggunakan KTable untuk menyimpan data secara stateful.

  • Kafka Connect: Menggunakan Kafka Connect untuk menghubungkan Kafka dengan sistem lain (misalnya, database).


Catatan Penting



  • Instalasi: Pastikan Kafka dan librari Golang untuk Kafka sudah terinstal.

  • Konfigurasi: Sesuaikan konfigurasi dengan environment project Anda.

  • Error Handling: Tambahkan penanganan error yang lebih baik.

  • Best Practices: Ikuti best practices untuk penggunaan Kafka.


Baca artikel lainya :