[服务器架构及memcached部署中一致性Hash的应用]

上传人:sx****84 文档编号:242876801 上传时间:2024-09-10 格式:PPT 页数:31 大小:1.45MB
返回 下载 相关 举报
[服务器架构及memcached部署中一致性Hash的应用]_第1页
第1页 / 共31页
[服务器架构及memcached部署中一致性Hash的应用]_第2页
第2页 / 共31页
[服务器架构及memcached部署中一致性Hash的应用]_第3页
第3页 / 共31页
点击查看更多>>
资源描述
Click to edit Master title style, 2005 Autodesk,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,31, 2005 Autodesk,*,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level, 2005 Autodesk,1,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level, 2005 Autodesk,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level, 2005 Autodesk,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level, 2005 Autodesk,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level, 2005 Autodesk,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,网站服务器架构,&,分布式存储,memcached,提纲,硬件架构,服务器划分,带宽的计算,2 .,网站架构的演变过程,3.,软件架构,Web,服务器集群负载均衡,分布式缓存,CDN,内容分发系统,数据库集群,NoSql - key-value,存储,服务器划分,对于访问量大的网站而言,将网站的各个部分拆分分别部署到不同服务器上是很有必要的。例如将图片和,web,站点分开一般而言,在网站的整个服务器部署上分为如下几种类型:,文件服务器:,一般存储系统的相关图片和文件,给各个子系统提供统一的文件调用,代理服务器:,一般使用,linux+Nginx,作为反向代理,web,服务器:,.net,中最常用的,Web,服务器,IIS,,,Mono,中一般使用,Nginx,应用服务器:,负责系统中各个业务逻辑的提供,比如用户中心,结算中心,支付中心等,缓存服务器:,提供,MemCached,缓存服务,数据库服务器:,负责网站数据的提供,一般为,Sqlserver,mysql,oracle,等,带宽的计算,假设网站每天要承受,100,万,pv,的访问量,计算带宽要涉及到两个指标,(,峰值流量和页面平均大小,),带宽单位为,bps(bit/s),。,1,、假设峰值流量为平均流量的,5,倍;,2,、假设每次访问的平均页面大小为,100KB,左右。,1B=8b-1B/s=8b/s(1Bps=8bps),1KB=1024B - 1KB/s=1024B/s,1MB=1024KB-1Mps=1024KB/s,100,万,pv,访问量一天平均分布,折合每秒大约访问,12,次,页面大小为字节,(Byte),总共访问页面大小就是,12*100KB=1200KB,1Byte=8bit,则,1200KB=9600Kb,,,9600Kb/1024,大约,9Mb/s(9Mbps),,我们网站在峰值流量时一定要保持正常访问,则真实带宽应该在,9M*5=45Mbps,左右。,网站架构的演变过程之一,公司刚刚起步,业务量不大,往往可能在某个虚拟主机空间商租用一个虚拟主机和一个数据库就搭建了一个最基本的网站,网站架构的演变过程之二增加缓存,随着业务量增加,用户的访问越来越多,网站经常性的打不开,慢,甚至出现数据库链接达到最大限制数,这个时候需要针对网站做一些优化策略:,减少,Http,请求,压缩,css,,,js,,图片的大小,增加页面缓存和增加数据缓存处理,cnblogs,上的缓存全解析,自购服务器进行,IDC,托管,自购服务器能够提升硬件的档次以及带宽可以自由控制,一般都是独享带宽,相比共享带宽来说能够支撑更多的访问量,网站架构的演变过程之三增加,web,服务器,当系统访问量的再度增加,,webserver,机器的压力在高峰会上升到比较高,这个时候开始考虑增加一台,WebServer,,但是增加一台,WebServer,的时候意味着要在两台的服务器上分别建立相同的站点,那么就会出现如下问题:,如何让访问分配到这两台机器上?,Nginx,如何保持状态信息的同步,例如用户,session,等?,如何保持数据缓存信息的同步?,如何让上传文件这些类似的功能继续正常?,网站架构的演变过程之四分库,分表,分布式缓存,通过增加,web,服务器享受了一段快速访问的幸福后,发现系统又开始变慢了,经过查找,发现数据库写入、更新的这些操作的部分数据库连接的资源竞争非常激烈,导致了系统变慢,这下怎么办呢?,分库,分表,Memcache,Redis,分布式缓存,垂直分区,user,blog,App,通用,框架,水平分区,user 33%,user 33%,App,通用,框架,user 34%,blog,blog,blog,水平分区程序改进,水平分区,VS,垂直分区,架构演变过程之五,Web,园或增加更多,WebServer,在做完分库分表这些工作后,数据库上的压力已经降到比较低了,这个时候可能到了下一个瓶颈,查看,windows,的性能计数器发现有大量的阻塞请求,于是可以做,Web,园或者添加一些,webserver,服务器。在这个添加,webserver,服务器的过程,有可能会出现如下几个问题:,一台,Nginx,服务器的软负载已经无法承担巨大的,web,访问量了,可以用硬件负载解决,F5,或应用从逻辑上做一定的分类,然后分散到不同的软负载集群中,原有的一些状态信息同步、文件共享等方案可能会出现瓶颈,需要进行改进,也许这个时候会根据情况编写符合网站业务需求的分布式文件系统等;,在做完这些工作后,开始进入一个看似完美的无限伸缩的时代,当网站流量增加时,应对的解决方案就是不断的添加,webserver,。,架构演变之六读写分离和廉价存储方案,通过增加,web,服务器享受了一段快速访问的幸福后,发现系统又开始变慢了,经过查找,发现数据库写入、更新的这些操作的部分数据库连接的资源竞争非常激烈,导致了系统变慢,这下怎么办呢,读写分离,订阅和发布,廉价存储方案,Nosql,NoSQL = Not Only SQL,指的是非关系型的数据库。随着互联网,web2.0,网站的兴起,传统的关系数据库在应付,web2.0,网站,特别是超大规模和高并发的,SNS,类型的,web2.0,纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。,NoSql,数据库,大量应用于微博系统等事务性不强的系统,BigTable,MongoDB,架构演变之七进入大型分布式应用时代和廉价服务器群梦想时代,经过上面这个漫长而痛苦的过程,终于再度迎来了完美的时代,不断的增加,webserver,就可以支撑越来越高的访问量了,但是原来部署在,webserver,上的那个,web,应用已经非常庞大了,当多个团队都开始对其进行改动时,相当的不方便,复用性也相当糟糕,基本上每个团队都做了或多或少重复的事情,而且部署和维护也是相当的麻烦,因为庞大的应用包在,N,台机器上复制、启动都需要耗费不少的时间,出问题的时候也不是很好查,另外一个更糟糕的状况是很有可能会出现某个应用上的,bug,就导致了全站都不可用,还有其他的像调优不好操作(因为机器上部署的应用什么都要做,根本就无法进行针对性的调优)等因素,根据这样的分析,开始痛下决心,将系统根据职责进行拆分,于是一个大型的分布式应用就诞生了,通常,这个步骤需要耗费相当长的时间,因为会碰到很多的挑战:,1,、拆成分布式后需要提供一个高性能、稳定的通信框架,并且需要支持多种不同的通信和远程调用方式;,2,、将一个庞大的应用拆分需要耗费很长的时间,需要进行业务的整理和系统依赖关系的控制等;,3,、如何运维(依赖管理、运行状况管理、错误追踪、调优、监控和报警等)好这个庞大的分布式应用。经过这一步,差不多系统的架构进入相对稳定的阶段,同时也能开始采用大量的廉价机器来支撑着巨大的访问量和数据量,结合这套架构以及这么多次演变过程吸取的经验来采用其他各种各样的方法来支撑着越来越高的访问量。,Nginx,负载均衡,CDN,内容分发系统,Memcached,部署技巧,Nginx,是什么?,Nginx(engine x),是一个高性能的,HTTP,和,反向代理,服务器,也是一个,IMAP/POP3/SMTP,代理服务器,。,Nginx,是由,Igor Sysoev,为俄罗斯访问量第二的,Rambler.ru,站点开发的,它已经在该站点运行超过四年多了。,Igor,将源代码以类,BSD,许可证的形式发布。自,Nginx,发布四年来,,Nginx,已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了,Nginx,,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了,Nginx,,如六房间、酷,6,等。 新近发现,Nginx,技术在国内日趋火热,越来越多的网站开始部署,Nginx,。,squid,Nginx,中文,Wiki,Nginx,的安装,Windows,下的实践:,Linux,下才是真正的利器,张晏的技术博客,Nginx,在,Ubuntu,下的安装配置,1.,利用命令,sudo apt-get install nginx,Ubuntu,安装之后的文件结构大致为:,所有的配置文件都在,/etc/nginx,下,并且每个虚拟主机已经安排在了,/etc/nginx/sites-available,下,程序文件在,/usr/sbin/nginx,日志放在了,/var/log/nginx,中,并已经在,/etc/init.d/,下创建了启动脚本,nginx,默认的虚拟主机的目录设置在了,/var/ (,有的版本 默认的虚拟主机的目录设置在了,/var/www,请参考,/etc/nginx/sites-available,里的配置,),2.,启动,nginx,sudo /etc/init.d/nginx start,然后就可以访问了, 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。 (安装完后如出现,403,错误,那可能是,nginx,配置文件里的网站路径不正确),Nginx,在,Ubuntu,下的安装,3.,配置,Nginx.conf,文件实现负载均衡,Vim,/etc/nginx/nginx.conf,打开配置文件,在,http,中配置如下信息:,upstream testsite,server 127.0.0.1:9090 down;,server 127.0.0.1:8080 weight=2;,server 127.0.0.1:6060; weight=1;,server 127.0.0.1:7070 backup;,server ,listen 9988;,server_name 127.0.0.1;,Nginx,在,Ubuntu,下的安装配置,location /,include /usr/local/nginx/conf/proxy.conf; proxy_pass ;,配置文件正确性验证,Sudo /usr/local/nginx/sbin/nginx -t,如果屏幕显示以下两行信息,说明配置文件正确:,the configuration syntax is okthe configuration was tested successfully,配置完毕以后 执行,sudo /etc/init.d/nginx -s reload,(,force_reload,)进行,nginx,的平滑重启使配置生效,Nginx,在,Ubuntu,下的安装配置,这样,nginx,就会在启动之后开始侦听本地,IP,(,127.0.0.1,)的,9988,端口请求,当用户访问时,nginx,会将其请求转向到,testsite,中所指定的两个,iis,站点,并将执行的结果转发给客户端。我们刷新两次会看到第一次返回的是站点,1,的页面,那么第二次就会是站点,2,的页面,这样就达到了负责均衡的效果。,实现多台服务器之间状态共享和数据共享,1,、使用分布式缓存,不需将所有状态存入缓存服务器,2,、,ip_hash,4,、,upstream_hash,CDN,内容分发网络,CDN,的通俗理解就是网站加速,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度慢等问题。网宿,睿江,蓝讯,MemCached,分布式缓存,1,、在,windows,下安装,Memcached,参考:,MemCached for Windows,安装与状态查询,MemCached for .net,使用实例,2,、在,Ubuntu,下安装,MemCached,在,Linux,上安装,Memcached,服务,3,、,memcached,在分布式系统架构中扮演重要角色,memcached,在分布式系统架构中的应用,memcached,在分布式系统架构中的应用,固定机器数量时,保证对相同,key,的访问会被发送到相同的服务器,一致性,Hash,算法,分布式架构中,节点的故障是不可避免的,当添加和删除某一节点时,会导致大量散列数据失效,需要重新散列。这意味着这些丢失的数据要去数据库中请求一次以后才能按照,hash(key) /,服务器数,=,服务器编号 重新散列缓存到对应的服务器上。这对于高访问量的系统来讲影响是非常大的。,人们采用,一致性,Hash,来解决此类问题,一致性,Hash,算法增删服务器后的命中率测试,测试随机生成的众多,key,是否会平均分布到各个结点上测试结果如下,:,节点增删测试,:,在环上插入,N,个结点,每个节点,50,个虚拟结点。随机生成众多,key,,在增删节点时,测试同一个,key,选择相同节点的概率,测试如果如下,:,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!