2016-10-04 162 views
0

我正在特定項目中將我的存儲庫更改爲hazelcast。 我需要通過數據範圍,商店類型和商店ID找到一些文件。 在我的測試過程中,我使用一個實例c3.large獲得了90k的吞吐量,但是當我使用更多實例執行相同的測試時,結果顯着下降(10個實例500k和20個實例700k)。 這些數字是最好的,我可以調整一些屬性:帶謂詞問題的大量查詢

  • hazelcast.query.predicate.parallel.evaluation
  • hazelcast.operation.generic.thread.count
  • 赫茲:查詢

我試圖將實例更改爲c3.2xlarge以獲取更多的處理,但數字不合理價格。

如何在此場景中優化hazelcast更快? 我的用戶案例不使用map.get(key),只使用map.values(謂詞)。

設置:

  • Hazelcast 3.7.1
  • Map作爲數據結構;
  • 使用複雜對象IdentifiedDataSerializable;
  • 已配置地圖索引;
  • 地圖上只有2000個文件;
  • 由Spring Boot Application(singleton)配置的Hazelcast嵌入式;
  • 同一地區的所有實例。

測試

  • 加特林
  • 了New Relic的服務監視器。

任何幫助是值得歡迎的。謝謝。

回答

0

如果你的用例只包含帶謂詞的map.values,我強烈建議使用object類型和內存中的存儲模型一樣。這樣,查詢執行過程中就不會有任何序列化。

另一方面,當您只有1個成員時,獲得非常高的數字是正常的。因爲,沒有數據在網絡上移動。有可能改進,我會檢查具有高網絡容量的EC2實例。例如c3.8xlarge具有10 Gbit網絡,與c3.2xlarge自帶的High相比。

我不能保證,你可以得到多少增加,但我肯定會先嚐試這些更改。

+0

感謝您的回答。我使用對象類型作爲內存中的存儲模型。 根據這篇文章,我正在採取所有最佳做法: http://blog.hazelcast.com/for-faster-hazelcast-queries/ 我認爲微服務規模策略是水平的而不是垂直的。 –