愛彼迎如何實現聯合房東的共同託管?
Airbnb愛彼迎開發了一個協作託管基礎設施,支援所有型別的房東。這使得構建產品變得更加容易,因為工程師只需要瞭解一個涵蓋所有託管用例的中央框架。合作託管對於 Airbnb 上的許多房東的成功至關重要。為所有房東打造的無縫開發者體驗使我們能夠讓房東為房客提供出色的住宿體驗。
Airbnb 的使命是讓房東能夠提供獨一無二的住宿體驗,讓房客能夠以更真實、更互聯的方式體驗世界。有時託管是由一個人處理的,但在許多情況下託管是一個團隊的努力。房東通常會與另一個值得信賴的人分擔他們的責任,例如家庭成員或鄰居。這些值得信賴的合作伙伴是愛彼迎平臺上的聯合房東,他們有權訪問房東的房源、預訂資訊以及與房客進行資訊交流。
共同託管只是主持協作的一種形式。隨著託管成為主流,託管規模也隨之增長;事實上,現在很多人都將 Airbnb 房東作為他們的主要職業。從經營自己業務的房東企業家到隸屬於知名酒店公司的房東,這些型別的房東通過 Airbnb 上的團隊進行合作。在團隊內,接待團隊成員被授予與其實際接待職責相對應的角色(例如,客人經理)並擁有一組相應的許可權(例如,允許向客人傳送訊息)。
隨著協作主機數量的增加和新協作形式的引入,支援它們的工程工作變得越來越複雜。考慮到這一挑戰,Airbnb 開發了一個單一的通用基礎設施,可以支援所有當前和未來的 Airbnb 協作產品。此解決方案現在可供所有內部團隊使用。
在這篇博文中,我們將介紹 Airbnb 協作託管的統一架構,以及我們如何使用這種共享基礎架構來簡化為房東構建產品的過程。在下一節中,我們將說明為什麼在沒有共享基礎架構的情況下支援協作託管很快變得笨拙。然後,我們將介紹 Airbnb 的協作託管架構。最後,我們將討論此基礎架構如何支援產品工程師的需求。
。。。
協同託管核心架構
我們使用使用者組作為資料模型來表示任何一組人。使用者組由 id、組型別(例如COHOSTING、TEAM)和使用者組成員列表定義。
使用者組中的每個成員都由他們的 Airbnb 使用者 ID 和使用者組角色定義,這使我們能夠區分使用者組中不同型別的成員。例如,如果主持人(列表所有者)有一個共同主持人,那麼相應的使用者組將是一個COHOSTING具有兩個成員型別的使用者組:主持人,擁有LISTING_OWNER角色,共同主持人,擁有LISTING_COHOST角色。
此模型也可擴充套件到託管團隊。我們根據託管團隊通常如何分解團隊成員之間的職責(例如LISTING_MANAGER角色、FINANCE_MANAGER角色和角色)來支援特定於 Teams 的多個角色GUEST_MANAGER。
在共同主持人或團隊的建立和刪除流程中,相應的使用者組會相應更新。
資源 <> 使用者組關聯
現在我們有了一個用於任何協作託管組的模型,我們希望將每個組與該組的相應資源相關聯。這樣,當我們試圖回答關於一個人是否與給定資源有關係的問題時,無論具體的協作關係如何,都有一個單一的來源可以給我們答案。我們通過儲存 Airbnb 資源 ID、使用者組 ID 和建立關聯時的時間戳來跟蹤這些資源 <> 使用者組關聯。
需要更新資源<>使用者組關聯的場景有兩種:
- 當協作託管關係更新時。例如,建立託管團隊時,團隊建立者的所有資源都與團隊相應的使用者組相關聯
- 當協作託管資源更新時。例如,當客人在聯合託管房源上預訂時,我們需要將聯合託管使用者組與新預訂相關聯,以便房源的聯合託管人可以幫助房源所有者進行託管。
如果針對這些事件的更新沒有及時發生,產品體驗可能會過時。例如,如果房東將共同房東新增到列表中,但未更新基礎關聯,則共同房東將無法訪問列表及其預訂。
在 Airbnb 這樣規模的企業中,保持資源 <> 使用者組關聯的最新狀態可能具有挑戰性。事態不斷變化,有時是快速連續的;主持人可能會建立一個託管團隊,然後改變主意並立即將其刪除。結果,競爭條件確實發生了。
在本節的其餘部分,我們將介紹 Airbnb 的可擴充套件系統,以在競爭條件下保持資源 <> 使用者組關聯的最新狀態。在接下來的部分中,我們將詳細介紹 Airbnb 在產品開發過程中如何利用這些資源 <> 使用者組關聯。
點選標題見原文
相關文章
- Airbnb:2020年愛彼迎中國女性社群報告 女房東佔比高達67%AI
- 旅遊類APP原型模板分享——愛彼迎APP原型
- python獲取愛彼迎民宿評價資料Python
- 外媒:Airbnb愛彼迎難敵中國本土競爭對手AI
- 如何選擇適合自己的伺服器託管商?伺服器
- Visual C#託管Socket的實現方法C#
- 民宿Airbnb愛彼迎是如何使用GraphQL和Apollo快速擴大規模10倍?AI
- 託管C++執行緒鎖實現C++執行緒
- 託管與非託管的混合程式設計程式設計
- Knative Serverless 之道:如何 0 運維、低成本實現應用託管?Server運維
- 四大時裝週驚喜呈現,Airbnb愛彼迎邀大眾共赴時尚狂歡AI
- 愛彼迎民宿路由器暗藏攝像頭:官方回應已移除房源路由器
- 如何在 ? Space 上託管 Unity 遊戲Unity遊戲
- 微信雲託管如何實現一套程式碼對應多個環境
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- 歡迎oracle愛好者與初學者進行交流,共同提升oracle技能Oracle
- C# 託管資源和非託管資源C#
- 伺服器託管選擇多大頻寬合適伺服器
- 分散式資料中心節點多?看託管雲如何實現精細運維分散式運維
- 如何利用單臺伺服器實現10萬多個Git倉庫託管伺服器Git
- Serverless實踐-靜態網站託管Server網站
- Signalr自託管最簡實踐SignalR
- Airbnb財報:2022年Q1愛彼迎營收15億美元 同比增長70%AI營收
- 搭建自己的harbor(docker託管)Docker
- 伺服器託管伺服器
- Oracle 託管檔案Oracle
- 華為開發者 雲託管
- 博森量化軟體:託管錢包與非託管錢包的區別?
- 愛彼迎:1Q21營收8.87億美元 淨虧損11.72億美元 大超預期營收
- 2015年-2022年愛彼迎預訂總額(附原資料表)
- 伺服器託管是什麼意思,為什麼要託管?伺服器
- Git使用教程3:MyEclipse+Egit+GitHub實現程式碼託管 【上】EclipseGithub
- Git使用教程3:MyEclipse+Egit+GitHub實現程式碼託管 【下】EclipseGithub
- 重學c#系列——c# 託管和非託管資源(三)C#
- [.net 物件導向程式設計進階] (8) 託管與非託管物件程式設計
- 2015年-2022年愛彼迎預訂總天數(附原資料表)
- 使用GitHub託管專案Github
- C#如何載入嵌入到資源的非託管dllC#