关于服务器百万并发的一些整理

  • 1 初始架构图
    • 2 反向代理
      • 2.1 反向代理概念
    • 2.2 正向代理
      • 2.2.1 正向代理介绍
      • 2.2.2 关于代理总结
    • 2.3 Nginx
      • 2.3.1 Nginx服务器介绍
      • 2.3.2 Nginx安装使用
      • 2.3.3 Nginx命令
      • 2.3.4 Nginx反向代理原理
      • 2.3.5 编辑hosts文件
      • 2.3.6 修改HOSTS文件
    • 2.4 实现域名代理
      • 2.4.1 需求说明
      • 2.4.2 配置nginx
    • 2.5 Nginx实现tomcat集群部署
      • 2.5.1 集群搭建原理
      • 2.5.2 动态展现端口号
    • 2.6 Nginx负载均衡
      • 2.6.1 轮询策略
      • 2.6.2 权重策略
      • 2.6.3 IPHASH策略
    • 2.7 Nginx高级属性
      • 2.7.1 down属性
      • 2.7.2 backup 属性
      • 2.7.3 tomcat服务器高可用
  • 4 Dubbo框架介绍
    • 4.2 Dubbo 入门案例
      • 4.2.1 导入jar包
      • 4.2.1 导入项目
    • 4.3 关于入门案例说明
      • 4.3.1 定义接口
      • 4.3.2 服务生产者
      • 4.3.3 服务消费者
        • 4.3.3.1 编辑消费者的接口文件
        • 4.3.3.2 编辑服务消费者的yml文件

这篇文章是我在学习服务器百万并发中整理的一些知识和总结

1 初始架构图


在一般的传统架构中,包括反向代理实现负载均衡,搭建缓存服务器实现减少数据库访问压力,实现数据库的读写分离和搭建主从关系实现数据库的高可用,通过如上图的搭建下的项目系统,基本实现了处理高并发的框架,下面来一个一个介绍一下。

2 反向代理

2.1 反向代理概念

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

特点:
1.反向代理服务器是位于用户和目标服务器之间的.
2. 用户以为反向代理服务器就是真实的服务器. 用户不知道真实的服务器到底是谁.
3. 反向代理服务器保护服务端信息,称之为服务器端代理.

代理存在的原因: 用户由于某种原因无法直接访问目标服务器,完成指定的功能.

2.2 正向代理

2.2.1 正向代理介绍

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

特点:
1.代理服务器位于用户与服务器之间
2.用户请求时,非常明确目标服务器到底是谁. 服务器不清楚到底是谁访问的我.以为是代理服务器直接发起的请求.
3.正向代理服务器保护了用户的信息,所以称之为客户端代理.

2.2.2 关于代理总结

1.反向代理是服务器端代理. 只要用户访问服务器,其实都是反向代理机制. 实现业务调用
2.正向代理是客户端代理.主要用户上网就就使用正向代理 实现的是网络通信头 网穿工具 夜神模拟器/花生壳

2.3 Nginx

2.3.1 Nginx服务器介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点:
1.占用内存少 2M tomcat启动 200M左右
2.并发能力强 5万/秒 实际2-4万/秒

2.3.2 Nginx安装使用

WIN10安装
1).启动Nginx nginx启动会生成2个进程项
1.主进程 主要的作用是提供反向代理服务的. 在关闭主进程 内存大的
2.守护进程 防止主进程意外关闭的. 先关闭守护

2.3.3 Nginx命令

工作目录说明: 要求在nginx.exe所在的根目录中执行
1.启动命令
start nginx Linux ./nginx
2.重名命令
nginx -s reload Linux: ./nginx -s reload
3.关闭命令
nginx -s stop Linux: ./nginx -s stop

2.3.4 Nginx反向代理原理

  1. 入门案例说明: http://localhost:80
  2. 配置项
