基準測試:Apache Ignite仍然領先于Hazelcast
當在谷歌中搜索Apache Ignite時,發生了一個奇怪的事:Hazelcast的廣告跑到了列表的頂部,建議說Hazelcast比Ignite快50%:
要注意的***個疑點是當你點擊鏈接時,顯示的是Hazelcast與一年前發布的Ignite的1.5版本的比較!另外,一段時間內吹噓自己也是可以的,但是可笑的是這持續了一年而不在頁面中更新基準測試結果。 那好,這可能是Hazelcast營銷團隊的疏忽,既然這樣了,那么就有必要幫助他們展示一下Ignite和Hazelcast***版本的當前狀態。
常規測試
對像Apache Ignite或者Hazelcast這樣的分布式平臺進行測試的最簡單方式是,啟動一個擁有若干節點的集群然后運行一個客戶端進程產生負載再收集測試結果。作為基準,在AWS上準備了一個擁有四臺機器/數據節點的集群,然后負載來自一個單一客戶端機器(或者說應用)。Yardstick作為測試框架,所有的參數和操作方法如下所示:
根據給定的配置,按照在Amazon上運行Yardstick的說明,可以再現如下數據:
非常明顯,在大多數的基本操作中Ignite 1.9.0版本都顯著優于Hazelcast 3.8.1版本,部分場景中甚至領先160%。 同時,也可以發現在部分原子操作中,Hazelcast領先Ignite大約4%,老實說,知道Ignite還有性能改進空間非常好,Hazelcast沒有讓Ignite的性能工程師輕松起來。 然而,發現性能缺陷之后,決定在一個更高的負載下執行同樣的測試集,這樣會更接近生產場景-負載由8臺客戶端機器產生(或者說應用)而不是一臺客戶機,結果令人振奮!下一章中會看到。
高壓測試
上面的Yardstick配置只修改了如下的部分:
在客戶機數量從1個增加到8個之后,再現了如下的結果:
這是從一臺客戶機上獲取的數據,要想獲得一秒內的操作總數,只需要累加即可。從目前這個結果來看,在高負載下,在任何場景的每項測試中Ignite都領先于Hazelcast。 比如,Ignite的ANSI-99 SQL引擎領先Hazelcast的基于謂詞的查詢引擎200%,而在只有一個客戶端的場景中,這個差距只有80%。 甚至,Ignite在先前的atomic-put-get-bs-6場景原子測試中,由落后Hazelcast4%到領先Hazelcast42%。
結論
在產品化時可能總是要決定使用哪個產品,但是一個黃金法則是不要盲目相信廠商提供的官方數據。掌握所有的信息后了解一個產品,然后在自己的場景中進行測試,只有這樣,才能知道哪個產品更適合自己。