【更新中】Java架构师成长直通车:主从复制高可用Redis集群

Coding Alan 5年前 (2020-01-08) 6587次浏览 0个评论 扫描二维码

分布式阶段的主要内容

  • 分布式缓存中间件 Redis
  • 分布式会话与单点登录
  • 分布式搜索引擎 Elasticsearch
  • 分布式文件系统
  • 分布式消息队列
  • 分布式锁
  • 数据库读写分离与分库分表
  • 数据库表全局唯一主键 id 设计
  • 分布式事务与数据一致性
  • 接口幂等设计与分布式限流

本文主要内容

分布式架构概述

什么是分布式架构?

  • 不同的业务(功能模块)分散部署在不同的服务器
  • 每个子系统负责一个或多个不同的业务模块
  • 服务之间可以相互交互与通信
  • 分布式系统设计对用户透明
  • 可以发展为集群分布式系统架构

分布式架构优点

  • 业务解耦
  • 系统模块化、可重用化
  • 提升系统并发量
  • 优化运维部署效率

分布式架构缺点

  • 架构复杂
  • 部署多个子系统复杂
  • 系统之间通信耗时
  • 新人带入团队缓慢
  • 调试复杂

设计原则

  • 异步解耦
  • 幂等一致性
  • 拆分原则
  • 融合分布式中间件
  • 容错高可用

LVS+Nginx实现高可用集群中的架构有一个缺点是服务端对数据库的请求并不存在“屏障”,这样数据库在高并发时会承担巨大的压力,而缓存中间件如Redis可以很好地解决这一问题。

Nosql 和分布式缓存

什么是 NoSql?

  • Not Only Sql
  • 传统项目使用纯数据库
  • 为互联网和大数据而生
  • 水平(横向)扩展方便高效
  • 高性能读取
  • 高可用
  • 存数据、做缓存

NoSql 常见分类

  • 键值对数据库:Redis, Memcache
  • 列存储数据库 :Hbase, Cassandra
  • 文档型数据库:MongoDB, CouchDB
  • 图形数据库:Neo4J, FlockDB

分布式缓存及Redis 简介

什么是分布式缓存?

  • 提升读取速度性能
  • 分布式计算领域
  • 为数据库降低查询压力
  • 跨服务器缓存
  • 内存式缓存

什么是Redis?

  • NoSql
  • 分布式缓存中间件
  • key-value 存储
  • 提供海量数据存储访问
  • 数据存储在内存里,读取更快
  • 非关系型、分布式、开源、水平扩展

缓存方案对比

Ehcache

优点:

  • 基于 Java 开发
  • 基于 JVM 缓存
  • 简单、轻巧、方便

缺点:

  • 集群不支持
  • 分布式不支持

Memcache

优点:

  • 简单的 key-value 存储
  • 内存使用比较高
  • 多核处理、多线程

缺点:

  • 无法容灾
  • 无法持久化

Redis

优点:

  • 丰富的数据结构
  • 持久化
  • 主从同步、故障转移
  • 内存数据库

缺点:

  • 单线程
  • 单核

安装和使用

安装

下载地址:https://redis.io/

客户端使用

Redis 的数据类型

注:方括号中为可选项

默认类型为string

hash

list

set

set会进行去重操作

zset

有序 set

完整命令参考:官方文档中文翻译

 

常见问题

1、(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist o

 

喜欢 (2)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址