Redis 哨兵集群 哨兵集群哨兵机制是在 redis 2.8 引入的,核心功能就是当主库发生故障自动故障转移,它本质其实就是一个 redis 进程,下图就是一个基本的哨兵集群。 故障转移的基本流程是, 监控-选主-通知 哨兵在运行的时候,会周期性(一秒)的给所有的节点发送 PING 命令来检测节点是否处于正常状态。如果节点没有在配置时间内响应那么就会被标示为下线状态。如果是主库被下线,哨兵会按照一定的规则在从库中选取 2023-03-21 redis #哨兵机制 #哨兵集群
Redis 切片集群 切片集群假设需要有30G的数据需要存入到 redis, 所有数据放一个实例中虽然是可行的, 但是如果把蛋都放在一个篮子里务必就会产生很多风险和副作用。譬如: 当数据增多时只能纵向扩展,且到了一定阶段还需要考虑到硬件成本问题。 如果是使用 RDB 进行持久化时,Redis 会 fork 父进程的页表给子进程,页表的数量上,数据越大,页表越多,复制就越花时间,导致 redis 性能下降。 譬如这个 2023-03-20 redis #切片集群
设计模式汇总 设计原则 设计原则 创建型 单例模式 工厂模式 生成器模式 原型模式 结构型 代理模式 桥接模式 装饰器模式 适配器模式 组合模式 外观模式 享元模式 行为型 观察者模式 模版模式 策略者模式 责任链模式 状态模式 迭代器模式 访问者模式 命令模式 备忘录模式 解释器模式 中介者模式 2023-03-19 设计模式 #设计模式
设计原则 前言设计原则是指导代码设计的一些经验总结。设计原则这块儿的知识有一个特点,那就是这些原则听起来都比较抽象,定义描述都比较模糊,不同的人会有不同的解读。它们共同的目标都是高内聚低耦合,高内聚用来指导类的设计,低耦合用来指导类之间的依赖关系,高内聚有助于松耦合,松耦合需要高内聚的支持。 SRP 单一职责原则原则定义:一个类或者模块只负责完成一个职责(或者功能)。类和模块可以有两种理解,一种理解是把模块 2023-03-17 设计模式 #设计原则
设计模式 <行为型> | 中介者模式 中介模式(Mediator Pattern)中介模式定义了一个单独的中介对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。 结构图: 角色: 抽象中介者(Mediator):接口声明了与组件交流的方法,但通常仅包括一个通知方法。 具体中介者(Concrete Mediator):封装了多种组件间的关系。 具体中介者通常会保存所有组件的引用并对其 2023-03-15 设计模式 #设计模式 #行为型
设计模式 <行为型> | 解释器模式 解释器模式(Interpreter Pattern)任何可以承载信息的载体,都可以称之为语言,语言如果想被理解,需要按照特定的语法去编排生成,解释器就是根据语法规则去解释语言。 结构图: 角色: 抽象表达式(Abstract Expression):声明解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。 终结符表达式(Terminal Expression):实现与语 2023-03-15 设计模式 #设计模式 #行为型
设计模式 <行为型> | 备忘录模式 备忘录模式(Memento Pattern)在不暴露对象实现细节的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。 结构图: 角色: 发起人(Originator):类可以生成自身状态的快照, 也可以在需要时通过快照恢复自身状态。 备忘录(Memento):存储发起人状态快照,在进行恢复时提供给发起人需要的状态。 管理者(Caretaker):备忘录管理 2023-03-14 设计模式 #设计模式 #行为型
设计模式 <行为型> | 命令模式 命令模式(Command Pattern)命令模式将请求/命令封装为一个对象,可以使用不同的请求参数化其他对象,并且能够支持请求的排队执行、记录日志、撤销等功能。 结构图: 角色: 发送者(Sender)/触发者(Invoker):负责对请求进行初始化,其中必须包含一个成员变量来存储对于命令对象的引用。 命令(Command):接口通常仅声明一个执行命令的方法。 具体命令(Concrete Co 2023-03-14 设计模式 #设计模式 #行为型
设计模式 <行为型> | 访问者模式 访问者模式(Visitor Pattern)访问者模式就是将对象和对象本身的动作解耦,让操作可以独自变化。 结构图: 角色 抽象访问者(Visitor):为每一个具体元素类声明一个具体访问者的操作。 具体访问者(Concrete Visitor):实现抽象访问者中的操作。可以有多个实现。 抽象元素(Element):接口申明一个 accept 方法表示接受访问者的访问。该方法必须有一个参数被声明 2023-03-13 设计模式 #设计模式 #行为型
设计模式 <行为型> | 迭代器模式 迭代器模式(Iterator Pattern)迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。集合对象也可以叫容器、聚合对象。 结构图: 角色: 迭代器(Iterator):声明遍历集合所需的一系列操作。 具体迭代器(Concrete Iterators):实现迭代器申明的所有接口。 集合(Collection):声明一个或多个方法来获取与集合兼容的迭代器 2023-03-13 设计模式 #设计模式 #行为型