Parapet分布式事件驅(qū)動系統(tǒng)庫
Parapet 是一個用來構建分布式事件驅(qū)動系統(tǒng)的純功能庫。
編寫分布式系統(tǒng)是一項具有挑戰(zhàn)性的任務,這在邏輯上可分為兩個主要方面:實現(xiàn)分布式算法并運行它們,這不是秘密。 Parapet扮演分布式算法執(zhí)行框架的角色 - 它可以被視為低級效果庫和以DSL形式公開的高級操作之間的中間層。主要專注于設計和實現(xiàn)分布式算法的分布式工程師不需要擔心IO等低級抽象,或者對某些計算機科學主題有一定的深入了解,例如并發(fā)。他們需要知道的是庫滿足的屬性以及它提供的保證。另一方面,專門編寫低級庫的工程師可以專注于實現(xiàn)IO或Task等核心抽象,從而進行性能優(yōu)化和實現(xiàn)新功能。 Parapet是模塊化庫,幾乎所有組件都可以用自定義實現(xiàn)替換。
關鍵特性:
- 使用Tagless-Final Style和Free Monads以scala編寫的純函數(shù)庫; 精心設計的人更喜歡功能風格而不是命令式
- 模塊化 - 幾乎任何組件都可以用自定義實現(xiàn)替換
- DSL提供了一組足以編寫分布式算法的操作
- 輕巧,高效。 該庫巧妙地利用資源(CPU和內(nèi)存),優(yōu)化代碼以減少應用程序處于空閑狀態(tài)時的CPU消耗
- 內(nèi)置支持以下效果庫:Cats Effect,Monix和Scalaz ZIO。 該庫可以擴展為支持其他效果庫:Cats Effect,Monix和Scalaz ZIO
示例代碼:
import io.parapet.core.{Event, Process}
class Printer[F[_]] extends Process[F] {
import Printer._ // import Printer API
import dsl._ // import DSL operations
override def handle: Receive = {
case Print(data) => eval(println(data))
}
}
object Printer {
case class Print(data: Any) extends Event
}
評論
圖片
表情
