diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md index 5862ca48..15e9f80e 100644 --- a/notes/分布式问题分析.md +++ b/notes/分布式问题分析.md @@ -128,37 +128,49 @@ ## 实现 -### 1. DNS 解析 - -使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式最为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 - -

- -### 2. 修改 MAC 地址 - -使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 - -

- -### 3. 修改 IP 地址 - -在网络层修改请求的目的 IP 地址。 - -

- -### 4. HTTP 重定向 +### 1. HTTP 重定向 HTTP 重定向负载均衡服务器收到 HTTP 请求之后会返回服务器的地址,并将该地址写入 HTTP 重定向响应中返回给浏览器,浏览器收到后需要再次发送请求。 -

+缺点: -### 5. 反向代理 +- 用户访问的延迟会增加; +- 如果负载均衡器宕机,就无法访问该站点。 -正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 +

-反向代理:发生在服务器端,用户不知道代理的存在。 +### 2. DNS 重定向 -

+使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 + +缺点: + +- DNS 查找表可能会被客户端缓存起来,那么之后的所有请求都会被重定向到同一个服务器。 + +

+ +### 3. 修改 MAC 地址 + +使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 + +

+ +### 4. 修改 IP 地址 + +在网络层修改请求的目的 IP 地址。 + +

+ +### 5. 代理自动配置 + +正向代理与反向代理的区别: + +- 正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 +- 反向代理:发生在服务器端,用户不知道代理的存在。 + +PAC 服务器是用来判断一个请求是否要经过代理。 + +

# 四、分布式锁 @@ -353,6 +365,7 @@ Terracotta 的基本原理是对于集群间共享的数据,当在一个节点 - [Comparing Load Balancing Algorithms](http://www.jscape.com/blog/load-balancing-algorithms) - [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) +- [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) - [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) diff --git a/pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png b/pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png new file mode 100644 index 00000000..cb78d856 Binary files /dev/null and b/pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png differ diff --git a/pics/265a355d-aead-48aa-b455-f33b62fe729f.png b/pics/265a355d-aead-48aa-b455-f33b62fe729f.png new file mode 100644 index 00000000..bb564f6e Binary files /dev/null and b/pics/265a355d-aead-48aa-b455-f33b62fe729f.png differ diff --git a/pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg b/pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg new file mode 100644 index 00000000..809abead Binary files /dev/null and b/pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg differ diff --git a/pics/f0e35b7a-2948-488a-a5a9-97d3f6b5e2d7.png b/pics/f0e35b7a-2948-488a-a5a9-97d3f6b5e2d7.png new file mode 100644 index 00000000..8f797bdf Binary files /dev/null and b/pics/f0e35b7a-2948-488a-a5a9-97d3f6b5e2d7.png differ diff --git a/pics/f8b16d1e-7363-4544-94d6-4939fdf849dc.png b/pics/f8b16d1e-7363-4544-94d6-4939fdf849dc.png new file mode 100644 index 00000000..300b6e06 Binary files /dev/null and b/pics/f8b16d1e-7363-4544-94d6-4939fdf849dc.png differ