有三個微服務到位:如果一個微服務是公共,同時內部
作者
其中有選擇的能力和CRUD實體「作者」
書籍
它具有SELECT和CRUD實體的能力「book」
移動應用主機
專門爲移動客戶端構建,可以響應請求的完整數據模型,以便移動應用程序不會在其末尾「豐富」數據。
例:API「MobileHost.getAllBooksOfGivenAuthor」將與這兩個作者姓名和書名迴應,通過調用「Authors.getAuthorData(的AuthorID)」,併合並其數據「Books.getBooksByAuthorIds(AUTHORID)」所獲得的結構像這樣:
{
"author" : {
"name" : "Winner",
"id" : 1
},
"books" : [
{
"name" : "Book A",
"id" : "13231231"
}
]
}
我問題是:
如果移動客戶端讀取通過「移動應用主機」的數據應該是做「添加作者」到「移動應用主機」還,還是確定以直接聯繫「作者」服務?在這種情況下CRUD應該被代理嗎?
感謝您的詳細回覆。 對你來說還有一個問題: 除了'主機'服務,你是否創建內部和外部的API?如果你這樣做,你能否說出你爲什麼這樣做的原因? 謝謝。 – user3765648
由於緩存,我們對API服務有混合策略。 API緩存一些非常頻繁的數據,並從查詢中的緩存中返回數據。它還處理分頁和從服務只提取特定的「頁面」數據。如果存在不需要任何緩存系統的服務,我們直接調用它,因爲它減少了在高負載下可能相當昂貴的服務間通信量。但是我們的API服務在任何時候都被設計成分離的,他們遵循門面設計模式。如果我們注意到API服務的一小部分存在巨大的負載,我們會把它拿出來。 – cassandrad
謝謝,現在我有一個清晰的視野。 – user3765648