大型科技公司的多個團隊(擁有不同的系統組件/微服務)如何共享他們的資料庫。
我可以想到多個需要這樣做的用例。例如,在一家電子商務公司中,相同的產品將在多個團隊之間共享,例如產品首先是產品引導服務的一部分,然后可能是目錄服務(存盤所有產品和類別),然后是搜索服務、購物車服務、下單服務、推薦服務、取消退貨服務等。
如果他們不共享任何資料庫,那么
- 他們是否都有具有相同產品 ID 的產品的冗余副本?
- 在多個團隊之間實作一致性不會有挑戰嗎?
無論他們是否共享資料庫,我都有多個相關的疑問。我瀏覽了多個關于軟體設計的技術博客和視頻,但仍然沒有得到令人滿意的答案。一定要分享一些資源,這些資源可以提供一個完整的作業流程,了解大型科技公司的端到端作業方式。謝謝
uj5u.com熱心網友回復:
在微服務架構中,每個微服務都暴露了端點,其他微服務可以在這些端點訪問服務之間的共享資訊。因此,一個服務將存盤為由另一個微服務管理的記錄的最少資訊。例如,如果用戶服務想在電子商務案例中為特定用戶獲取訂單,那么訂單服務將公開一個端點,給定用戶 ID 將回傳與提供的用戶 ID 相關的所有訂單等等......所以本質上,訂單服務需要存盤的與用戶相關的唯一欄位是用戶 ID,其余的用戶詳細資訊與它無關。
為了進一步提高團隊之間的凝聚力和理解力,還構建了資料發現 API/檔案,以將資料庫的元資料共享給其他團隊,以進一步解釋每個表/欄位對一個人有效規劃微服務的意義。您可以在此處閱讀有關此類公司如何構建資料發現工具 的更多資訊
uj5u.com熱心網友回復:
如果我理解正確,您不確定公司的不同部門如何接收資料?
這個想法是您創建可重用且有效的 API 來解決此問題。
讓我們籠統地說我們正在尋找的公司是沃爾瑪。沃爾瑪的資料庫中有數百萬件商品。每個專案都有一個唯一的 ID 等。
如果沃爾瑪通過 walmart.com 在線銷售商品,他們必須有辦法獲取這些商品,因此他們創建 API 并使用它們根據特定查詢條件抓取商品。
現在,假設沃爾瑪決定構建一個應用程式......他們需要那些完全相同的物品!好在我們已經創建了這些 API,我們將使用完全相同的 API 來獲取資料。
現在,沃爾瑪如何管理哪些商品在哪家商店可用,價格是多少?他們通常會通過額外的資料庫模式表鏈接這些元資料,并將它們與主鍵和外鍵系結在一起。
^^ 這實質上允許沃爾瑪從他們的 CORE 資料庫中只抓取該商品,該資料庫僅包含商品所需的詳細資訊(例如名稱、尺寸、顏色、SKU、詳細資訊等),并將其鏈接到另一個資料庫,也就是說,您當地的沃爾瑪,其中包含僅與您的沃爾瑪位置有關的資訊(例如價格、庫存、過道號等)。
所以從某種意義上說,使用多個資料庫是的。
也許這可能會讓你走上更多的道路:https ://learnsql.com/blog/why-use-primary-key-foreign-key/ https://towardsdatascience.com/designing-a-relational-database-and-創建物體關系圖 89c1c19320b2
uj5u.com熱心網友回復:
在不同的公司/組織文化以及圍繞一致性和可用性的不同要求的推動下,大型科技公司之間甚至內部使用的方法有很大差異。
任何時候你有一個明確的“查詢另一個服務/另一個資料庫”依賴,你就有一個耦合,它傾向于將一個服務中的問題變成兩個服務中的問題(這不一定是單向的:它是查詢服務很可能會遇到一個級聯成查詢服務中的問題的問題(當快取變為承載時尤其可能,這導致在不遠的地方至少有一個 FANMAG 發生重大中斷過去的))。
這導致一些可以被稱為大型技術的公司在其服務設計中避開這種方法,通常是通過讓服務發布事件來描述已更改的內容到持久日志(僅附加存盤)。其他服務訂閱該日志并使用這些事件來構建他們自己的最終一致的其他服務所擁有資料的視圖(即存在某種程度的資料重復,服務準確存盤它們運行所需的資料)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412265.html
標籤:
上一篇:Neo4j查詢未回傳所需的輸出
