欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java NIO框架-Netty-6 Nginx配置WebSocket(没写完)

程序员文章站 2022-04-25 20:09:33
...

利用Nginx反向代理WebSocket服务器集群

1、假设现在有两个java线程

线程a 监听8888端口,提供http服务

线程b 监听9999端口,提供ws服务

请求http服务:http://192.168.0.30:8888/test_http

返回:200 ok

请求ws服务:socket=new WebSocket("ws://192.168.0.30:9999/test_ws")

连接成功

2、配置ngnix如下

    server{
        listen 8777;
        server_name  localhost;
        location /do_ws {
            proxy_pass http://0.0.0.0:9999/test_ws;
        }
       	location /do_http {
            proxy_pass http://0.0.0.0:8888/test_http;
        }
    }

请求http服务:http://192.168.0.30:8777/do_http

返回:200 ok

请求ws服务:socket=new WebSocket("ws://192.168.0.30:8777/do_ws");

连接成功

关于“负载均衡高可用”

转发器:位于网站架构的最前端,专职于:接受用户请求,转发请求。

借助于转发器就可以将处理请求的负载分布到后台N个真正的服务器上去,这就是负载均衡。

负载均衡器:实现某种均衡负载算法的转发器

高可用(HA-high Availability):狭义上是指单个主机的故障率低,广义上是指整个系统不会因为某几台主机停止服而停止服务。一般的,高可用性指的是系统的高可用性。

如何实现高可用?分两部分,第一部分:负载均衡器的高可用(负载均衡主机的狭义HA);第二部分:后端集群的高可用

关于虚拟服务器VS-Visual Server

无论采用什么样的转发器(负载均衡器)和后端集群向外提供服务,从用户角度,看到的始终是一个具备完整功能的服务器,而看不到亦不关心这个服务器内部是否发生了请求转发。这时,用户看到的服务器就是虚拟服务器。

虚拟服务器的实现请求转发的方式有如下几种方式

VS/NTA

VS/TUN

这种技术被称为IP隧道技术,Nginx在实现WebSocket代理的时候用的就是这种方式。
这种技术的原理是:转发器接到IP报文之后,将IP报文进行再次封装,并将目的地址写为真正处理这个IP报文的服务器,这样这个IP报文就发送到了后端集群的特定服务器,然后这个后端服务器处理完成之后可根据IP报文的源地址(注意,转发器只是改变了目标地址,没有改变源地址),直接向请求者返回消息(而不经过转发器)。
验证如下:

VS/DR

虚拟服务器采用的调度算法(负载均衡算法)有如下几种

轮叫调度

加权调度

最少连接

加权最少连接

基于局部性的最少连接

带复制的基于局部性的最少连接

目标地址散列

源地址散列