使用轻量消息队列(原 MNS)中HttpEndpoint接口鉴权时如何提高鉴权性能

概述

使用轻量消息队列(原 MNS)中的HttpEndpoint接口鉴权时,远程请求公钥证书比较耗时,本文主要介绍提高鉴权性能的方法。

问题原因

轻量消息队列(原 MNS)的每个推送请求中都会携带公钥证书地址,可根据公钥证书地址,通过键值对(Key-Value)的方式缓存证书。之后只要证书没有更新,就可以从内存中直接获取证书,减少每次远程请求的耗时。如果证书更换,证书名和地址可能会随之更新。

解决方法

在处理推送请求时,根据x-mns-signing-cert-url参数中的地址从缓存中直接获取证书。如果获取失败,则通过远程访问证书并存储到缓存,以便下次使用,可参考如下示例。

例如,公钥证书地址为:https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem,可使用如下方式缓存公钥证书。

typedef map<string, string> cache;
cache["x509_public_certificate.pem"] = "$content";
cache["x509_public_certificate.pem.version2"] = "$content2";