负载均衡与缓存
一,什么是负载均衡
通俗一点来讲:在高并发,大数据环境下给服务器减压的,分为硬件和软件。其中:
1,硬件方面:硬件负载均衡就是多台服务器以对称的方式组成服务器集合,把压力平均分配给每台服务器,比如使用DNS负载均衡(后续详解)是最有效最简单的方法!
其中横向负载均衡和纵向负载均衡,横向扩展通过服务器群集,多台服务器技术来实现,横向扩展的好处是,有了更多的机器,如果某台机器挂掉无法工作了,仍然可以使用其他机器来处理负载;纵向扩展通过扩展服务器硬件资源,例如CPU、内存、硬盘、网卡等,但是纵向扩展一般费用比较昂贵!
2,软件方面可以利用缓存技术
首先缓存是什么?缓存的作用?
缓存是一种以空间换取时间的技术,也就是把你想要得到的数据,存放在内存中一段时间,在你设置的时间之内服务器不会去读取数据库的记录,而是通过缓存直接读取你存放在内存中的数据。
缓存的优点:缓存是网站性能优化不可缺少的数据处理机制,他能有效缓解数据库压力,就像我们目前正在做的抢购活动,同一时间网站的访问量非常高,如果不使用缓存的数据,客户点击一次就查询一次数据库,这样的设计造成服务器压力可想而知,如果我们使用了缓存技术,设置要缓存的时间,在这段时间内客户点击N次和点击一次是完全一样的,因为都是读取缓存中的数据。
我们平时开发中用到的缓存技术:页面缓存、数据缓存、控件缓存、配置文件设置缓存,下面来依依介绍:
页面缓存,<%@ OutputCache Duration='10' VaryByParam='none' %> 这条指令标签为该页面添加缓存,Duration这个参数指定页面缓存时间为10秒,VaryByParam这个指定页面参数,如下图:
<asp:ObjectDataSource ID='ObjectDataSource1' runat='server' EnableCaching='True' CacheDuration='10' CacheExpirationPolicy='Absolute'> </asp:ObjectDataSource>
给控件设置缓存:例如给一个TextBox控件设置缓存:如下图

webConfig中的配置
<system.web> <caching> <outputCacheSettings> <outputCacheProfiles> <addname='cache' duration='60'/> </outputCacheProfiles> </outputCacheSettings> </caching> </system.web>
然后在页面中设置
<%@ OutputCache CacheProfile='cache' VaryByParam='none' %>接下来介绍重量级的缓存技术 memcached
那什么是memcached呢?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发 生。
Memcached的使用
一 、Memcached服务器端的安装 (此处将其作为系统服务安装)
memcached服务器端以及客户端类库(开源软件,下载即可)
其中,客户端类库包括以下几个DLL:
Memcached.ClientLibrary.dll
ICSharpCode.SharpZipLib.dll
log4net.dll
下载地址
二,安装memcached服务器端
将memcached.exe复制到任意目录下,如 c:,在命令行输入:memcached.exe -d install memcached将作为一个服务常驻系统内存了
三,配置

Memcached Providers更强大,MemcachedProviders是对Enyim.Caching的再次封装,并加入了客户端计数器功能以及Session数据库管理功能。。当然,使用和配置起来也同样简单,方便,只是对于一些负责的操作和处理方面,功能更强大一些。如果只是简单的应用,推荐直接使用enyim.com Memcached Client。除了添加必要的Enyim.Caching.dll引用,还需要修改应用程序的配置文件。
C#代码
public void testEnyimCaching() 24. { 25. MemcachedClient client = new MemcachedClient('enyim.com/memcached'); 26. //存值 --不带过期时间的存储,Memcached将根据LRU来决定过期策略 27. bool result = client.Store(Enyim.Caching.Memcached.StoreMode.Add, 'name', 'dinglang'); 30. if (result) 31. { 32. Response.Write('成功存入缓存'); 33. 34. //取值 35. object name = client.Get('name'); 36. if (name != null) 37. { 38. Response.Write('取出的值为:'+name); 39. } 40. else 41. { 42. Response.Write('取值失败'); 43. } 44. } 45. else 46. { 47. Response.Write('存入缓存失败'); 48. } 49. }配置文件
<configuration> <sectionGroup name='enyim.com'> <section name='memcached' type='路径' /> </sectionGroup> </configSections> <enyim.com protocol='Binary'> <memcached> <servers> <add address='127.0.0.1' port='11121' /> </servers> <socketPool minPoolSize='10' maxPoolSize='100' connectionTimeout='00:00:10' deadTimeout='00:02:00' /> </memcached> </enyim.com>这是我自己摸索到的一些,更深入的待后续学习再继续完善该文章
memcached缓存书籍,供大家学习
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/equal/12301.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
ZooKeeper集群安装
时间:2021-01-10
-
KeepAlive详解
时间:2021-01-10
-
Spark教程 构建Spark集群(
时间:2021-01-10
-
高效搭建Spark完全分布式集
时间:2021-01-10
-
负载均衡与缓存
时间:2021-01-10
-
Hadoop2.2.0NNHA详细配置+Cli
时间:2021-01-10
-
Mongodb集群搭建过程及常见
时间:2021-01-09
-
DRBD+HeartBeat架构实验
时间:2021-01-09
热门文章
-
Nagios监控生产环境redis集群服务实战
时间:2021-01-08
-
Spark教程 构建Spark集群(1)
时间:2021-01-10
-
SqlServer横向扩展负载均衡终极利器SqlSer
时间:2021-01-08
-
Kafka集群安装
时间:2021-01-09
-
WAS集群系列(13):举例WAS集群下ear包部
时间:2021-01-08
-
Memcached基础知识
时间:2021-01-08
-
KeepAlive详解
时间:2021-01-10
-
WAS集群系列(12):集群搭建:步骤10:通
时间:2021-01-08
-
Cloudera Manager 4.6 安装部署hadoop CDH集群
时间:2021-01-09
-
DRBD+HeartBeat架构实验
时间:2021-01-09
