其中专用高速缓存配置使用?(Which Dedicated Cache configuration

2019-07-19 18:37发布

一个大型的电子商务网站正在寻求从共享缓存的会话缓存切换到专用高速缓存。

它通常是在中等规模的服务器上运行(5-6)......在繁忙的时候,它是在20台中的服务器上运行。 在非常繁忙的时候,它是不是不合理的具有每秒2000+的请求到现场

处于同一位置的缓存足够好的位置,或者必须缓存在奉献工作者角色?

此外,必须高可用性的会话数据启用? 该网站依赖于会话的数据出现了良好的用户体验。 但缓存仍保持为Azure的Blob存储,所以我不知道我完全获得高可用性选项

Answer 1:

使用专用的角色取决于你想要多少角色运行,而无论是否你的Web角色的内存使用情况决定,如果他们规模。 例如,如果你的Web角色总是推内存使用,它是内存和CPU不说是向外扩展的触发 - 再考虑使用专用的角色缓存,您的网络角色就可以处理负载更长的时间。 如果你的Web角色是CPU密集型的,对每个角色到缓存中,然后专内存可能是首选。 您还需要考虑到,如果在专用的角色运行,则需要多个角色来处理负载和可用性,因此,即使在非繁忙时间,你将有运行缓存至少3个角色(但可能更少Web角色) 。 您可能还希望,如果你做大量的部署或缩减的,只能使用专用高速缓存 - 在角色有意而频繁停机。

在协同定位的作用缓存一个考虑是,如果你有粘性会话的等待时间会比较低,因为该项目是在同一台机器上。 不幸的是,Azure的负载均衡是循环赛,不粘腻可言,使会话回来相同的机率低的机会(时间为5个角色1/5)。 这意味着大部分的时间缓存项将是从集群中的另一个角色,所以协同定位时延的好处都将丢失牵强。

高速缓存分配和内存 - 没有Blob存储,我知道的(除了“集群的运行状态” - 无论是加载到缓存中的项目提供给其他机器与机器集群上它被存储(在内存中)上(读取从机器B到机器A不还其存储在机器A - 见下面的评论)。缓存的项目总是在只读存储器和高速缓存大小受可用内存的限制。

高可用性选项可复制的项目一个单独的机器(不存储),因此,如果一台机器出现故障时,仍然有一个副本的地方。 高可用性也将使用更多的内存,作为一个项目在两个不同的地方使用内存。 失败也许对您的电子商务应用足够低的机会 - 如果一个项目没有被缓存(无论是通过故障或失效),它可以从重建持续的数据。 如果你是,例如,保持在篮下缓存和不持久化存储,你不想当一个角色回收它失去了 - 在这种情况下,高可用性可能是最好的选择。



Answer 2:

大答案@SimonMunro然而,在我的经验,Azure的协同定位缓存不适合生产 。 我们的负载测试已经向我们表明,当一台服务器被回收,它需要的时间长的特殊时期的高速缓存来恢复。 我们已经从我们的数据库然而我们的网站嘎然而止获取数据,由于数据库上的应力编码反对这一点。 这不仅当一个节点被再循环发生; 而且,如果你扩展您的云服务上下; 甚至当你执行一个VIP交换。

我们已经进行使用Azure的专用高速缓存相同的测试,并发现它处理高速缓存辅助角色回收很少的情况下,以该网站的性能没有影响。 这是我的建议是 ,如果你想让你的网站进行使用在所有情况下在Azure专用高速缓存



文章来源: Which Dedicated Cache configuration to use?