架构解读

高性能架构

关注点 性能指标,性能测试,性能优化

具体优化内容如概述所示

如何合理使用缓存

1. 读写比再2:1 以上
2. 没有热点的访问
3. 数据的不一致以及脏读  缓存达到失效时间,才能从数据库中重新加载
4. 缓存可用性  一旦缓存奔溃,请求会直接打到db 引起雪崩
5. 缓存预热
6. 缓存穿透  恶意攻击 并发请求不存在的缓存数据,有可能引起mysql打挂策略是针对null值也进行缓存预热

分布式缓存架构

采用redis 高性能 功能丰富 高可用部署 持久化方式

redis 集群的3种方式 主从,哨兵,cluster
cluster redis存储不同的内容,通过节点互连来保证数据传输,当节点大多数失败的时候,集群才会失败。集群有16000+的slot 寻找每个key在哪个slot中 通过crc函数来确定key落在哪个机器上,从而保证高可用

为了保证每个节点的高可用,可在每个节点挂载几个从服务使用哨兵来监控

高可用方案 master/slaver复制, RDB快照持久

实践

性能优先的关闭复制,aof 和快照
master 关闭rdb/aof,开启master/slaver
slaver 开启rdb/aof
开启复制或者持久  预留1倍空间
多实例时,一次执行bgsave 避免fork进程
故障切换
image
  1. 当1出现故障时
  2. config server 根据error log 等等查出是master发生故障, 需要进行master/slaver切换
  3. 通知slave 修改配置信息
  4. 每个app连到新的master并发送请求
  5. 根据analysis 工具分析出原master已经没有任何app连接之后,通知config server
  6. 将slave 切换成master
  7. 如果原master恢复成活,则将其变成新master 的slaver
分布式方案

codis集群方案:

codis用途 codis是用来服务redis集群的方案。作用是充当客户端到redis集群的中间件

codis 分为四个部分 codis-proxy codis-dashboard codis-server zookeeper/etcd

原理:

codis 一共有1024个slot ,当redis 发现内存不足的时候,codis 会 crc() /1024 找到对应的slot 将slot 指向不同的redis 实例 这样就实现了扩容

自动均衡策略 codis会在闲时监控 slot 是否平衡 然后会自动进迁移

reids迁移速度 并行迁移 非常快

槽位同步:

通过zookeeper 来进行同步管理 当config 发生变化时,zookeeper能够感知并提醒codis-server 进行槽位同步

3.0之前的是用 pre-sharding + client-side-routing(用户侧路由) 做分布式方案
3.0之后用redis cluster

pre-sharding 节点部署初期,就提前考虑日后的存储规模,建立足够多的实例(如128个节点)

原理:
有n台主机 m个实例 那总实例= n*M
当业务低的时候 n少 m多
当业务高得时候 n多m少 这样能保证总实例不变 但是性能能够提升

理论:

一台机器部署多个实例,当容量不够的时候将其中实例拆分到不同的机器上

拆分过程:

  1. 在新机器上启动对应的redis实例
  2. 配置新端口为待迁移端口的从库
  3. 复制完成后,切换所有客户端到新的从库端口
  4. 将其从库晋升为主库
  5. 移除老端口实例
  6. 重复以上过程保证所有端口都迁移成功

单点故障问题
也是高可用的解决方案 master/slaver集群的设定 主备切换

如何做容量管理

cpu不是瓶颈,io跟内存才是
设置maxmemory跟阈值报警
设置缓存策略
设置合理过期时间

什么是缓存策略(查看redis 缓存设计以及常用问题)

高可用架构

关注点 可用度度量与考核 基本架构也是3层架构 应用,服务,数据层

通过负载均衡进行无状态服务的失效转移

高可用策略

1. 分级管理
2. 超时设置
3. 异步调用
4. 服务降级
5. 幂等性设计

数据高可用存储

含义:
    数据持久性
    数据可访问性
    数据一致性

如何实现

1.数据备份
2.失效转移机制

CAP理论

一个提供数据的存储服务无法同时满足数据可用性,数据一致性,分区可伸缩性这3个特点

现象:当前大多数的分布式系统满足 分区可伸缩性以及数据高可用性,但是由于集群的增加,出现故障的概率增加,导致很难实现每个节点在任何瞬间都能保持数据的一致性 其就是保证a p,不保证c

伸缩性架构

关注点 2类方式 不同服务器部署不同的服务 二是不同的服务器部署相同的服务集群

根据业务 可以分成水平拆分跟垂直拆分

核心在于负载均衡

负载均衡在各个网络层级中都有不同的做法

  1. http重定向负载均衡
  2. dns域名解析负载均衡 根据A记录来进行负载均衡
  3. 反向代理(nginx)
  4. ip+端口负载均衡(lvs)

mysql 主从读写分离,分库分表 cobar 集群 迁移采用一致性hash

Hbase 依赖HRegion 以及分布式系统HDFS实现

可拓展架构

  1. 利用分布式消息队列降低系统耦合度

  2. 利用分布式服务打造可复用的业务平台

    解决方案 拆分 模块独立部署 纵横拆分

  3. web service 打造分布式服务平台

大型网站分布式服务的需求以及特点

负载均衡
失效转移(节点不可用 立即切换到可用的节点上)
远程通信
整合异构系统

马克思的劳动价值理论

产品的内在价值在于劳动的时间,劳动的时间不在于个体付出的劳动时间,而在于行业一般劳动时间

网站的安全架构

xss攻击 cross site script

csrf攻击 cross site request forgery 跨站请求伪造 利用用户的cookie或者session 来已用户的身份来伪造请求

你可能感兴趣的:(架构解读)