互联网发展史与架构演变
- 优化阶段一:小型网站LAMP架构,一台server平天下
- 优化阶段二:各个角色独立部署,提高并发
- 优化阶段三:添加缓存进一步提高性能
- 总结
- 上面的互联网发展与架构演变中引入了一个分布式缓存的角色
- 即使在现如今,分布式缓存也是非常重要的!
- 互联网开发两个重要定律: —李智慧,《大型网站技术架构-核心原理与案例分析》
- 网站性能优化第一定律: 优先使用缓存优化性能 !
- 网站访问二八定律: 80%的用户请求,集中在20%的热门数据上面 (应该要将这20%的热门数据放到缓存中,用以提高性能)
NoSQL的引入
互联网三高带来的挑战
- 1.对数据库的
高并发读写
的需求 - 2.对海量数据的
高效存储和访问
的需求 - 3.对数据库
高可用和高可扩展性
的需求 - 以上需求传统的关系型数据库如MySQL/Oracle都很难满足
传统数据库的其他问题
- 1.事务
- 2.读写实时性
- 3.复杂sql
- 以上的传统数据库的特点/优势,在现如今的web时代,有些场合是不需要的,要了反而影响性能
NoSQL应运而生
- 因为以上的种种原因,传统的关系型数据库无法完全满足web新时代的需求
- 所以诞生了NoSQL技术,NoSQL技术有如下的特点:
- 1.易扩展
- 2.高性能
- 3.高可用
- 4.灵活的数据模型
NoSQL技术列举
- 注意:NoSQL不是一个具体的技术, 而是一类技术的广义统称, 根据不同的应用场景,可以分为如下几类:
-
1.
Key-Value数据库
- 如Redis, 里面储存的数据主要是K-V格式, 可以支持根据key高效查询,但是缺少结构化
-
2.
列式数据库
- 如HBase,里面的数据以列簇的形式进行存储,方便压缩,支持列的高效查询,但是一般不支持sql
-
3.
文档型数据库
- 如
MongoDB
,主要存储json格式
的数据,但是查询语法不统一,一般不支持sql
- 如
-
4.
图形数据库
- 如
Neo4J
,主要存储图结构,如社交网络,但是不太容易做分布式集群
- 如
-
Redis脱颖而出
-
1.为什么大厂都在使用Redis
- Redis能从众多NoSQL数据库中脱颖而出,一个很重要的原因就是因为Redis的高性能
- 官方的测试数据,单台Redis 读11w次/s , 写8w次/s
-
2.Redis官网介绍
-
3.Redis作者
-
Redis作者Salvatore Sanfilippo的github
-
4.Redis的特点
- 4.1
高效性
- 4.2
原子性
(支持高并发,线程安全的) - 4.3
支持多种数据结构
- 4.4
支持持久化
(可以存内存也可以存磁盘) - 4.5
支持过期时间,支持半事务
…
- 4.1
-
5.注意:
- Redis很优秀但是不能取代MySQL, 因为Redis的ACID(原子性,一致性,隔离性,持久性)特性实现的很简单, 不如MySQL严格
-
6.注意:
- 和Memcached的区别:
- Memcached是Redis之前诞生的比较流行的NoSQL, 不支持数据持久化(也就是数据都存在内存中)
- Redis可以理解为是Memcached的改进版/plus版…