成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

思考Web應用的數據流

開發 前端
這篇文章嘗試描述一下稍微正常一點的, 基于數據流來設計架構的一個構想。由于后端開發經驗的欠缺, 我并不打算給出可行的方案。在開始之前, 先回顧一下實時 Web 應用的架構設計。

之前做了個玩具叫做 Cumulo, 大致意思后端計算數據, 通過 Diff/Patch 發到前端,

那么前端瀏覽器的 Store 就不需要業務邏輯了, 從而減少開發.

然而這種做法存在天然的缺陷, 首先, 性能問題, 其次, 持久化問題.

其實都可以歸結為性能, 要性能, 就必須做增量, 那么整個架構就崩潰了.

這篇文章嘗試描述一下稍微正常一點的, 基于數據流來設計架構的一個構想.

由于后端開發經驗的欠缺, 我并不打算給出可行的方案.

在開始之前, 先回顧一下實時 Web 應用的架構設計.

首先在前端 Model-View 分離是***步, 以便解放 View 的開發效率.

這時的數據流, Model 的數據發送到 View, 而 View 的更新操作回到 Model.

(這里的 Model 接近 Store, 并不是單純數據, 而是包含更新邏輯): 

 

 

 

接著, 把 Server 重新放回來, 大致就到了 Cumulo 的情況,

這時的數據流, 數據直接發送到服務端, 前端 Model 同步服務端,

***再回到 View, 這時 Model 就成為一個中間過程了: 

 

 

 

那么結合上邊兩張圖, 把這部分簡化, 基本就回到***張圖的情形,區別是, 這時 Model 換成了服務器, 而數據流從服務器流行瀏覽器: 

 

 

 

當我們考慮數據庫, 特別是數據庫比如是增量處理, 問題就來了,

首先, 數據發送到 Server 而不是 Database, 因為 Server 才有邏輯,

其次, 不能把 Database 整個數據流發給 Server, 因為太大了.

Cumulo 中用的是 Diff/Patch 方案, 而這對于 Database 來說并不可行,

所以實際情況就挺糾結了, Server 回到了 Controller 的角色: 

 

 

 

***為了性能, 更新邏輯還需要從 Database 拿開, 而讓 Model 回來,

那么 Model 一方面要處理數據請求, 一方面要處理推送, 只能增加,

整個數據流也多了一些線路, 變得復雜起來, 這也是當初簡聊大致的架構: 

 

 

 

不過這個圖并不嚴謹, 比如 Database 和 Server 的具體關系很難畫清楚,

而且請求當然是訪問到一個 web server 而不可能直接放到數據庫的,

這個圖的重點是, 相比原來的一個流, 現在存在兩個流, 架構已經變了.

而數據通過兩種途徑來獲取:

數據抓取, 訪問頁面時直接抓取的數據, 以及抓取歷史

推送, 用戶使用過程中, 從其他客戶端獲取的更新

問題是, 如果不能進行簡化, 從而減少業務代碼的編寫, 思考就沒有意義了,

這兩個數據流的計算方法并不一致, 無法合并成一個,

所以我考慮, 從另外的角度去思考怎樣構造出一套框架來處理數據流,

所以我整理了一下聊天室需要的常見操作:

  • 切換聊天室
  • 抓取首屏消息
  • 抓取消息
  • 接收消息更新
  • 查詢歷史消息
  • 用戶登錄
  • 用戶權限驗證

對于前面四個操作我比較在意, 因為之間存在著一個共性,

比如一個消息流, 就會有, 切換, 抓取, 歷史, 更新, 這些個操作,

而整體看來, 其他的能夠抽象到流的數據也可以復用這個套路,

那么整個應用的頁面切換, 數據查閱, 數據更新, 能放進一個統一的框子,

也就是, 路由切換時選擇客戶端訂閱哪些流, 然后按流進行瀏覽.

當然其中還是存在一些問題, 需要繼續思考,

  • 消息列表是流, 那么用戶配置是流嗎?

配置經常是 JSON 對象, 要變成流, 就要把不同時間的修改操作也涵蓋進來,

但是這還是會涉及到新的問題, 每一條消息都可能修改, 那么也是流,

結果我們需要面對一個復雜很多的流的概念.

  • 另一個是數據的關聯, 消息當中會有附件, 聊天室會有成員,

數據的關聯如何處理? API 的設計怎樣對應的界面, 而兩者又進行解耦?

如果數據之間還出現循環的關聯關系, 整個方案是否將要失效?

這是一個相當麻煩的事情, 最開始可能還是要盡量避免掉.

此外, 即便解決了上邊兩個問題, 前面列表當中剩下的選項依然要處理,

權限系統, 搜索系統, 兩個是獨立于流的結構之外的, 無法同時抽象.

更加遠的問題, 數據庫和服務器可能是分布式的, 還會有更復雜的數據流.

所以實際上拋出來更多問題了.

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2011-12-14 15:57:13

javanio

2009-08-19 10:41:12

Java輸入數據流

2022-03-18 08:57:17

前端數據流選型

2017-11-16 19:26:34

海量數據算法計算機

2021-10-27 10:43:36

數據流中位數偶數

2011-04-14 14:43:38

SSISTransformat

2012-07-30 08:31:08

Storm數據流

2019-12-19 14:38:08

Flink SQL數據流Join

2011-04-19 09:18:02

SSIS數據轉換

2013-10-21 10:58:50

微軟大數據SQL Server

2009-07-15 09:06:11

Linux圖形系統X11的CS架構

2020-02-06 19:12:36

Java函數式編程編程語言

2014-12-02 10:56:47

TCPIP交互數據流

2014-02-11 08:51:15

亞馬遜PaaSAppStream

2021-06-29 19:24:42

數據流數據排序

2017-07-19 11:04:40

大數據大數據應用方向

2020-08-20 11:24:31

物聯網數據技術

2019-06-18 13:51:08

大數據流處理新興市場

2013-10-12 13:14:27

TwitterGoogle大數據

2021-06-08 05:50:00

數據流數字化轉型數字化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 麻豆va| 日韩综合| 6080亚洲精品一区二区 | 91麻豆产精品久久久久久 | 嫩草视频在线免费观看 | 精品中文字幕久久 | 日本在线网址 | 日韩色图在线观看 | 日本亚洲一区 | 精品美女久久久 | 日本成人片在线观看 | 日韩高清不卡 | 成人亚洲精品久久久久软件 | 欧美国产日韩在线观看成人 | 亚洲精品无| 伊人精品国产 | 久草视频观看 | 日韩精品一区二区三区中文字幕 | 久久精品亚洲精品国产欧美 | 91精品国产乱码久久久久久久久 | 高清不卡毛片 | 精品久久久久久亚洲综合网 | av一区二区三区四区 | 久久精品网 | 国产精品综合网 | 中文字幕丁香5月 | 亚洲第一中文字幕 | 久久国产欧美日韩精品 | 欧美亚洲成人网 | 国产欧美日韩综合精品一 | 国产精品久久久免费 | 精品1区 | 一区二区在线免费观看视频 | a在线视频 | 欧美成年黄网站色视频 | 成人欧美一区二区三区在线观看 | 日批的视频| 国产精品午夜电影 | 一级国产精品一级国产精品片 | 黑人性hd | 国产资源网 |