2017-05-30 61 views
0

我們有不同的微服務,它們會對內部和外部服務進行重複調用。我們需要在服務之間緩存這些調用以改善延遲。我們正在考慮引入一個API網關,其主要目標是緩存服務之間的數據。 其他一些目標是 -針對不同微服務的緩存層

i)將調用不同的微服務來聚合他們的響應。

ii)也將避免跨微服務對外部服務的多次呼叫。

iii)會照顧緩存未命中&命中外部API調用。

iv)高吞吐量,高性能和低延遲。

我們有基於vert.x的技術堆棧。 什麼是實施這樣的系統的最佳方式。我有以下問題 -

1)實現它作爲一個圖書館或服務?

2)要使用哪個數據存儲(我們正在考慮Redis/Hazelcast)?

3)像Varnish/Squid/Nginx這樣的庫可以幫助嗎?

4)如何處理緩存失效?

+0

「如何處理緩存失效?」 - 你應該從這個問題開始 –

+0

「像Varnish/Squid/Nginx這樣的庫可以幫助你」 - 這些是服務器,而不是庫 –

+0

如果你的主要焦點是緩存,那麼爲什麼不使用EHCache呢? –

回答

0

我覺得你有很多選擇:

  1. Redis的
  2. Redis的哨兵(支持羣集)
  3. ETCD(從CoreOS):支持集羣
  4. 阿帕奇的Geode
  5. 塞式:支持羣集甚至在數據中心之間

an d許多商業產品,如SAP HANA。

注意:Aerospike是免費的,但對於數據中心之間的集羣我認爲您應該支付。

我自己使用ETCD爲相同的情況(感謝布蘭登飛利浦)。