1、**创业初级、架构的特点如下:**
* 单机系统(ALL in one)
* 程序耦合 (ALL in one)
* 逻辑核心(CURD)
![](https://img.kancloud.cn/fa/e3/fae33c9121cab6147bb71c781ef0e284_322x700.png)
创业初级,系统流量比较底,系统是一个ALL in ONE 的架构,是一个单机系统,程序耦合。随着业务不断发展,架构演进为伪分布式,提升性能,三大分离:
* 读写分离
* 动静分离
* 前后端分离
![](https://img.kancloud.cn/f8/a7/f8a7bcd37df71c74b3be2bf560cea9f2_1753x1078.png)
为了解耦,系统进行的垂直拆分
* 业务垂直拆分
* 代码垂直拆分(子系统解耦)
* 数据库垂直拆分(数据量降低,延时缓解)
* 研发团队垂直拆分(专业化、效率提升)
![](https://img.kancloud.cn/0b/bb/0bbb81df74d21b04b8632bb1ffb77729_950x397.png)
我们会发现,垂直拆分后,我们虽然解除了子系统之间的耦合,但是对于同一个垂直站点子系统,仍然是一个单体架构,每个子系统仍然不能做到高可用,此时反向代理就出现咯
2、**什么是 代理、什么是反向代理**
对比原来用户和服务器之间加了一层proxy,用户通过proxy请求被访问真实的服务器,因此整个访问的过程为: 用户---》proxy----》Real Server
什么是代理: proxy代表的是用户的时候,这个时候为代理
什么是反向代理: 当proxy代表的是被访问服务器的时候,这个时候为反向代理 (屏蔽内网真实服务器的IP)
3、**一般、用什么作为反向代理**
软件层面: nginx、haproxy、ingress、traefik、envoy
操作系统层面(四层): LVS
硬件层面: F5
4、**反向代理、解决什么问题呢?**
* 子web系统的性能,不在受到单台机器资源限制,可用扩展
* 子web系统,实现了高可用
![](https://img.kancloud.cn/59/cd/59cd86f16c0352ced580c17fd62d577b_575x340.png)
反向代理带来新的问题如下:
* 多个web节点,负载如何分配(负载均衡)
* 反向代理层,如何保证高可用(反向代理的高可用性问题)
负载均衡算法: 随机、轮询、静态权重轮询、动态权重轮询、一致性哈希
四层(转发/交换),七层(转发/交换)
反向代理高可用问题? 通过keepalived+VIP实现高可用代理服务,如图:
![](https://img.kancloud.cn/ef/d1/efd1516ace045ad31349a44b46edeb7f_1164x508.png)
当nginx服务挂了,keepalived会探测到,会把VIP迁移到另外一台服务器,对于外部用户来说,无感知
缺点: 2个代理服务器,利用率为50%