Scala veya Clojure Fonksiyonel Programlama en iyi uygulamaları


11

Çok fazla kendi kendine çalışma kodlaması yaptım, Paralel Programlama Modelleri ile ilgili bazı deneyimler edindim: Aktörler, Yazılım İşlemsel Bellek, Veri Akışı.

Bu mimarileri gerçek hayata - yüksek yüklü web uygulamasına - uygulamaya çalışırken, herhangi bir model veri için dayanıklılığı ve kalıcılığı desteklemez. Gerçek hayat görevleri sonunda verilerin kaydedilmesini gerektirir. Bu hala DB ve bindirme DB senkronizasyonları, olası ölçeklenebilirlik şişe boyunları vb kullanmak zorunda olduğu anlamına gelir.

Akka Aktörleri veya Yazılım İşlem Belleğini kullanan ve sonunda kalıcılığı uygulayan mimariye (src veya metin veya diyagram veya taslaklar) iyi örnek bilen var mı ?

Gerçek hayat uygulamalarında İşlemsel Bellek, Aktörler, Veri Akışı, Tuple uzayları için iyi bir örnek / fikir açıktır.


Hem akka'ya hem de stm'ye ihtiyacınız var mı?
om-nom-nom

Kalıcılığın "sonunda" olduğunu düşünmeniz alışılmadık görünüyor. Ben "DB senkronizasyonu, olası ölçeklenebilirlik darboğazları vb." bir problemdir çünkü onlar bir şeylerin ortasında değil, sonundadırlar.
Dan Burton

Devamlılığın sonunda olduğundan daha sık gerçekleştiğini kabul et

@Stas (1) Scala ve Clojure, (2) en iyi uygulamalarla ilgili soru nasıl? Okuduğum şey (1) dile agnostik ve (2) sadece eşzamanlılık (özellikle Dayanıklılık / Kalıcılık) ile ilgilidir.
sakisk

Yanıtlar:


5

Aktör / STM modelleri ve veritabanı kalıcılığı biraz diktir - biri olmadan diğerine kolayca sahip olabilirsiniz ve bence ikisini karıştırmak gibi bir tehlike var.

Dayanıklılık Elde Etme (ACID'de D), işlemsel bir ortamda ve özellikle mesaj geçişi ile koordine edilen aktörlerin / işlemlerin bulunduğu dağıtılmış bir ortamda son derece karmaşıktır. Bizans Generalleri Sorunu gibi dikenli konulara giriyorsunuz .

Sonuç olarak, her zaman çözümü belirli kalıcılık gereksinimlerinizi karşılayacak şekilde uyarlamanın bir dereceye kadar olacağını düşünüyorum. "Tek beden herkese uyar" çözümü yoktur.

Bakmaya değer (Clojure perspektifi):


5

Aktör modeli , veri manipülasyonu yapan aktörlere "Komut" eşdeğeri olarak kullanılabileceğinden , Komut / Sorgu Sorumluluk Ayrımı (CQRS) ile iyi çalışır .

Peki bunun kalıcılık probleminizle ne ilgisi var? Bellek üzerinde çalışıyorsunuz ve tüm komutları bir günlüğe yazıyorsunuz. günlük tarafından kullanılan alanı kurtar).

Bu oldukça yaygın bir tekniktir. Daha fazla ilham almak için VoltDB ve Redis'e bakın.


4

Rich Hickey'in Datomic adında yepyeni bir beyni var. Kalıcılık, depolamayı ayırma, işlem yönetimi ve sorgulamaya yeni bir yaklaşımdır. Değişmez kayıtlara dayanır ve Datalog (Prolog ile özellikleri paylaşır) adlı bir sorgu dili kullanır. Temel amaç, kolay dağıtım ve bulut dağıtımına izin vermekti. Bir hizmet olarak depolamaya dayanır (bu nedenle somut bir uygulama değil, tel üzerinden bir API aracılığıyla gevşek bir şekilde birleştirilmiştir).

Clojure'da, ACI'yi veren DM var, D eksik. Datomic D'yi ekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.