http{server {      #服务1listen       80;server_name  localhost;   location / {#root   html;   root    D:/jt_images;index    index.html;}}server {      #服务1listen       80;server_name  xxxxxx;       #服务名称不能重复location / {#root   html;   root    D:/jt_images;index    index.html;}}
}

2.3.5 编辑hosts文件

作用: 实现本地域名与IP地址的映射
路径:

2.3.6 修改HOSTS文件


2.4 实现域名代理

2.4.1 需求说明

需求: 要求用户通过 http://manage.smilefit.shop 访问localhost:8091的服务器.
实现方式: 利用反向代理机制实现

2.4.2 配置nginx

#2.配置后端服务器 manage.jt.com:80  localhost:8091
server {listen 80;server_name manage.smilefit.shop;location / {#发起url请求地址proxy_pass http://localhost:8091;}
}

2.5 Nginx实现tomcat集群部署

2.5.1 集群搭建原理

2.5.2 动态展现端口号

2.6 Nginx负载均衡

2.6.1 轮询策略

说明: 根据配置文件的顺序,依次访问服务器.

2.6.2 权重策略

说明: 让性能更优的服务器处理更多的用户请求.

2.6.3 IPHASH策略

需求: 需要将用户与某台服务器进行绑定.

原理:

缺点:

  1. 容易造成负载不均现象.
  2. 如果IP地址与用户绑定在一起,如果tomcat服务器宕机,则直接影响用户.

IPhash实用场景:一般进行压力测试时使用.

2.7 Nginx高级属性

2.7.1 down属性

说明:如果服务器宕机,则可以通过down属性进行标识,被标识的服务器则不会再为用户提供支持.

2.7.2 backup 属性

备用机的设定. 一般条件下备用机不干活的,但是当主机遇忙时,或者主机宕机时,才会访问备用机.

2.7.3 tomcat服务器高可用

说明:如果人为的添加down属性 效率不高, 能否自动的检测服务器是否宕机,如果宕机,能否自动的标识为down.

注册中心实现原理:
1.当服务器启动时,会将服务器的状态(服务名称/IP/端口)一起写入注册中心
2.注册中心接受到服务器信息时,会动态的维护服务列表数据
3/4.当客户端(消费者)启动时,首先会链接注册中心,获取所有的服务列表数据,并且将服务列表数据保存到本地
5.当消费者执行业务时,如果有多个服务的生产者时,采用负载均衡的思想挑选其中的一个服务进行访问(RPC).
6.当服务器发生宕机时,由于注册中心有心跳检测机制,所有会动态的维护服务列表数据.会全网广播通知所有的客户端(消费者)更新服务列表数据. 在更新服务列表时,数据的同步会陷入阻塞的状态.

关于微服务思想负载均衡
集中式负载均衡
说明:所有的请求都必须由某个服务器进行统一的管理
案例:Nginx是集中式的负载均衡

4 Dubbo框架介绍

提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

4.2 Dubbo 入门案例

4.2.1 导入jar包

<!--引入dubbo配置 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>

4.2.1 导入项目

4.3 关于入门案例说明

4.3.1 定义接口

1)项目结构

2)定义接口

4.3.2 服务生产者

4.3.3 服务消费者

4.3.3.1 编辑消费者的接口文件

4.3.3.2 编辑服务消费者的yml文件

单点登录实现步骤:
1.用户通过用户名和密码访问web服务器
2.web服务器通过sso校验用户名和密码是否正确。
3.如果用户名和密码正确,则将数据保存到redis仲,TICKET密钥:USERJSON,之后将密钥返回给用户即可
4.web服务器将密钥信息保存到用户的Cookie中 并且设定cookie的共享/有效时间

