架构师训练营 -- 第五周学习总结
分布式缓存
定义
缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用 于加快读取的速种类
种类
CPU缓存,操作系统缓存,数据库缓存,JVM编译缓存,CDN缓存,代理与反向代理缓存,前端缓存,应用程序缓存,分布式对象缓存
考量指标
缓存命中率:
1.缓存是否有效依赖于能多少次重用同一个缓存响应业务请求,这个度量指标被称作缓存命中率。
2.如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是90%。
分布式对象缓存的一致性hash算法
一致性Hash算法通过一个叫做一致性Hash环的数据结构实现Key到缓存服务器的Hash映射,先构造一个长度为2^32的整数环(这个环被称为一致性Hash环),根据节点名称的Hash值(其分布为[0, 2^32-1])将缓存服务器节点放置在这个Hash环上,然后根据需要缓存的数据的Key值计算得到其Hash值(其分布也为[0, 2^32-1]),然后在Hash环上顺时针查找距离这个Key值的Hash值最近的服务器节点,完成Key到服务器的映射查找。
消息队列与异步架构
背景
现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,
但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,
发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待。
优势
1.削峰填谷
2.失败隔离和自我修复
3.解耦
产品介绍
1.RabbitMQ的主要特点是性能好,社区活跃/但是RabbitMQ用Erlang开发,对不熟悉Erlang的同学而言不便于二次开发和维护。(49M)
2.ActiveMQ影响比较广泛,可以跨平台/使用Java开发,对Java比较友好。(27M)
3.RocketMQ是阿里推出的一个开源产品/也是使用Java开发/性能比较好,可靠性也 比较高°(35M)
4.Kafka, LinkedIn出品的’Scala开发’专门针对分布式场景进行了优化’因此分布 式的伸缩性会比较好°(63M)
负载均衡架构
分类
DNS 负载均衡,硬件负载均衡:类似F5 和 A10,软件负载均衡:ngnix
原则
DNS 负载均衡、硬件负载均衡、软件负载均衡,每种方式都有一些优缺点,基于组合的基本原则进行考虑:DNS 负载均衡用于实现地理级别的负载均衡;硬件负载均衡用于实现集群级别的负载均衡;软件负载均衡用于实现机器级别的负载均衡。
算法
轮询 : 负载均衡系统收到请求后,按照顺序轮流分配到服务器上。
加权轮询 : 加权轮询是轮询的一种特殊形式,其主要目的就是为了解决不同服务器处理能力有差异的问题
负载最低优先 : 负载均衡系统将任务分配给当前负载最低的服务器
性能最优类 : 负载最低优先类算法是站在服务器的角度来进行分配的,而性能最优优先类算法则是站在客户端的角度来进行分配的
Hash 类 : 负载均衡系统根据任务中的某些关键信息进行 Hash 运算,将相同 Hash 值的请求分配到同一台服务器上
分布式存储
高性能架构
读写分离(一主多从) 分库分表(分片)
高可用架构
双机架构,集群架构,分区架构,异地多活架构
评论