memcached部署(如何在AWS上部署千万用户级别服务)
本文目录
- 如何在AWS上部署千万用户级别服务
- 分布式部署session怎么共享
- 如何更新MemcacheD Is Your Friend缓存
- 同一个java做的系统部署在两台服务器上,两台服务器用的同一个数据库,应该怎样做缓存啊
如何在AWS上部署千万用户级别服务
基础架构AWS分布在全球12个区域里每个区域对应着一个地理位置,里面含有多个Availability Zones(可用区)。这些区域设置在北美,南美,欧洲,中东,非洲,亚太区。每个AZ实质上是单个数据中心,尽管它们可由多个数据中心构建。每个AZ有着独立的供电系统和互联网连接。不同AZ之间以低延迟网络进行连接,这种快速网络可消除物理位置带来的速度影响。每个区域含有至少两个AZ,共计32个AZs。借助AZ可创建高可用性的程序架构。AWS在全球还分布有53个偏远区域(Edge locations)偏远区域的使用对象是CloudFront,这是Amazon的内容分发网络(CDN)和DNS服务器。偏远区域的存在使得全球用户都可以享用低延迟网络而不论他们身在何处。建立区块服务(Block Services)Amazon透过AWS创建了大量高可用和高容错的服务,具体的服务清单可点击这里查看。缴纳一定的费用,你就可以在个人的应用中使用这些服务而不必为高可用性而忧心。部分服务位于一个AZ中:CloudFront, Route 53, S3, DynamoDB, Elastic Load Balancing, EFS, Lambda, SQS, SNS, SES, SWF。即使是使用单个AZ的服务,其高可用架构也是足够强大的。1个用户在这个时候,开发者=用户。你的架构看起来是这样的:运行单个实例,如t2.micro。你可以为你的服务器选择不同的CPU,内存,存储设备和网络环境。该服务器承载了全部web任务,如:web应用,数据库,管理器等。使用AmazonRoute 53进行DNS管理。为该实例附加一个Elastic IP地址。那么随着用户数的增加,我们需要如何进行升级改造,直至能为千万用户提供优质的服务呢?强调文字优化策略采用多主机模式尝试使用Amazon数据库服务,如Amazon RDS(关系数据库),Amazon DynamoDB(NoSQL数据库),Amazon Redshift。逐步从SQL数据库转为NoSQL数据库,特别是数据量超过5TB,你的应用对低延迟敏感的时候。使用Elastic Load Balancer(弹性负载均衡器),它可以对主机进行健康检测以确保网络的通畅,同时可以帮助实现网络的扩展。垂直升级需要更强的实例类型,例如c4.8xlarge或者m3.2xlarge。停止使用当前的服务器,换用功能更强大的机器,如:244GB RAM,40核CPU。某些Amazon服务提供了Provisined IOPS选项以便用户自行配置变更,这样一来用户可以使用类似DynamoDB的扩展服务。类似上面的做法就叫做垂直升级。但其有个缺点,就是一旦机器出错,你的网站也会停止运作了。所以要尽量避免单个实例的做法。自动扩展如果你一直在为峰值负载而努力,如黑色星期五,那么其实是在浪费金钱。更好的解决方案列表内容是按需分配,这就是Auto Scaling(自动扩展),在计算机群组中实现自动化的大小变更。你可以为你的容量池定义最大值和最小值。CloudWatch是一个管理服务,已内置到所有的Amazon应用中。CloudWatch事件会触发扩展。触发事件可以是CPU占用率,时间延迟,网速等等。你也可以向CloudWatch导入自定义基线,按照你的意愿来触发扩展。架构分解使用SOA/微服务,使你的服务层组件化。这样做的好处是单独的服务可以独立地进行扩展,从而大大增加了灵活性和可用性。SOA是Amazon提供的重要架构组件。避免重复劳动把精力投入到能使你的业务与众不同的事情上。Amazon提供了很多高容错的服务。例如,排队(SQS服务),邮件,转码,搜索,数据库,监控等等。所以类似的服务都不必再次编写了。用户数》千万+当用户达到千万级别的时候,你考虑的策略应该是这样的:多AZs模式在不同层之间执行ELB(弹性负载平衡)。除了web层,在应用层,数据层等层里也需要进行ELB。能够自动扩展使用面向服务的架构缓存架构内和外的数据使用Amazon S3和CloudFront。S3用于存储静态数据,如js,CSS,图像等,具有足够的扩展性。CloudFront可对数据进行缓存。使用Amazon SES来进行邮件发送。使用CloudWatch进行监控。对数据写入执行如下的策略:联结 – 根据功能划分不同的数据库。分表 – 把一个数据集分解到多个主机上。把部分功能放到其他类型的数据库上(NoSQL,graph等)。不断优化你的应用和整个架构堆栈,针对瓶颈进行分析并找出解决方法。
分布式部署session怎么共享
session的复制与共享在web应用中,为了应对大规模访问,必须实现应用的集群部署.要实现集群部署主要需要实现session共享机制,使得多台应用服务器之间会话统一, tomcat等多数主流web服务器都采用了session复制以及实现session的共享. 但问题还是很明显的:在节点持续增多的情况下,session复制带来的性能损失会快速增加.特别是当session中保存了较大的对象,而且对象变化较快时,性能下降更加显著.这种特性使得web应用的水平扩展受到了限制.session共享的另一种思路就是把session集中起来管理,首先想到的是采用数据库来集中存储session,但数据库是文件存储相对内存慢了一个数量级,同时这势必加大数据库系统的负担.所以需要一种既速度快又能远程集中存储的服务:memcached使用memcached来存储session有两种方案:(1)直接通过tomcat6的扩展机制实现.(2)通过自己编写filter实现.考虑到系统的扩展,我们采用这种方案.这样可以使session共享机制和中间件脱钩.主要思路:1)继承重构HttpServletRequestWrapper,HttpSessionWrapper类,覆盖原来和session存取相关的方法呢,都通过SessionService类来实现.2)使用filter拦截cookie中的sessionId,通过sessionId构造新的HttpServletRequestWrapper对象,传给后面的应用.3)SessionService连接memcached服务,以sessionId作为key,存取的对象是一个map.map的内容即为session的内容.使用过程注意几个问题和改进思路: 1、memcache的内存应该足够大,这样不会出现用户session从Cache中被清除的问题(可以关闭memcached的对象退出机制)。 2、如果session的读取比写入要多很多,可以在memcache前再加一个Oscache等本地缓存,减少对memcache的读操作,从而减小网络开销,提高性能。 3、如果用户非常多,可以使用memcached组,通过set方法中带hashCode,插入到某个memcached服务器
如何更新MemcacheD Is Your Friend缓存
步骤如下:1、php安装Memcached插件。2、WordPress安装Memcached缓存插件(MemcacheD Is Your Friend)。3、部署Memcached内存缓存图形化界面监控页面。
同一个java做的系统部署在两台服务器上,两台服务器用的同一个数据库,应该怎样做缓存啊
缓存和数据库没有关系吧,你加个memcached或者redis,两台服务器可以共用同一套缓存。
更多文章:
浮点型变量存入整型变量(c语言 向浮点型变量里输入整型数据)
2024年8月3日 15:10
汽博两轮车驾考哪里学(考驾照去哪里考学车要多少钱考试又要多少钱)
2024年7月2日 08:30
sql2000卸载无法找到安装日志文件(无法找到安装日志文件 无法卸载SQL SEVER 2000)
2024年7月24日 22:00
google翻译api官网(google翻译有没有自动检测语种的api)
2024年6月30日 02:52
construct的动词(construction的动词形式)
2024年5月16日 04:02
django学习(学Python Django学得很迷茫,怎么办)
2024年7月6日 00:35
正则表达式匹配字符串c(如何使用正则表达式匹配C语言的变量名定义规则)
2024年7月1日 16:28
java if else if语句的用法(java中if,elseif判断和双if判断一样吗)
2024年7月23日 03:46