第五周学习心得

用户头像
熊桂平
关注
发布于: 2020 年 10 月 26 日

本周学习技术选型第一部分,主要学习了以下几个技术点

  • 分布式缓存架构

  • 消息队列与异步架构

  • 负载均衡架构

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映射查找。

一致性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 重定向负载均衡

http重定向负载均衡

3.3dns负载均衡架构

dns负载均衡架构

3.4反向代理负载均衡

反向代理负载均衡

3.5IP负载均衡

ip负载均衡

3.6数据链路层负载均衡

数据链路层负载均衡

3.7负载均衡算法

  • 轮询:所有请求被依次分发到每个应用服务器上,适合于所有服务器硬件都相同的场景。

  • 加权轮询:根据应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重将请求分发到每个服务器,高性能的服务器分配更多请求。

  • 随机:请求被随机分配到各个应用服务器,在许多场合下,这种方案都很简单实用,因为好的随机数本身就很均衡。如果应用服务器硬件配置不同,也可以很容易的使用加权随机算法。

  • 最少连接:记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到最少连接的服务器上,应该说,这是最符合负载均衡定义的算法。

  • 源地址散列:根据请求来源的IP地址进行Hash计算,得到应用服务器,该算法可以保证同一个来源的请求总在同一个服务器上处理,实现会话粘滞。



用户头像

熊桂平

关注

还未添加个人签名 2020.09.14 加入

还未添加个人简介

评论

发布
暂无评论
第五周学习心得