这篇文章是我在学习服务器百万并发中整理的一些知识和总结
在一般的传统架构中,包括反向代理实现负载均衡,搭建缓存服务器实现减少数据库访问压力,实现数据库的读写分离和搭建主从关系实现数据库的高可用,通过如上图的搭建下的项目系统,基本实现了处理高并发的框架,下面来一个一个介绍一下。
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
特点:
1.反向代理服务器是位于用户和目标服务器之间的.
2. 用户以为反向代理服务器就是真实的服务器. 用户不知道真实的服务器到底是谁.
3. 反向代理服务器保护服务端信息,称之为服务器端代理.
代理存在的原因: 用户由于某种原因无法直接访问目标服务器,完成指定的功能.
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
特点:
1.代理服务器位于用户与服务器之间
2.用户请求时,非常明确目标服务器到底是谁. 服务器不清楚到底是谁访问的我.以为是代理服务器直接发起的请求.
3.正向代理服务器保护了用户的信息,所以称之为客户端代理.
1.反向代理是服务器端代理. 只要用户访问服务器,其实都是反向代理机制. 实现业务调用
2.正向代理是客户端代理.主要用户上网就就使用正向代理 实现的是网络通信头 网穿工具 夜神模拟器/花生壳
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点:
1.占用内存少 2M tomcat启动 200M左右
2.并发能力强 5万/秒 实际2-4万/秒
WIN10安装
1).启动Nginx nginx启动会生成2个进程项
1.主进程 主要的作用是提供反向代理服务的. 在关闭主进程 内存大的
2.守护进程 防止主进程意外关闭的. 先关闭守护
工作目录说明: 要求在nginx.exe所在的根目录中执行
1.启动命令
start nginx Linux ./nginx
2.重名命令
nginx -s reload Linux: ./nginx -s reload
3.关闭命令
nginx -s stop Linux: ./nginx -s stop
http{
server {
#服务1
listen 80;
server_name localhost;
location / {
#root html;
root D:/jt_images;
index index.html;
}
}
server {
#服务1
listen 80;
server_name xxxxxx; #服务名称不能重复
location / {
#root html;
root D:/jt_images;
index index.html;
}
}
}
需求: 要求用户通过 http://manage.smilefit.shop 访问localhost:8091的服务器.
实现方式: 利用反向代理机制实现
#2.配置后端服务器 manage.jt.com:80 localhost:8091
server {
listen 80;
server_name manage.smilefit.shop;
location / {
#发起url请求地址
proxy_pass http://localhost:8091;
}
}
IPhash实用场景:一般进行压力测试时使用.
说明:如果服务器宕机,则可以通过down属性进行标识,被标识的服务器则不会再为用户提供支持.
备用机的设定. 一般条件下备用机不干活的,但是当主机遇忙时,或者主机宕机时,才会访问备用机.
说明:如果人为的添加down属性 效率不高, 能否自动的检测服务器是否宕机,如果宕机,能否自动的标识为down.
注册中心实现原理:
1.当服务器启动时,会将服务器的状态(服务名称/IP/端口)一起写入注册中心
2.注册中心接受到服务器信息时,会动态的维护服务列表数据
3/4.当客户端(消费者)启动时,首先会链接注册中心,获取所有的服务列表数据,并且将服务列表数据保存到本地
5.当消费者执行业务时,如果有多个服务的生产者时,采用负载均衡的思想挑选其中的一个服务进行访问(RPC).
6.当服务器发生宕机时,由于注册中心有心跳检测机制,所有会动态的维护服务列表数据.会全网广播通知所有的客户端(消费者)更新服务列表数据. 在更新服务列表时,数据的同步会陷入阻塞的状态.
关于微服务思想负载均衡
集中式负载均衡
说明:所有的请求都必须由某个服务器进行统一的管理
案例:Nginx是集中式的负载均衡
提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。
<dependency>
<groupId>com.alibaba.bootgroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>0.2.0version>
dependency>
单点登录实现步骤:
1.用户通过用户名和密码访问web服务器
2.web服务器通过sso校验用户名和密码是否正确。
3.如果用户名和密码正确,则将数据保存到redis仲,TICKET密钥:USERJSON,之后将密钥返回给用户即可
4.web服务器将密钥信息保存到用户的Cookie中 并且设定cookie的共享/有效时间