我打算分解一個應用程序,我開始用圖形數據庫構建爲一個整體到微服務中。但我面臨的困境是試圖找到一個適當的解決方案來分割不同的服務,而不是放棄圖形數據庫提供的好處。微服務:分解一個基於圖形數據庫的應用程序
我最初考慮的想法是將每個不同的實體分成它自己的微服務,使用文檔存儲來保存每個服務上的數據。然後定義一個更高級的服務來管理關係。例如,在關係(A) - >(B)中,將產生3個微服務,一個用於A型實體的服務,另一個用於B型實體,另一個用於圖形數據庫,存儲類型A和B的節點,僅包含ID和它們之間的關係。
問題1:在耦合,容錯或其他我現在無法想到的方法中,這種方法有什麼問題嗎? (A) - >(B),(A) - >(C)和(C) - >(B)當您將第三個實體投入遊戲時, ,哪一個在這種情況下是最好的方法?
- 我是否堅持只有一個更高層次的服務來維護所有關係?
- 我是否生成幾個更高級別的服務來維護每種類型的關係?
問題3:在相同的類型,例如(人)的實體之間的關係的情況下 - isFriendOf - >(人),銘記的關注點分離的概念,它是是否適用於將關係管理分爲不同的服務?
任何輸入,反饋和想法都非常受歡迎。
我一直在做一些關於這個問題的研究,併爲清楚起見,我將提出一個更具體的情況,所以它會更容易一下討論。 圖形模型將是這樣的:
的目標在這裏將實現歌曲的播放列表推薦服務,試圖找到一個給定的用戶還沒有聽過的歌曲,基於流派以及來自用戶已經收聽的歌曲的藝術家以及來自其他用戶收聽的其他歌曲的藝術家,其次是當前用戶。