- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
目 录 分布式缓存介绍 海量数据存储基础 平台服务部署及Web框架 编写优雅代码 Unread架构介绍 一次服务上线 平台RPC框架介绍 Feed架构介绍 本文档使用 看云 构建 - 2 - 分布式缓存介绍 分布式缓存介绍 原文出处 :http///p/1001643872772421209951 作者 :赖佳俊@LierD 微博作为目前最大的中文社交媒体平台 ,拥有着上亿的日活用户。我们每天都会面临各种非常具有挑战性 的业界技术难题。其中最具挑战性的几类问题是 : 1. 海量数据存储。微博总量已经超过千亿数据。海量数据的存取是一个非常大的技术挑战 2. 巨大的并发请求。主feed接口的设计需要面对4倍于日常请求峰值的情况。 3. SLA要求高。核心系统需要保证至少4个9的稳定性 ,核心接口平均响应时间1s内需要达到4个9 我们在解决上述的几类挑战中 ,结合自身的业务场景以及实际请求情况 ,设计出了高容量、可扩展、具有 稳定性保障等特点的服务架构。本文主要结合微博平台的业务场景以及个人对分布式缓存的使用经验和体 会来做说明介绍。 文章主要从以下几个方面来展开 : (1 )缓存介绍 ,包括缓存的引入 ,缓存内存分配策略 ,以及淘汰算法等基本要点说明 (2 )分布式缓存架构 ,主要结合平台缓存使用中碰到的问题以及一些考虑点 ,说明缓存系统的变迁。 本文档使用 看云 构建 - 3 - 分布式缓存介绍 1. 缓存介绍 1.1 为什么引入缓存 1.2 Memcached 2\. 分布式缓存 2.1 分布式 ? 2.2 分布式缓存实现 结尾 : 1. 缓存介绍 1.1 为什么引入缓存 在传统的后端架构中 ,由于请求量以及响应时间要求不高 ,我们经常采用单一的db的结构。如下图1 所 示 ,应用服务器直接存取DB。这种架构简单 ,但也存在着如图中所描述的问题 ,即DB存在性能瓶颈 ,随 着请求量的增加 ,单DB无法继续稳定提供服务。 对于请求量不大的场景 ,我们可以通过对DB进行读写分离、一主多从、硬件升级 (SSD )等方式提升系统 的承载能力以及冗余能力 ,但这几种提升方式存在着以下几个缺陷 : (1 )性能提升有限。很难得到量级上的提升 ,而大部分互联网产品直接面对着千万级用户访问 ,单一使 用db的结构 ,难以达到性能要求 (2 )成本高昂 ,为了达到N倍的承载能力的提升 ,需要至少N倍以上DB服务器 图1 传统服务架构 那么我们是否有更好的方式来做呢 ? 相信大家在学习操作系统的时候 ,一定看过如图2 类似的一组数据 : 本文档使用 看云 构建 - 4 - 分布式缓存介绍 图2 各类存储介质的访问速度 从图2中可以看到 ,一次内存寻址的时间大概在100ns ,顺序从内存中获取1MB数据的时间大概在 250000ns。对应的 ,我们可以看到一次磁盘寻址以及顺序读取磁盘的速度大概在千万ns级别。这里我们 可以得出一个结论 ,也即内存数据的获取速度大概在磁盘的获取速度的两个数量级。也因此我们可以通过 引入缓存中间件 ,来提高系统整体的承载能力 ,原有的单层db结构也可以变为如图3所示的缓存+db结 构。 图3 DB+缓存 本文档使用 看云 构建 - 5 - 分布式缓存介绍 通过在应用服务与DB中间引入缓存层 ,我们可以得到如下三个好处 : (1 )读取速度得到提升 (2 )系统扩展能力得到大幅增强。我们可以通过加缓存 ,来让系统的承载能力提升 (3 )总成本下降 ,单台缓存即可承担原来的多台DB的请求量 ,大大节省了机器成本 常见的缓存服务有本地缓存 ,memcached ,redis等。他们各有自己的特点 ,本文以下内容主要是结合微 博对于me
文档评论(0)