第五周学习心得
本周学习技术选型第一部分,主要学习了以下几个技术点
分布式缓存架构
消息队列与异步架构
负载均衡架构
1.分布式缓存架构
1.1缓存分类
CPU 缓存
操作系统缓存
数据库缓存
JVM 编译缓存
CDN 缓存
代理与反向代理缓存
前端缓存
应用程序缓存
分布式对象缓存
1.2 常用缓存实现形式
代理缓存
反向代理缓存
多层反向代理缓存
内容分发网络(CDN)
通读缓存(read-through)
.旁路缓存(cache-aside)
浏览器对象缓存
本地对象缓存
本地对象缓存构建分布式集群
远程分布式对象缓存
1.3一致性hash算法
具体算法过程为:先构造一个长度为0~ 2^32的整数环(这个环被称作一致性Hash环),根据节点名称的Hash值(其分布范围同样为0~2^32)将节点放置在这个Hash 环上。然后根据KEY值计算得到其Hash值(其分布范围也同样为0~2^32 ),然后在Hash环上顺时针查找距离这个KEY的Hash值最近的节点,完成KEY到节点的Hash映射查找。
1.4缓存使用参考数据
1.缓存介质延迟
2.缓存效率层次
2.消息队列与异步架构
2.1调用方式
同步调用
异步调用
2.2消息队列构建异步调用架构
构建角色:
• 消息生产者
• 消息队列
• 消息消费者
实现模型:
点对点模型
发布订阅模型
2.3消息队列的好处
实现异步处理,提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复
解耦
2.4主要的消息队列产品
RabbitMQ 的主要特点是性能好,社区活跃,但是RabbitMQ 用Erlang 开发,对不熟
悉Erlang 的同学而言不便于二次开发和维护。
ActiveMQ 影响比较广泛,可以跨平台,使用Java开发,对Java比较友好。
RocketMQ 是阿里推出的一个开源产品,也是使用Java开发,性能比较好,可靠性也
比较高。
Kafka ,LinkedIn 出品的,Scala 开发,专门针对分布式场景进行了优化,因此分布
式的伸缩性会比较好。
3.负载均衡架构
3.1负载均衡
3.2HTTP 重定向负载均衡
3.3dns负载均衡架构
3.4反向代理负载均衡
3.5IP负载均衡
3.6数据链路层负载均衡
3.7负载均衡算法
轮询:所有请求被依次分发到每个应用服务器上,适合于所有服务器硬件都相同的场景。
加权轮询:根据应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重将请求分发到每个服务器,高性能的服务器分配更多请求。
随机:请求被随机分配到各个应用服务器,在许多场合下,这种方案都很简单实用,因为好的随机数本身就很均衡。如果应用服务器硬件配置不同,也可以很容易的使用加权随机算法。
最少连接:记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到最少连接的服务器上,应该说,这是最符合负载均衡定义的算法。
源地址散列:根据请求来源的IP地址进行Hash计算,得到应用服务器,该算法可以保证同一个来源的请求总在同一个服务器上处理,实现会话粘滞。
评论