本文共 2003 字,大约阅读时间需要 6 分钟。
阿里云消息服务(MNS)与传统消息服务相比,有着无需运维,性能稳定,成本低廉等特性,并且使用的是阿里巴巴集团已经搭建好的网络基础设施,能够保证速度稳定。
对于不了解阿里云消息服务的用户来说,在把自己基于传统中间件搭建的消息服务迁移上云之前,往往都会考虑:我们的数据在云上是不是安全?数据会不会被泄露?云服务是不是稳定?
用户担心的问题,就是阿里云消息服务第一优先级的问题。那么,就跟着小编一起来看一看,阿里云消息服务是如何保障用户的数据安全的。
一. 数据传输
使用云消息服务的第一个环节就是数据传输。在公网环境下的Http数据传输,是有可能被不法分子窃听的。阿里云消息服务的公网域名不仅提供常见的Http接口,也提供了Https的接口()。Https能够对用户传输的数据自动做证书加密,从而避免了网络传输过程中的数据泄密。并且,用户使用Https接口不会增加任何额外费用。在HttpRequest的Header里,消息服务也设置了一个Date字段,可以避免用户的网络包被第三方截获后进行持续重放。
二. 数据存储
数据到了云端之后,又是如何存储的呢?会不会数据被其他用户看到?会不会存储数据的机器本身出问题?会不会数据因为硬件故障等在云端丢失?
1. 用户隔离
数据传输到Server端之后,阿里云消息服务会把数据打散存储到集群里的多台机器上,并且对数据做了严格的用户隔离。每个用户的数据都存储在单独的逻辑空间,任何用户都是无法访问到其他用户空间的数据的。
如果一个消息服务没有能做到严格的用户隔离,那么我们就会看到它的MessageID等字段是多用户共享的,如果A用户能够构造出B用户的MessageID等字段,那么就很有可能操作到B用户的数据。
2. 物理隔绝
阿里云对于存储数据的数据中心也是有着严格的管理规定,所有更换或故障的存储设施都必须是全部物理处理之后才能离开数据中心。并且,每次删除数据时,对应的磁盘和内存都会被自动进行零值覆盖,确保万无一失。(请参照:)
3. 数据可靠
用户每次发送消息时,后台在返回给用户写成功之前,会确保对应的消息已经被复制到3台不同的物理机上,并且后台的数据复制机制能够保证任何一台物理机故障时其上的数据能够迅速做迁移,时刻保证用户数据3份copy可用,进而实现了非常高的数据可靠性(99.99999999%)。这样的数据可靠性,与其他通过主从备份等传统方式实现的数据冗余,有着根本上的不同。
三. 服务可靠
数据存到云端之后,用户的应用就需要访问云服务了,那么云服务本身是可靠的吗?
1. 多机同时提供服务
对于云端的服务来说,最重要的内容还包括服务的可靠性。对于用户的每个队列,MNS消息服务都有至少两台物理机同时在提供服务,并且任何物理机发生故障时,队列服务单元都会迅速自动迁移,这就保证了任何时刻出现机器故障,都不会影响用户对于队列的使用,进而保证了消息服务的高可用性(99.9%)。
2. 性能可靠
消息服务无论是元数据节点(MetaService)还是数据节点(DataService),都采用了完全分布式的设计,具有非常好的线性扩展能力。并且用户数据也被打散存储在整个飞天集群里,突破了单物理机的存储上限,进而实现了海量的数据存储能力。用户的单队列堆积消息数无上限限制。并且,用户的qps访问量增长时,从几百qps到上万qps都毫无问题。
四. 数据操作
用户从消息服务的队列里,每次读取到一条消息后,都会同时拿到一个可以操作这条消息的Handle。用户可使用Handle来删除数据或修改消息的一些属性。阿里云消息服务提供的这个Handle是有时效性的,会在用户预先设定的时间后失效(默认是30秒,用户可自定义)。消息服务提供的有时效的临时Handle,可以有效避免数据的误操作,也极大降低了Handle泄露可能给用户带来的风险。
五. 权限控制
1. 灵活的访问策略
一些对数据安全要求更高的用户,会有对于数据访问有更严格的权限管理。比如,某些队列只能被指定IP段的Https请求访问,或者某些员工对队列有写权限,某些员工只有读权限等。对于这些更加定制化的权限控制,阿里云消息服务也全部支持。所有这些自定的策略,只需要在阿里云的控制台做一些简单配制即可。
2. 方便的AK管理
在您的移动App或应用程序内,不需要再内置一个高权限的AccessKey了。只需要在需要访问队列时,通过预定的策略申请一个低权限的临时AccessKey即可正常工作,能够有效防止AccessKey的泄露和滥用。
如果您还需要更可靠的数据安全保证,您也可以对传到云上的数据做主动的加密处理。并且,也可以在阿里云消息服务的论坛或旺旺支持群(51222373)随时提出您的问题和需求。
如果您还想了解更多关于阿里云消息服务的性能和产品特点等细节,请移步阿里云消息服务的官网:
转载地址:http://aoybx.baihongyu.com/