2016-04-30 53 views
4

嗨,大家好,多租戶的Apache的點燃性能接近

我在必須保持在高速緩存中的很多記錄(Apache的點燃)的一個項目工作,該記錄由公司分成。

例如:

公司;產品;數量

CompA;一個; 15

CompA; B; 10

CompB;一個; 20

CompB; B; 12

我的疑問是大約在相同的緩存與附加鍵(公司+產品)租戶創建條目之間的性能和像每個租戶創建一個新的高速緩存:

CacheConfiguration<String, String> cfgCompanyA = new CacheConfiguration<>(); 
cfgCompanyA.setName("CompanyA"); 
IgniteCache<String, String> cacheCompanyA = ignite.getOrCreateCache(cfgCompanyA); 

CacheConfiguration<String, String> cfgCompanyB = new CacheConfiguration<>(); 
cfgCompanyB.setName("CompanyB"); 
IgniteCache<String, String> cacheCompanyB = ignite.getOrCreateCache(cfgCompanyB); 

任何幫助是值得歡迎的。

回答

3

我建議爲每個租戶創建單獨的緩存。這兩種方法的性能不應該不同,但數據將更好地彼此隔離,這將簡化代碼。

1

這取決於您的要求。我不是Apache Ignite專家,所以我會在一般水平上解決這個問題。

論據爲單獨的高速緩存:

  • 接入是更有效的,有在鍵
  • 緩存器沒有租戶的處理和用於一個租戶可以共同位於和更容易地移動
  • 的緩存配置是每個客戶端,它使您能夠控制保證的延遲和每個客戶端的資源使用率

針對單獨緩存的參數:

  • 共享緩存爲您提供了一個可控的和最佳的資源使用率。如果你有單獨的緩存爲租戶,高速緩存可能會佔用甚至房客不使用你的應用程序資源幾個月
  • 如果租戶要動態地添加,你需要拿出一個概念來管理所有的高速緩存配置

一個很好的替代方案是使用使用兩者的混合物:

  • 把租戶的,緩存鍵的所有時間
  • 實現,可能需要每個租戶數據的高速緩存池
  • 允許多個高速緩存池和緩存池分配給租戶的能力

這使您可以:

  • 有更大的發展和(單元)的單個高速緩存池與多個租戶甚至測試。簡化開發設置。
  • 分配大量租戶的獨家緩存池
  • 分配低容積租戶共享緩存池,在資源使用優化
  • 新租戶在共享池中啓動,或者可能是你有一個「免費增值」和「試用」池與其他資源限制。
  • 低容積租戶可以來去無此代碼(斯卡拉)改變緩存配置