zoukankan      html  css  js  c++  java
  • 从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类

  • 相关阅读:
    sss
    sss
    sss
    sss
    sss
    sss
    sss
    线程池--相关接口
    NIO(3)--Selector
    SpringBoot--整合Mybatis+druid
  • 原文地址:https://www.cnblogs.com/beckbi/p/14092647.html
Copyright © 2011-2022 走看看