[elixir观察] GenStage 与 Flow
生活随笔
收集整理的這篇文章主要介紹了
[elixir观察] GenStage 与 Flow
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
在2016的ElixirConf上,Jose介紹了Elixir即將到來的兩個新特性。
GenStage 的設計目的在于盡量減少等待時間。例如,消費者向生產者請求10個任務,生產者返回了10個任務,消費者開始處理,處理結束后再次請求另外10個任務。這就需要等待生產者的回復。 而在GenStage中,當消費者處理到第5個任務時,就會向生產者發出請求,這樣當消費者處理完10個任務,就可以立刻繼續后面的任務。
Flow 的目的在于進一步對大量數據的處理進行并發優化。適用于不需要考慮數據順序的情況。例如統計一篇文章中的詞頻。Stream和Flow都是lazy的,而Enum是eager的,當檢測到eager的操作時。之前的lazy操作才會開始執行。Enum會對整篇文章執行完第一步,再進入第二步;Stream會逐行執行所有步驟;Flow會將所有行分配到多個進程,同時進行處理,因此不能保持順序。數據量越大,Flow的優勢越明顯。
轉載于:https://my.oschina.net/ljzn/blog/752712
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的[elixir观察] GenStage 与 Flow的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Struts2的jsp页面的注释
- 下一篇: 性能计数器自动收集-logman