软件架构设计(十六) Web架构设计(三)

发布于:2023-09-15 ⋅ 阅读:(60) ⋅ 点赞:(0)

上一节我们了解到了,应用集成之后,压力集中在了数据库,而数据库缓解压力的方式有提升数据库本身性能和减少操作数据库的IO操作从而提升效率。

提升数据库本身主要有数据库主从复制,做读写分离提升效率。还有一种就是按照业务进行数据库和表的拆分(垂直分库,水平分表),也就是我们的分库分表操作。

减少数据库的IO操作,因为数据库的数据通常是放在磁盘上,所以读写操作数据库需要进行大量的I/O操作。而减少操作就是使用缓存技术,将查询的数据缓存起来,下次查询之后直接从缓存查询,不再走数据库,从而大大的提升了查询的性能。

而缓存有很多的技术实现,目前主流的趋势就是Redis。我们需要来看一下缓存大概有哪些技术。

1.缓存技术详解

MemCache(曾经用得较多)

MemCache一个高性能的分布式的内存对象缓存系统, 用于动态Web应用以减轻数据库负载。MemCache通过在内存维护一个统一的巨大的Hash表,它用来存储各种格式的数据,包括图像,视频,文件以及数据库检索的结果等。

Redis(主流)

Redis是一个开源的使用C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。

Squid

Squid是一个高性能的代理缓存服务器,Squid支持FTP,gopher,HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的,非模块化的,I/O驱动的进程来处理所有的客户端请求。