从0开始架构二

从0开始架构(二)

读写分离

  1. 主从,一主多从

复制延迟

  1. 读写主
  2. 读失败读主
  3. 关键业务主,非关键读写分离

分配机制

  1. 程序代码封装【TDDL】
    1. 实现简单
    2. 每个编程语言实现一次
    3. 故障下,主从切换,所有配置都需要修改并重启
  2. 服务端代码,mysql proxy atlas

业务分库遇到的问题:

  1. join操作问题
  2. 事务问题
  3. 成本问题

水平拆分&垂直拆分

路由:hash路由,配置路由

高性能NOSQL

  1. 行存储
  2. schema扩展不方便
  3. 关系库搜索功能比较弱

nosql的4类

  1. k-v存在 redis
  2. 文档数据库 mongodb
  3. 列式数据库 hbase
  4. 全文搜索引擎 es

缓存穿透

  1. 数据不存在
  2. 缓存数据生成耗费大量时间或者资源

缓存雪崩

  1. 更新锁
  2. 后台更新机制

缓存热点,拆分

单机服务器高性能的关键:服务器采取的并发模型

  1. 服务器如何管理连接
  2. 服务器如何处理请求

操作系统的io模型和进程模型

  1. io模型:阻塞,非阻塞,同步,异步
  2. 进程模型:单进程,多进程,多线程

PPC,prefork

TPC,prethread

Reactor:单reactor单进程,单reactor多线程,多reactor进程、线程

单reactor单进程(例如redis)

  1. reactor的select监控连接事件,然后dispatch
  2. accept接收连接
  3. handler read+write+业务

单reactor多线程

  1. reactor 处理select和dispatch
  2. accept 建立连接
  3. read + send
  4. processor 业务

多reactor多线程

  1. main reactor
    1. select dispatch
    2. accpet
  2. subreactor
    1. select dispatch
    2. read-handler-send

例子:nginx,mc,netty

proactor

  1. 用户进程,注册事件,注册io
  2. 内核进程

高性能负载均衡

  1. dns
  2. 私有dns
  3. F5&A10
  4. 软件负载均衡:lvs和nginx

大系统的负载均衡: 地理位置级别,集群级别,机器级别的

负载均衡算法

  1. 任务平分类
  2. 负载均衡类,根据负载来分配
  3. 性能最优类
  4. hash类

轮询,加权轮询,负载最优先,性能最优,hash类

原文地址:https://www.cnblogs.com/beckbi/p/14092647.html