go reactive宣言

banq發表於2013-10-13

這段時間,軟體領域暗流湧動:

中介軟體江湖新來了一批悍將,在網際網路領域把EE打得節節敗退。Finagle(Twitter)非同步化RPC,Akka(TypeSafe)融入管理思路的Actor模型,RxJava(Netflix)觀察模式推送多個結果,Vertx(Eclipse)吸取Nodejs精華。它們身著黑衣,上書大大的"Reactive"。並且結黨簽署投名狀: http://www.reactivemanifesto.org/ ---@尋找一個蘋果

為什麼需要go reactive?

近年來,應用需求已經發生了巨大的變化,僅在幾年前,一個大的應用程式就有數萬臺伺服器,秒級響應時間,小時級別離線維護和千兆位元組級別的資料。今天的應用程式部署從移動裝置到基於雲端計算的執行在數千個多核處理器上的叢集。使用者期望毫秒甚至微秒的響應時間和100%的正常執行時間。資料量打到PB級的需求日益增加。

創新的網際網路公司如谷歌或Twitter的應用架構設計已經開始推廣在很多行業,金融和電信是率先採取新技術來滿足新需求的行業。

新的需求要求新的技術。以前的解決方案都強調了伺服器或容器的可管理性。可伸縮性效能提升是通過購買較大的伺服器以及多執行緒併發處理來實現。增加新的伺服器也同時引入了新的複雜性,這是低效且昂貴的專有解決方案。

但現在已經有一種新的架構讓開發商能滿足當今的需求構建新的應用程式,。我們稱這些應用是reactive應用(反應的應用)。這種結構允許開發人員構建事件驅動(event-driven),可擴充套件性,彈性的反應系統:提供高度敏感的實時的使用者體驗感覺,可伸縮性和彈性的應用程式棧的支援,隨時可以部署在多核和雲端計算架構。

什麼是reactive

Merriam-Webster 定義reactive是“隨時響應刺激”的反應,也就是說,它的元件是“活躍”,隨時準備接收事件。這個定義抓住了reactive本質的用。

聚焦在系統上有如下定義:

1. react to events 對事件立即反應

事件驅動的自然特性使的反應能夠立即載入實施,通過避免對共享資源的爭用實現可擴充套件性。

2.react to failure 對失敗立即反應

在任何級別都可以建立一個能夠實現失敗恢復的彈性系統。

3.react to users 對使用者立即反應

無論任何負載,值得榮耀的響應時間。

這些特徵跨越了標準的分層應用程式體系結構,並不侷限於某個分層之中,而是適用於在整個技術堆疊。

相關文章