Takip et

SQLite ve Python ile Paylaşımsız Dağıtık Kuyruk Oluşturma

SQLite ve Python ile Paylaşımsız Dağıtık Kuyruk Oluşturma

Merhaba! Bu makalede, SQLite ve Python kullanarak basit ama etkili bir paylaşımsız dağıtık kuyruk nasıl oluşturabileceğinizi adım adım açıklayacağım. Paylaşımsız mimari, her işçinin kendi veritabanına sahip olduğu ve merkezi bir veritabanı ihtiyacını ortadan kaldırdığı için ölçeklenebilirlik ve performans açısından önemli avantajlar sunar. Bu yaklaşım, özellikle kaynak kısıtlı ortamlarda veya büyük veri işleme senaryolarında oldukça faydalıdır.

Öncelikle, paylaşımsız mimarinin avantajlarını anlayalım. Birçok işçinin tek bir veritabanını paylaşması, performans darboğazlarına ve veritabanı sunucusuna aşırı yüklenmelere yol açabilir. Ancak, her işçinin kendi SQLite veritabanı kullanmasıyla bu sorunları ortadan kaldırırız. Bu durum, daha yüksek performans ve daha iyi ölçeklenebilirlik sağlar. Ayrıca, bir işçinin çökmesi diğerlerini etkilemez, sistemin genel kararlılığını artırır.

Sistem Mimarisi

Sistemimizde, her bir işçi kendi SQLite veritabanını kullanarak görevleri sıraya alacak ve işleyecektir. İşçiler arasında koordinasyon olmayacak; sistemin tamamı bağımsız çalışan işçilerden oluşacaktır. Yeni bir görev eklemek için yeni bir işçi başlatılır veya var olan işçilerden biri yeni görevleri işlemeyi üstlenir. Bu yaklaşım, basitliği ve ölçeklenebilirliği nedeniyle tercih edilir.

Python ve SQLite ile Uygulama

Şimdi, Python ve SQLite kullanarak dağıtık kuyruğumuzun temel işlevlerini gerçekleştirelim. Aşağıdaki kod, yeni bir görev ekleme ve kuyruktan görev alma işlemlerini göstermektedir:


import sqlite3
import uuid
import os

def create_queue(db_path):
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS tasks (
            id TEXT PRIMARY KEY,
            task TEXT
        )
    ''')
    conn.commit()
    conn.close()


def add_task(db_path, task):
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    task_id = str(uuid.uuid4())
    cursor.execute("INSERT INTO tasks (id, task) VALUES (?, ?)", (task_id, task))
    conn.commit()
    conn.close()
    return task_id

def get_task(db_path):
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    cursor.execute("SELECT id, task FROM tasks LIMIT 1")
    task = cursor.fetchone()
    if task:
        task_id, task_data = task
        cursor.execute("DELETE FROM tasks WHERE id = ?", (task_id,))
        conn.commit()
        conn.close()
        return task_data
    else:
        conn.close()
        return None

# Örnek Kullanım
db_path = "tasks.db"
create_queue(db_path)
add_task(db_path, "Görev 1")
add_task(db_path, "Görev 2")
print(get_task(db_path)) # Görev 1'i döndürür
print(get_task(db_path)) # Görev 2'yi döndürür

Bu kod, her işçinin kendi tasks.db dosyasını kullanarak görevleri yönetmesini sağlar. Her işçi bu fonksiyonları çağırarak görev ekleyebilir ve işleyebilir.

Ölçeklenebilirlik ve Performans

Bu paylaşımsız mimari, ölçeklenebilirliği önemli ölçüde artırır. Yeni işçiler ekleyerek sistemin işlem kapasitesini kolayca artırabiliriz. Ayrıca, her işçinin bağımsız çalışması, bir işçinin başarısızlığının diğerlerini etkilememesini sağlar. Sistemin genel kararlılığı ve sağlamlığı da bu sayede korunmuş olur. SQLite’ın hafif yapısı da performansı olumlu yönde etkiler.

Sonuç

Bu makalede, SQLite ve Python kullanarak basit ve etkili bir paylaşımsız dağıtık kuyruk oluşturmayı gösterdim. Bu yaklaşım, ölçeklenebilirlik ve performans açısından önemli avantajlar sunar. Sisteminizin ihtiyaçlarına göre daha gelişmiş özelliklerle zenginleştirebilirsiniz. Örneğin, görevlerin önceliklendirilmesi veya hata yönetimi gibi.

Daha fazla bilgi için fatihsoysal.com adresini ziyaret edebilirsiniz.

Faydalı bulabileceğiniz kaynaklar:

#Etiketler: SQLite, Python, Dağıtık Kuyruk, Shared-Nothing, Queue, Paralel İşlem, Ölçeklenebilirlik, Veritabanı, Programlama


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.