以上是架構圖,有多個client,當client有空的時候,就發送request 跟server 要資料,
這個架構看起來很美好,但是實際執行會發現,client常常會拿到同一個任務
why?
因為當多個client 同時執行時,DB的資料會在還沒被改動前就會被讀取數次,
那我們要怎麼避免這件事情發生?
ans: 讓DB只能被一個client存取
所以我修改了設計
可以注意到,原本單純server的地方被改成queue,也就是說所有的request 都會直接進queue,然後queue一次只允許一個client去取得任務,這樣的架構就可以避免同樣的任務被執行多次了
不過目前的架構也會造成許多client在排隊等queue執行完,不過目前這樣的架構已經可以符合我的需求,或許在未來會有其他更優化的架構吧~
沒有留言:
張貼留言