如何构建高性能web网站:分布式缓存
一、数据库前端缓冲区
读缓存区
写缓存区
这个时候就使用到了memcached。
二、使用memcached
key-value
首先为了实现快速缓存,我们不会将缓存内容放在磁盘上。基于这个原则,memcached使用物理内存来作为缓存区,当我们启动memcached的时候,须要指定分配给缓存区的内存大小,比方分配4G
s-colin:~ # memcached -d -m 4086 -l 10.0.1.12 -p 11711
memcached 使用key-value 的方式来存储数据,每一个数据之间相互独立,每一个数据都已key作为唯一的索引。
数据项过期时间
网络并发模型
对象的序列化
基于序列化机制,没有能够将更好层次的抽象数据类型转化为二进制字符串。以便通过网络进入缓存server,同一时候。在读取这些数据的时候。二进制字符串又能够转换回原来的数据类型。
三、读操作缓存
反复的身份验证
缓存用户登录状态
四、写操作缓存
通常的数据写操作包含插入、更新、删除,这些操作的同一时候可能又伴随着条件查找和索引的更新。所以这东西的开销往往是让人印象深刻的。
这个时候,就会用到memcached的原子递增操作,其实,也正是由于它,我们才会考虑在訪问量递增更新的应用中引入写缓存,写缓存的本质是,在对数据库的写入操作累积到你程序定义的数量时,它在一次行的去运行这些操作,尽管实际的写入往往会延迟几秒钟。可是通常情况下,我们对写入的操作也不是要求实时的,这样既提高了效率又满足了我们业务的需求,何乐不为?
五、监控状态
空间使用率
持续关注缓存空间的使用率。能够让我们知道何时须要为缓存系统扩容,以避免因为缓存空间已满造成的数据被动淘汰,有些数据项在过期之前被LRU算法淘汰可能会造成一定不良后果。
缓存命中率
终端用户訪问加速节点时。假设该节点有缓存住了要被訪问的数据时就叫做命中。假设没有的话须要回原server取。就是没有命中。取数据的过程与用户訪问是同步进行的,所以即使是又一次取的新数据。用户也不会感觉到有延时。 命中率=命中数/(命中数+没有命中数), 缓存命中率是推断加速效果好坏的重要因素之中的一个。很教科书式的解释,大家自行消化。
I/O流量
我们还须要关注memcached中数据项读写字节数的增长速度,这反应了它的工作量,我们从中能够得知memcached是忙还是空暇。同一时候我们也可能希望在监控系统中集成对memcached的监控,比如cacti监控系统,后面学习。
缓存扩展
以商业逻辑来划分设计
10.0.1.13-->訪问量统计缓存
一是这两台server的工作量均衡么?
二是假设两台仍不能满足须要,那怎样继续扩展呢?
对于第一个问题,严格来说,要想达到真正的均衡是不现实的,因为它们的职责所在不同。它们的开销和訪问率也不尽同样。所以有的仅仅是相对的均衡。
对于第二个问题。增加訪问量统计缓存须要扩展,那么我们准备一台新的server:10.0.1.14.然后将訪问量统计缓存再次划分。相同基于业务逻辑为基础。比如将子网站划分为两部分,让它们分别存储在两台server上,这样就形成了:
10.0.1.12-->用户登录状态缓存
10.0.1.13-->訪问量统计缓存 group1
10.0.1.14-->訪问量统计缓存 group2
基于key的划分方式
举个样例:
取余之前,我们要做一些准备工作,目的是让key变成整数。并且尽量唯一。比方这个key是:jessonlv-1986.htm
我们先对它进行md5运算,得到一个32字节的字符串比方是:e6e87fc57lkji1245lki1547iuhgt632,同一时候也是一个十六进制的长整数,为了节省开销,我们取这个字符串的前5个字节,然后将其转化为十进制数:比方945689,这个时候我们再将这个数字进行“模3”的运算。取余的结果就是我们server的编号,server的编号从0開始。
这里有个问题或许你一直在思考,那就是我们扩展缓存系统后,由于分区算法的改变,会涉及缓存数据须要从一台缓存server迁移到还有一台缓存server的问题,怎样迁移呢?其实,根本不须要考虑迁移的问题。由于是缓存,它应该具备关键时刻牺牲自己的勇气,你必须明确缓存不是持久性存储,而且从引入分布式缓存时就得时刻提醒自己。
没错。当调整缓存区算法后。我们须要时间来等待缓存的重建和预热。但这往往并不影响网站的正常运转,前提是你要依照文章前面堵缓存和写缓存的设计理念来进线路设计。。
。
版权声明:本文博主原创文章,博客,未经同意不得转载。
如何构建高性能web网站:分布式缓存的更多相关文章
- 【读书笔记】2016.12.10 《构建高性能Web站点》
本文地址 分享提纲: 1. 概述 2. 知识点 3. 待整理点 4. 参考文档 1. 概述 1.1)[该书信息] <构建高性能Web站点>: -- 百度百科 -- 本书目录: 第1章 绪论 ...
- 《构建高性能web站点》随笔 无处不在的性能问题
前言– 追寻大牛的足迹,无处不在的“性能”问题. 最近在读郭欣大牛的<构建高性能Web站点>,读完收益颇多.作者从HTTP.多级缓存.服务器并发策略.数据库.负载均衡.分布式文件系统多个方 ...
- 构架高性能WEB网站的几点知识
前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...
- 构建高性能web站点--读书大纲
用户输入你的站点网址,等了半天..还没打开,裤衩一下就给关了.好了,流失了一个用户.为什么会有这样的问题呢.怎么解决自己站点“慢”,体验差的问题呢. 在这段等待的时间里,到底发生了什么?事实上这并不简 ...
- 构建高性能WEB站点笔记三
构建高性能WEB站点笔记三 第10章 分布式缓存 10.1数据库的前端缓存区 文件系统内核缓冲区,位于物理内存的内核地址空间,除了使用O_DIRECT标记打开的文件以外,所有对磁盘文件的读写操作都要经 ...
- 构建高性能WEB站点笔记二
构建高性能WEB站点笔记 因为是跳着看的,后面看到有提到啥epoll模型,那就补充下前面的知识. 第三章 服务器并发处理能力 3.2 CPU并发计算 进程 好处:cpu 时间的轮流使用.对CPU计算和 ...
- 构建高性能web站点笔记一
构建高性能web站点笔记 第三章 服务器并发处理能力 3.1吞吐率 描述服务器在实际运行期间单位时间内处理的请求数.也就是一定并发用户的情况下,服务器处理请求能力的量化体现. 吞吐率的前提包括: 并发 ...
- 【转】构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试
内容参考:构建高性能WEB站点.pdf 一.吞吐率 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力.称之为吞吐率(Throughput),单位是"req/s".吞吐率 ...
- 构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试
内容参考: 构建高性能WEB站点.pdf 一.吞吐率 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力.称之为吞吐率(Throughput),单位是 “req/s”.吞吐率特指Web服务器 ...
随机推荐
- Windows Phone – 裁剪图片 (Crop Image)
原文:Windows Phone – 裁剪图片 (Crop Image) 最近在处理图像的功能,对於图像的比例我也不是非常的清楚,因此,在编辑图片上花了不少时间. 该篇文章主要说明的是:如何对图片选择 ...
- poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它主要的性质. 1.欧拉函数是求小于n且和n互质(包含1)的正整数的个数. 记为φ(n). 2. ...
- 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*
介绍 本文将指导您安装英特尔® 硬件加速执行管理器(英特尔® HAXM),这是一款可以使用英特尔® 虚拟化技术(VT)加快 Android* 开发速度的硬件辅助虚拟化引擎(管理程序). 前提条件 英特 ...
- Everything中文绿色版在Win7/8/10用不了问题的图文教程,只显示盘符
打开Everything后点击菜单上的“工具”——“选项” 勾选 Everything Service 后,点应用 需要用到管理者权限
- android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整
查询到执行的system service后,就能够在dumpsys后面加上service的名字,查看指定的service信息. adb shell dumpsys activity adb shell ...
- iOS发展- backBarButtonItem 颜色/文字修改
iOS7之后. 默认返回button字体颜色为蓝色, 在父母的陈列柜VC(老界面)的title 假设做出改变, 通过下面的方法可以: 1. 更改字体颜色 (1) 在plist里面, 加View con ...
- 【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式
我们在工作中使用文件NSFileManager上课时间,创建发现1对象,此2同样的对象地址: NSFileManager *file1=[NSFileManager defaultManager]; ...
- 猫学习IOS(四)UI半小时就搞定Tom猫
阿土 首先对影响 下载项目的源材料: Tom猫游戏代码iOS 素材http://blog.csdn.net/u013357243/article/details/44457357 效果图 以前风靡一时 ...
- 认识input输入框的placeholder属性
我们来认识下input输入框的placeholder属性. placeholder 属性提供可描述输入字段预期值的提示信息.(placeholder 属性适用于以下的 <input> 类型 ...
- Flex入门(三)——微架构之Cairngorm
大家都知道我们在开发后台的时候,都会使用MVC,三层等分层架构,使后台代码达到职责更为分明单一,高内聚低耦合,比如,Dao层仅仅是进行和数据库打交道,负责处理数据:Service(B层)仅仅是进行逻辑 ...