我正在使用NodeJS構建API。我們的主API是使用Java編寫的,其中所有的ID都是加密的(一個例子是AA35794C728A440F)。解決非常繁重的加密算法?
節點API需要使用相同的加密算法來兼容。
在對API進行測試期間,我驚訝地發現它只能處理每秒25至40個區域(取決於我測試過的AWS EC2實例)的請求數,並且CPU是最大化。
深入研究,我發現問題在於使用的算法,特別是它每個加密/解密密鑰執行1000 md5操作。
刪除加密使得吞吐量大幅增加,每秒處理1200個請求。
我堅持使用算法 - 在不影響API的許多消費者的情況下不可能進行更改,所以我需要找到一種解決方法。
我想知道什麼是最有效的方法來處理這個問題,牢記我需要能夠'加密'或'解密'?
我的問題不在於如何使算法更有效率,因爲我希望避免每個ID爲1000 md5的操作,而是繞過實際的加密本身。
我正在考慮在地圖或樹中存儲所有的密鑰(最多可能是2,300萬),然後進行查找,但是這意味着需要在存儲庫中拖拽大約30-50MB的ID,消耗大量的內存。
用於緩存的50MB內存對我來說聽起來並不怎麼樣......您也可以使用memcache(可能是AWS ElastiCache)來執行實際緩存 - 這種方式可以輕鬆地在多個服務器上共享... – obe
聽起來像,沒有任何代碼,每個調用都要進行一次重要派生。重要派生被設計得很慢。提供更多關於你想要完成的內容和一些代碼的信息。 – zaph
:)謝謝,這是問題所在。該算法的JavaScript實現確實在每次調用時都完成了KDF。解決問題後重構致電KDF。 – NRaf