[System Design] Glossary
Term | Explanation | Note |
---|---|---|
Multi-tenancy(多租戶) | 不同的客戶共用同一個運算資源(computing resources),但彼此互不認識並保持獨立。可以把 multitenancy 想像房東把一層樓隔間成多個套房出租給許多不同的租客,他們共用這個樓層,但彼此獨立生活。 | multitenancy 能更有效率的使用資源,並且降低所需的花費。 壞處是因為仍在同一個機器,不同租戶的資料還是有很低的機會被其他租戶存取到,或者但一個租戶被攻擊時, 間接取得其他租戶的資料。此外,如果有鄰居佔用了很多的資源時,其他租客可能會被影響。但邏輯上,只要有做好 infrastructure 的設定,上述的缺點都不應該發生,且房東一般會有更多的資金可以用來加強資安。 用房東的例子很好想像,把一層樓切成多個隔間套房的話,房東可以更有效率的使用這個空間,租客也可以用更低的租金來租到所需的空間;但壞處就是如果遇到惡鄰居把網路頻寬整個沾滿,就會影響到其他租客,或者靠著牆壁偷聽其他鄰居的對話。 |
Data redundancy | 將資料保存在兩個以上不同的儲存空間(database 或 data storage),目的是確保即使資料發生意外時,系統還是能持續提供服務。 | |
Idempotency(幂等性) | 對同一操作的多次執行所產生的效果與執行一次的效果相同。換句話說,無論一個請求被執行多少次,只要請求的內容和條件相同,最終的結果都不會改變。 | 以 HTTP Methods 來說,像是 DELETE 或 PUT 就具有幂等性,因為同樣的請求不論進來幾次,最終的資料狀態都是一樣的。相反的,POST 就不具有幂等性,同樣的請求重複進來,會在資料庫建立出多筆資料。 |