《分布式中间件技术》学习笔记

254 阅读3分钟

分布式系统

一种独立的基础系统软件或服务程序,处于操作系统软件和用户的应用软件中间

特点

  1. 内聚性、透明性

    建立在网络上

  2. 可扩展

    动态扩展,提高系统整体的处理能力

    垂直扩展:优化性能、升级硬件

    水平扩展:增加服务器

  3. 可用和可靠性

    可用性:给定周期内系统无故障运行的总时间

    可靠性:给定周期内系统无故障运行的平均时间

  4. 高性能

    高并发:单位时间内处理的任务越多越好

    低延迟:每个任务处理的时间越少越好

  5. 一致性

    保证多个节点在给定的时间内,操作的数据只有一份

由来

由业务量和用户量增加而诞生,并推动相关技术发展

如何理解

程序A和程序B分别运行在两台计算机,相互协作完成同一个功能

发展历程

  1. 单点集中式Web应用系统架构

    数据库、应用的War包、文件的上传存储,都部署在同一台服务器上

    优点:发布便捷

    缺点:服务器宕机,整个应用无法访问;数据库和文件数据量越来越大,服务器容量有限

  2. 应用服务、文件服务、数据库服务拆分

    三个服务独立部署,服务器宕机后,其他服务仍可使用

    缺点:并发量上升,单台服务器性能有限

  3. 引入缓存和集群

    缓存:热点数据放入缓存(Redis),减少数据库访问压力,提高用户并发请求性能

    集群:减少单台服务器的压力

  4. 数据库读写分离、反向代理、CDN加速

    读写分离:提高数据库存储性能

    反向代理、CDN:提高系统访问速度

  5. 分布式文件系统和分布式数据库

    系统大量请求某些表,根据业务拆分数据库

常见问题

  1. 网络问题

    网络延时、丢包

  2. 节点故障

    需要保证某个节点故障后,该节点负责的计算和存储任务转移到其他节点上

分布式中间件

缓存中间件—Redis

基于内存、采用key-value结构化存储NoSQL(非关系型)数据库,支持字符串String、列表List、集合Set、有序集合SortedSet、哈希Hash

应用场景
  1. 热点数据存储、展示
  2. 最近访问的数据
  3. 并发访问
  4. 排名
常用命令
-- 进入redis的命令行
./redis-cli -p 6380

-- 查找所有的key
keys *

-- 新增或更新conf:123的值为123
set conf:123 123

-- 获取conf:123的值
get conf:123

-- 删除conf:123
del conf:123
常见问题
  1. 缓存穿透

    频繁访问数据库中不存在的key,导致每次都要查询数据库

    解决方案:数据库中没有查询到数据时,返回Null,同时塞入缓存,指定过期时间

  2. 缓存雪崩

    在某个时间点,缓存的数据失效,大量查询请求涌入数据库,导致压力暴增

    解决方案:设置不同的、随机的过期时间,错开失效时间点

  3. 缓存击穿

    在某个时间点,热点Key过期失效,持续的高并发请求直接涌入数据库,导致压力暴增

    解决方案:热点Key设置为永不过期

end