分布式:牵扯到项目的拆分,将一个完整的项目拆分成多个模块,并且每个模块都能独立部署以及运行
集群:项目的部署.将一个单独的项目部署在多台服务器上叫做集群,将分布式项目中的每一个模块都部署在多台服务器上就叫:分布式+集群
假设三台服务器套接字分别为:
192.168.61.23:8080
192.168.61.24:8081
192.168.61.25:8082
这时候接收到客户端请求,我们无法使用tomcat自动制定本处理请求的服务器,这个时候我们就需要有一个统一接受请求.然后将请求分配给上面
的三台服务器
nginx:是一个优秀的web服务器,其反向代理功能十分强大,依靠其反向代理可以实现负载均衡
正向代理: 'A' 向 'B' 说你帮我从 'C' 那拿点东西 用户知道自己使用的是代理,并且用户知道实际访问的网址
反向代理: 'A' 向 'B' 买东西,结果东西是 'B' 从 'C' 或 'D'那里取的 用户并不知道自己使用的是代理,并且用户不知道真实访问的网址
正向代理:小黄想访问www.xxx.com但是这个网站在国内禁止访问,然后小黄找了一个代理服务器,通过代理服务器访问www.xxx.com的内容
反向代理:小欢想访问www,xxx.com但是小欢找不到代理服务器,这个时候小黄注册了一个www.ggg.com的域名,然后使用反向代理将所有访问www.ggg.com的请求都转发给www.xxx.com,然后将www.ggg.com推荐给小欢
通过上面的案例我们发现反向代理可以将用户的请求转发到其他地方,并且用户不会发现.我们可以依靠反向代理以及nginx自身提供的一些机制来实现负载均衡
nginx的调度算法有4种;
1.轮询(默认调度算法,默认是平均分配请求,我们可以通过weight=x 来指定分配的记录,x的值越大代表几率越大)
2.ip_hash 按照ip 的哈希值来分配情求,这样做的话同一个ip访问的永远是同一个服务器
3.url_hash 按照url的请求来进行服务器的分配,例如:请求www.baidu.com/a得到全分到服务器A, www.baidu.com/b的全分给服务器B
4.fair 根据服务器的响应结果来进行只能的负载均衡,服务器响应的速度越快被分配的请求越多
上面四种调度算法中nginx默认只支持轮询和ip_hash,如果想使用url_hash需要安装nginx的软件包,而fair的话需要下载upstream_fair
分布式/集群个人见解
最新推荐文章于 2022-12-26 16:51:08 发布