如何构建高性能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服务器 ...
随机推荐
- T-SQL基础(4) - 子查询
简单子查询select * from (select custid, companyname from Sales.Customers where country = N'USA') as USACu ...
- linux下改动内核參数进行Tcp性能调优 -- 高并发
前言: Tcp/ip协议对网络编程的重要性,进行过网络开发的人员都知道,我们所编写的网络程序除了硬件,结构等限制,通过改动Tcp/ip内核參数也能得到非常大的性能提升, 以下就列举一些Tcp/ip内核 ...
- POJ3623:Best Cow Line, Gold(后缀数组)
Description FJ is about to take his N (1 ≤ N ≤ 30,000) cows to the annual"Farmer of the Year&qu ...
- String.format()【演示具体的例子来说明】
String.format()[演示样例具体解释] 整理者:Vashon 前言: String.format 作为文本处理工具.为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 Strin ...
- 百度音乐搜索API介绍
百度音乐搜索API的请求地址如下: [html] view plaincopy http://box.zhangmen.baidu.com/x?op=12&count=1&title= ...
- docker 真实---安装基本映像 (一)
浸泡了几天的官方网站,正确docker有了更好的理解.准备着手建立一个公司的开发和测试环境,包含java.python. 环境介绍 首先说明一下我的环境 2物理server(以后简称为主机) 主机A配 ...
- JAVA中的super和this关键字的使用
一 this关键字 this关键字可以出现在构造方法和实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生. this主要有两种用法: 1 用在构造方法中,调 ...
- HDD-FAT32 ZIP-FAT32
在使用U当家U盘启动盘制作工具的时候会看到一个模式的选项,模式分为HDD-FAT32和ZIP-FAT32两个常用的模式,其它的模式几乎用不到的.那么HDD-FAT32和ZIP-FAT32模式到底有什么 ...
- Linux核心regulator建筑和准备
电源引入的物种 (百度百科)LDO这是low dropout regulator,这意味着低压差线性稳压器.它相比于传统的线性调节器.传统的线性稳压器.例如78xx系列芯片需要输入电压比输出电压高2v ...
- 简单搜索dfs, 简单的修剪搜索
选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...