服务器上阵列卡的缓存有什么用
作用具体体现在读与写两个不同的方面:作为写,一般存储阵列只要求数据写到 Cache 就算完成了写操作,当写 Cache 的数据积累到一定程度,阵列才把数据刷到磁盘,这样可以实现批量的写入。所以,阵列的写是非常快速的。至于 Cache 数据的保护,一般都依赖于镜像与电池 ( 或者是 UPS) 。Cache 在读数据方面的作用,当所要读取的数据能在 Cache 中命中的话,将大大减少磁盘寻道所需要的时间,存储的 Cache 大小对整个 I/O 性能的影响是非常大的。
使用WEB高速缓存重定向技术可以为用户带来以下好处:
减少带宽消耗
由于需要在网上通过的请求和响应减少,降低了托管客户对互联网带宽的占用,因此可节省大量的带宽资源。
减少服务器载入
服务器处理的请求减少,可以减少服务器的载入。
减少用户通入时间
因为对缓存请求的响应是立即可以获得的, 不仅极大地缩短了互联网静态页面访问的响应时间,而且也大大提高了托管客户的WEB服务器对于不可缓存的内容的处理能力,因此可以在现有网络和设备条件下提供更好的内容访问服务。
增加吞吐量
在客户投资最少的情况下增加服务器的内容访问服务能力。
增加可靠性
由于具有持续高性能的互联网服务质量,系统的冗余性和故障恢复能力,因此可有效地保证高峰值业务量的服务能力。
缓存设备工作是在比路由器更高的层次上,能够把用户所要访问的网络信息抓到本地,在最短的时间内将信息连续、完整、实时地传递给最终用户。可以说,缓存技术降低了目前广域网通讯带宽成本,是提升互联网访问性能的最好方法。
此外,Web Cache的功用远不止存储和提供数据。Cache是作为基于软件的代理服务器的一部分或专门的硬件(appliances,容器)出现的,它可以提供更好的性能。Cache设备可在用户端储存最常浏览的网页内容,随时提供给用户存取,还可同时监控内容的来源,以测知网页是否已更新,并同步更新储存的内容。
一般来说,在配置了互联网加速设备后,由于很多用户浏览的内容可以从高速缓存中直接调出,网络效能会有明显的大幅提升:网页响应时间最多可以减少90%以上;频宽使用率将增加30%~50%。高速缓存服务通常包括:共享内容高速缓存服务、独享内容高速缓存服务。
管理存根区域的DNS服务器称为存根DNS服务器。一般情况下,不需要单独部署存根DNS服务器,而是和其他DNS服务器类型合用。在存根DNS服务器和主服务器之间同样存在着区域复制
缓存DNS服务器
缓存DNS服务器即没有管理任何区域的DNS服务器,也不会产生区域复制,它只能缓存DNS名字并且使用缓存的信息来答复DNS客户端的解析请求。当刚安装好DNS服务器时,它就是一个缓存DNS服务器。缓存DNS服务器可以通过缓存减少DNS客户端访问外部DNS服务器的网络流量,并且可以降低DNS客户端解析域名的时间,因此在网络的广泛的使用。例如一个常见的中小型企业网络接入到Internet的环境,并没有在内部网络中使用域名,所以没有架设DNS服务器,客户通过配置使用ISP的DNS服务器来解析Internet域名。此时就可以部署一台缓存DNS服务器,配置将所有其他DNS域转发到ISP的DNS服务器,然后配置客户使用此缓存DNS服务器,从而减少解析客户端请求所需要的时间和客户访问外部DNS服务的网络流量
这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来。关于Redis与Memcached的比较更是比比皆是。然而,Redis真的在功能、性能以及内存使用效率上都超越了Memcached吗?
没有必要过于关注性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。
在内存使用效率上,如果使用简单的key-value存储,Memcached的内存利用率更高。而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis。因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构,并支持更丰富的数据操作。通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
根据一些专家的调查分析,发现企业在使用数据库的时候,90%以上主要用来查询。有些企业这个比例甚至更高。也就说,用户对数据库的操作,其实更新操作占的比例很少。大部分的操走都只是查询操作。
如一些论坛,大部分用户只会看贴,而不会发帖。这就是一个典型的查询操作比例大大超过更新操作比例的例子。针对这种情况,其查询操作往往是其数据库性能的瓶颈。如何有效提高查询的性能,这就使各个数据库专家在考虑的问题。在SQL Server数据库中,已经有了一个现成的解决方案。数据库管理员可以利用缓存服务器来提高数据库的性能。笔者这里就以SQLServer2008为例,谈谈如何利用缓存服务器来实现负载均衡,来提高数据库的查询效率。
一、 数据查询与数据更新分开走。
如上图所示,如果用户要查看某个帖子,其就会打开某个连接。此时WEB应用服务器就会从后台数据库中查询相关的记录。这里需要注意的是,由于其只是查看帖子,而不涉及到更新的操作,为此WEB应用服务器就只从缓存服务器中读取数据。这个缓存服务器中的记录跟数据库服务器的内容是同步的。WEB应用服务器在从数据库缓存服务器读取数据之前,还会先判断一下哪台数据库服务器比较空。会优先连接到比较空闲的数据缓存服务器中,然后从这台服务器中读取数据。所以,当访问这个论坛的用户比较多时,这个数据缓存服务器能够实现负载均衡的需要。
如果用户看了某个帖子,现在需要发表一个评论,此时后台数据库会怎么操作呢注意,当WEB应用服务器发送了一个 Update更新操作的时候,其应用服务器会自动连接到数据库服务器,而不会再连接到数据库缓存服务器。而是直接向数据库服务器发送更新操走的语句。当数据库服务器更新了相关的内容之后,会与数据库缓存服务器实现数据的同步。从上图中可以看出,整个数据查询与数据更新WEB应用服务器是分两条路走。其实这就好像是公路上分道行驶,机动车走机动车道;非机动车走非机动车道。
如此的话,就不会因为非机动车比较慢,而影响到机动车的速度。在这个方案中,将数据库的更新操作与查询操作分开来走,也是类似的道理。在查询时,数据流是单向流动的,所以能够在很大程度上提高查询的效率。从而让数据负载均衡的效果更加明显。总之,当某个应用程序查询操作大大超过更新操作时,通过在多个数据库间缓存只读数据,并在数据库间均匀连接客户端以分发负载,则就可以向外扩展工作负荷的读取分区,即实现负载均衡的目的。
二、 采用这个方案需要注意的地方。
在部署这个解决方案时,仍然有些数据库管理员需要关注的内容。如以下这些内容,数据库管理员需要根据企业的实际情况来进行调整,以提高这个方案的价值。
首先需要考虑数据缓存服务器与数据库服务器之间同步的频率问题。这个同步操作是一把双刃剑。若同步的频率太高,会影响数据库服务器与缓存服务器的性能;若同步频率比较低的话,则数据库缓存服务器中的数据得不到及时的更新。
如此的话,用户查询时可能在短时间内无法获取最新的数据。所以,一般来说,系统滞后的时间应该尽量的短,即数据库服务器的更新内容必须尽快与数据库缓存服务器进行同步。
理想的状态时,在更新数据库服务器的同时更新数据库缓存服务器。但是,这么做是以牺牲数据库与数据库缓存服务器的性能为代价的。为此数据库管理员在实施这个解决方案时,往往不会这么做。而是设置在一段时间之后同步。如可以设置为10秒、60秒、300秒或者更长的时间后进行同步。
具体这个同步的时间间隔多少为好,没有一个统一的标准。这需要数据库管理员根据企业对数据同步的要求不同而定。一般来说,数据库管理员在满足用户需要的前期下,可以将这个时间设置的相对长一点。这可以避免因为过多的同步操作而降低了这个方案的价值。其实,对于大部分用户来说,60秒左右的时间差异还是可以接受的。如在论坛中,一个人发帖后,在一分钟之后看到一般不会有什么问题。对于人的感觉来说,这个一分钟时间不长。但是对于数据库服务器来说,这一分钟可以做很多事情。所以,适当延长这个同步时间,却可以在很大程度上提高数据库服务器性能。这个时间的代价,有时候还是值得的。
其次,在数据库服务器与数据库缓存服务器之间,应该建立比较直接的、快速的网络连接。当用户比较多时,数据库服务器与数据库缓存服务器之间若发生同步操作,则会造成很多的网络流量。有时候同步操作发生时,影响这个工作的效率可能并不是数据库服务器或者数据库缓存服务器本身,而是他们之间的网络连接。
由于其可用的带宽跟不少数据库服务器系统的吞吐量,从而影响到了同步操作的效率。为此,在数据库服务器与数据库缓存服务器之间的网路连接,应该尽量的直接。如最好不要在中间夹着其他的不必要的网络设备;也最好不要在他们之间配备防火墙等安全策略。这些安全策略与网络设备都会在很大程度上影响到这个同步操作的效率。
另外,最好也不要有其他的应用服务来争抢带宽。所以简单的说,如果可能的话,在数据库服务器上部署多张网卡,直接与数据库源服务器实现双机互联,而那传输同步操作需要的数据,这是一个很不错的手段。由于其数据传输更直接、而且其他设备或者应用服务也会来争夺其带宽,同时又可以克服他们的非法攻击。为此,只要他们之间多距离比较短的话,采用这种方案可能效果会比较好,可以在最大程度内缩短这个同步操作所需要的时间,从而让其他用户尽早看到更新的数据。
第三为同步选择合适的复制方案。
那么该如何实现数据库服务器与缓存服务器之间的同步呢在SQLServer数据库中,有三个方案可供数据库管理员选择。这三个方案分别为快照复制、合并复制与事务复制。这三个复制模型各有各的特点。不过从最终效果来看,其都可以实现数据库服务器与数据库缓存服务器之间的同步。不过由于其内部的实现机制不同,为此其虽然结果相同,但是从性能等方面考虑,还是有差异的。
各种复制模型的原理与特点属于基本知识的范畴,笔者在这里就不做过多阐述了。笔者认为,在利用这个数据库缓存服务器来实现负载均衡的方案中,最好采用事务复制的同步方案。因为相比其他方案来说,事务日志能够满足事务的一致性、数据库服务器系统比较大的吞吐量、同步时尽量少的开销、以及系统比较短的滞后时间等等需求。
另外在有些企业中采用这个方案的话,还要考虑到表与记录的过滤需求。而通过事务复制的话,就可以实现对列和行的过滤。而其他复制模型的话,只能够部分满足这些需求。
所以,笔者认为,在选择数据同步方案时,可能选择事务复制来实现同步,更加的合适。不过最终是否真是如此,还是要求数据库管理员根据企业的实际需要,然后分别采用几个复制模型来进行测试,才能够得出真正合理的结果。
0条评论