# Mikroservis Mimarisi ve Gerçek Zamanlı Veri Akışı: Neden Bu İkisini Kullanmalıyız?
Kafka ile anlık veri akışları, verinin kaybolmadan hızlı bir şekilde aktarılması sağlanabilir. Herhangi bir kayıp olmadan, gerçek zamanlı olarak veriler işlenebilir ve mikroservislere aktarılabilir. Docker ise her bir mikroservisin bağımsız bir şekilde çalışabilmesini sağlar. Böylece her mikroservis bir konteyner içinde, kendi başına çalışırken, tüm sistemi yöneten bir bütünlük oluşturur.
# Adım Adım Kurulum: Apache Kafka ve Docker ile Mikroservis Mimarisi
## 1. Adım: Docker ve Apache Kafka'yı Kurma
```bash
# Docker kurulumunu kontrol etmek için:
docker --version
```
Eğer Docker yüklü değilse, [Docker'ın resmi web sitesinden](https://www.docker.com/get-started) Docker'ı indirip kurabilirsiniz.
Apache Kafka'nın çalışabilmesi için, Zookeeper'a da ihtiyacınız olacak. Kafka, Zookeeper üzerinden düğüm yönetimini sağlar. Docker kullanarak bu servisleri hızlıca çalıştırabilirsiniz.
```bash
# Kafka ve Zookeeper'ı Docker ile başlatmak için docker-compose.yml dosyasını oluşturun.
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9093:9093"
expose:
- "9093"
environment:
KAFKA_ADVERTISED_LISTENER: INSIDE://kafka:9093
KAFKA_LISTENER: INSIDE://0.0.0.0:9093
KAFKA_LISTENER_SECURITY_PROTOCOL: PLAINTEXT
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
depends_on:
- zookeeper
```
Bu yapılandırma ile Zookeeper ve Kafka'yı Docker konteynerlarında çalıştırabilirsiniz. Şimdi terminal üzerinden şu komutu çalıştırarak her iki servisi başlatabilirsiniz:
```bash
docker-compose up -d
```
## 2. Adım: Kafka’ya Veri Gönderme
Örnek bir producer uygulaması için Python kodu şu şekilde olabilir:
```python
from kafka import KafkaProducer
import json
# Kafka producer'ını başlat
producer = KafkaProducer(bootstrap_servers=['localhost:9093'],
value_serializer=lambda v: json.dumps(v).encode('utf-8'))
# Veriyi Kafka'ya gönder
data = {'key': 'value'}
producer.send('test-topic', value=data)
# Mesajı gönderdikten sonra üreticiyi kapatın
producer.close()
```
Yukarıdaki kod, test-topic adlı bir Kafka konusuna veri gönderecektir.
## 3. Adım: Kafka'dan Veri Alma
```python
from kafka import KafkaConsumer
import json
# Kafka consumer'ını başlat
consumer = KafkaConsumer('test-topic', bootstrap_servers=['localhost:9093'],
value_deserializer=lambda x: json.loads(x.decode('utf-8')))
# Mesajları tüket
for message in consumer:
print(f"Received message: {message.value}")
```
Bu uygulama, test-topic konusundaki tüm mesajları alır ve her bir mesajı ekrana yazdırır.
## 4. Adım: Docker ile Mikroservislerin Yönetimi
Örneğin, bir servisi yeniden başlatmak veya ölçeklemek, tüm sistemi etkilemeden yapılabilir. Docker ile mikroservislerinizi hem geliştirme hem de üretim ortamlarında verimli bir şekilde çalıştırabilirsiniz.
# Sonuç: Gerçek Zamanlı Veriyi Etkili Yönetmek
Bu yazıda, Kafka ve Docker ile mikroservis mimarisi kurulumunu adım adım anlattık. Verilerinizi hızla işleyebilir ve büyük ölçekli sistemlerde bile etkili bir çözüm oluşturabilirsiniz. Gerçek zamanlı veri akışı, her geçen gün önem kazanan bir konu. Bu teknolojilerle verinizi işlemek artık daha kolay ve verimli.
---