Java实现百万并发(整理)相关推荐

  1. 百万并发中间件系统的内核设计看Java并发性能优化

    " 这篇文章,给大家聊聊一个百万级并发的中间件系统的内核代码里的锁性能优化. 很多同学都对Java并发编程很感兴趣,学习了很多相关的技术和知识.比如volatile.Atomic.synch ...

  2. java netty 即时通讯_netty百万并发-javanetty如何处理1m连接

    在某些极端的情况下,这些语言中的每一种都不完全相同,所以我使用的Java语言,有100万个并发连接,这有点奇怪,更有希望.nginx 并发 netty并发. 这一次使用了方便的netty NIO框架( ...

  3. Java并发压力测试数据库_百万并发压力测试-如何用Java编写纯并发压力测试

    进口: 进口: 进口: 进口: 进口: 进口: 进口: 进口: 进口: 进口: 公共阶级{并发测试与压力测试. 私有静态int thread_num=200: 私有静态int client_num=4 ...

  4. 零基础快速学习Java技术的方法整理

    在学习java技术这条道路上,有很多都是零基础学员,他们对于java的学习有着很多的不解,不知怎么学习也不知道如何下手,其实Java编程涉及到的知识点还是非常多的,我们需要制定java学习路线图这样才 ...

  5. python3 sleep 并发_python异步编程之asyncio(百万并发)

    点击上方蓝字关注我们 目录 [python 异步编程之 asyncio(百万并发)] 一.asyncio 二.aiohttp 前言:python 由于 GIL(全局锁)的存在,不能发挥多核的优势,其性 ...

  6. 设计撑百万并发的数据库架构

    设计撑百万并发的数据库架构 https://www.toutiao.com/a6742034135486824973/ 前言 作为一个全球人数最多的国家,一个再怎么凄惨的行业,都能找出很多的人为之付出 ...

  7. Java多线程与并发系列从0到1全部合集,强烈建议收藏!

    在过去的时间中,我写过Java多线程与并发的整个系列. 为了方便大家的阅读,也为了让知识更系统化,这里我单独把Java多线程与并发的整个系列一并罗列于此,希望对有用的人有用,也希望能帮助到更多的人. ...

  8. python百万并发压测_100W高并发(转载) - 橙子柠檬's Blog

    此文章忘记在哪里看到了,作为收藏备用记在这,作者看到可以联系下我著名出处,,本编文章是根据某一个公开课进行整理的,如何在服务端和客户端去实现单机百万的并发. 从客户端角度看,单机如果能发出百万并发,那 ...

  9. java面试基础题整理(二)

    java面试基础题整理 文章目录 java面试基础题整理 前端技术(HTML.CSS.JS.JQuery等) 在js中怎么样验证数字? js中如何给string这个类型加方法? 谈谈js的定时器? 请 ...

最新文章

  1. php 多图上传编辑器,laravel中使用WangEditor及多图上传
  2. Xamarin XAML语言教程基本视图ContentView
  3. Oracle中的数据类型和数据类型之间的转换
  4. 在Angular应用的child Component里同时使用@Input和@Output
  5. ux设计中的各种地图_UX设计中的格式塔原理
  6. android webviewclient 点击事件,Android Api WebViewClient 详细解析
  7. 训练神经网络的一些技巧(包括激活和损失函数的选择、调参、过拟合等)
  8. Linux下docker的安装及常用命令
  9. MySQL的备份、还原及恢复
  10. vs2017环境下编译log4cpp-1.1.3
  11. DOS检查网络连通性并记录时间
  12. 蓝屏代码查询及代码分析
  13. 精益生产理论学习总结(一)
  14. 0xC000041D:用户回调期间遇到未经处理的异常
  15. 交换机的工作原理和功能
  16. ESP32基于arduino开发的心跳体温检测系统(二)传感器的使用
  17. 05 RTMP Chunk Stream
  18. 英特尔凌动处理器_英特尔刷新Atom Denverton低功耗服务器CPU产品线
  19. 计算机文字输入原理,也谈计算机汉字键盘设计“三原理”
  20. Java开发 - 树(二叉树,二叉排序树,红黑树)

热门文章

  1. 【Kaggle】FIFA球员数据可视化分析(一)
  2. C语言求两个正整数的最小公倍数
  3. 随机生成20个手机号码
  4. [渝粤教育] 宁波城市职业技术学院 Web服务器运维(从零搭建一个企业网站) 参考 资料
  5. 【FreeRTOS】12 任务通知——更省资源的同步方式
  6. B站收藏备份工具设计和实现 Bilibili Memory 哔哩哔哩记忆
  7. D435i安装驱动时遇到的configuring Secure Boot问题
  8. win2003 64位 企业版 (win 2003_r2_enterprise_x64.iso)下载地址
  9. openlayers绘制自定义点线面样式,带清除功能Vue版
  10. ERROR: Failed to create toolchain