微軟開源 rDSN 分布式系統開發框架
近日,由微軟亞洲研究院系統組開發的分布式系統開發框架——Robust Distributed System Nucleus(rDSN)通過GitHub平臺開源。rDSN旨在為廣大分布式系統的開發者,學生,和研究人員提供一個開放式的框架,用于快速搭建和運維高性能和高魯棒的分布式系統,而后者對于當前很多技術的成功都至關重要,比如云計算,大數據和物聯網等。
rDSN 的思想來源于系統組過去在分布式系統開發和運維各個階段進行的各種自動化項目。這些項目嘗試幫助開發者更快捷有效地測試,調試,優化,監控,擴展 (Scale-out),復制(Replicate),組合(Compose),甚至推理(Reason)。這些項目遇到了很多的困難,很多是由于開始的代碼工作沒有考慮這些需求,導致后期的開發事倍功半。rDSN提供了一個開發框架使得開發人員一開始也不需要考慮這些問題,但是代碼會符合一定的原則,使得后期可以用很小的甚至零代價升級他們的代碼來實現上面提到的需求。rDSN的一個早期版本在Bing里面用于開發一個分布式數據服務系統,該系統已經上線并運行良好。根據產品組的反饋,rDSN進行了改進并希望通過開源的方式對社區有所貢獻,特別是對那些分布式系統的相關開發人員,學生和研究者有所幫助。
對于開發者而言,rDSN可以幫助改善開發和運維體驗,來提高系統的編程敏捷性,性能以及魯棒性。rDSN最簡單的用法可以看成是一個和主流RPC框架(比如Apache Thrift)等兼容的升級版RPC框架,或者是一個采用基于事件編程的高性能任務庫。開發者設置rDSN為測試模式,來系統性地模擬各種各樣的調度決策和系統錯誤,來提早暴露系統可能的缺陷。當錯誤發生時,rDSN能重放發生的錯誤,并把分布式系統所有節點的狀態放在一個進程里調試,而且不必擔心由于調試導致意外的timeout。當系統上線以后,rDSN提供了自動過的執行流跟蹤和性能檢測。如果你對rDSN自帶的底層庫不滿意(比如網絡庫或者日志系統等),rDSN是一個開放的框架因此你可以非常方便地替換它們。再比如,當你需要處理更大規模的輸入并且想要提高系統的可用性,rDSN提供了復制框架 (replication framework)來把單機服務變成多機+自動復制的服務,而這其中只需要非常少的進一步的開發。總之,rDSN提供并且幫助開發工具和運行時框架能夠和上層應用無縫集成,能夠極大地提高開發和運維的效率。
對于學生來說,rDSN提供了一個能夠方便地簡化,理解,和操縱分布式系統的平臺。當學習一個分布式系統協議的時候,你可以在rDSN的模擬器模式下編寫和調試。該模擬器能夠簡化實際系統中的很多復雜性,并在需要的時候慢慢把這些復雜性加回去。比如,從單線程到多線程,從同步且可靠的網絡到異步不可靠網絡。為了理解協議是如何運作的,rDSN提供了自動的執行流跟蹤,并且會產生一個“事件矩陣”來記錄代碼之間的調用關系和頻率,以揭示系統內部的依賴關系及其相關權重。
很多分布式系統的研究人員常常期望提供通用的分布式系統的相關工具和運行時策略。rDSN提供了專門的工具API(Tool API)來幫助這方面的工作。工具API提供了底層模塊的虛擬化,并且把上層系統的所有不確定性都暴露了出來。這使得構建高效和可靠的工具和運行時策略成為可能。目前開源的這個版本里面就包含了很多這方面的例子。此外,rDSN的設計保證了這些工具和運行時策略能夠和基于rDSN的上策應用無縫集成,因此這些研究成果都能很快地進入實際部署。
rDSN的開源一方面能夠幫助到社區,另一方面也期待著社區反饋相關成果來大家一起把分布式系統的開發變得更加簡單高效。請通過如下鏈接訪問rDSN: https://github.com/Microsoft/rDSN.