当前位置: 首页 > news >正文

[高并发系统设计] - 搭建高并发高可用的系统 - 学习与探究

1.应用场景

主要用于高并发系统设计的架构演进和架构思路。

2.学习/操作

1.文档阅读

搭建高并发、高可用的系统 | Laravel China 社区

高并发, 你真的理解透彻了吗? - 知乎

PHP实战经验之系统如何支撑高并发-51CTO.COM

PHP高并发和大流量解决方案整理 - 腾讯云开发者社区-腾讯云

php高并发问题思路 - 掘金

关于PHP高并发抢购系统设计-蜂巢建站

一个高性能,高并发,高可用的系统是如何演变来的 | PHP 技术论坛 --- 下面的两个链接是一起的

【进阶】Mysql分库分表方案,如何分,怎样分?

PHP使用Nginx实现反向代理,学一学吧

2.整理输出

环境

PHP技术栈

以及

其他语言技术栈

先放下截图

后续补充

...

3.问题/补充

1. 网关,负载均衡,反向代理的区别和关系?

API 网关 vs 负载均衡 vs 反向代理 - 学习/实践_网关反向代理_穿素白衫的中少年的博客-CSDN博客

2. 是不是高并发系统一定会用到“三者”?【网关,负载均衡,反向代理】

未必,通常只会用到一个或者两个,当然也可以用三个,具体应该结合业务场景分析

3. 服务器能在没有收到请求时,主动给客户端发送请求吗?

或者说,

客户端A请求了服务端B,服务端B将请求转发给了服务端C,那么服务端C可以在收到请求,处理之后,将响应直接返回给客户端A吗?

初步解答,我们知道通常的客户端与服务端通信方式是:

客户端先发起请求,服务端收到请求,然后返回响应,服务端想要主动发起请求「这里是就响应,本质上也是请求,一段网络数据」,就需要用到websocket「这里是基于http进行通信的方式分析」

但是个人认为,技术是可以实现的,因为需要的信息都有,为什么不能主动发送请求呢?

与chatgpt的问答

在“反向代理”模式下,服务端C为什么不能跳过代理服务器B,直接返回响应给客户端A?技术上无法实现吗?

在“反向代理”模式下,服务端C不能跳过代理服务器B,直接返回响应给客户端A。

这是因为在这种模式下,客户端A与服务端C之间没有直接的网络连接,只有通过代理服务器B才能相互通信。

从技术上讲,服务端C可以直接向客户端A发送响应,但是客户端A无法接收到这个响应。这是因为客户端A发送请求时将其发送到代理服务器B,而不是直接发送到服务端C。客户端A根本不知道服务端C的存在,也不知道服务端C的地址。因此,即使服务端C发送了响应,客户端A也无法接收到它。

另外,即使服务端C能够直接向客户端A发送响应,这也不是一种安全的方式。在这种情况下,服务端C暴露在公共网络上,并且可能会受到各种攻击,例如DDoS攻击、SQL注入攻击等。因此,为了保障服务端C的安全性,必须通过代理服务器B来完成请求和响应的传输。

从技术上讲,服务端C可以直接向客户端A发送响应,但这通常需要满足以下两个条件:

  1. 客户端A能够直接访问服务端C,即客户端A和服务端C之间不存在任何网络层级的中间设备或代理。

  2. 服务端C在响应中指定客户端A的IP地址和端口号,以确保响应能够准确到达客户端A。

在实际场景中,通常很难同时满足上述两个条件,因此服务端C一般需要通过中间设备或代理来向客户端A发送响应。即使服务端C能够直接向客户端A发送响应,也需要考虑可能存在的网络拓扑变化、安全性等问题,因此通常不建议这么做。

服务端能否主动向客户端发起连接请求?

在一般的网络通信场景中,服务端是不能主动向客户端发送连接请求的,因为在大多数情况下,客户端处于一个比较安全的内网环境中,不会暴露在公网上。而服务端则通常处于公网或者云服务器等位置,有公网IP地址可以被客户端访问到。

因此,在大多数情况下,只有客户端才能主动向服务端发起连接请求。

当然,也有一些特殊情况,例如在使用VPN、内网穿透等技术的情况下,服务端也可以通过一些手段实现向客户端发起连接请求的功能。但这种情况属于特殊情况,并不是一般的网络通信方式。

后续补充

...

http://www.xdnf.cn/news/1380457.html

相关文章:

  • 【大前端】React useEffect 详解:从入门到进阶
  • Shi-Tomasi 算法和 Harris 角点检测算法都是经典的角点检测方法,但它们在理论基础和实现细节上有一些区别。下面我将详细对比这两种算法。
  • List<Map<String, String>>最简单的遍历方式
  • 【传奇开心果系列】Flet框架带图标带交互动画的办公用品费用占比统计饼图自定义模板
  • GitHub 热榜项目 - 日榜(2025-08-28)
  • 达梦数据库-重做日志文件(一)
  • 云计算学习100天-第30天
  • 09- AI大模型-docker部署dify以及 dify的使用案例:公司智能助手(构建知识库)(上篇)
  • TDengine 数据订阅支持 MQTT 协议用户手册
  • 【SQL】计算一年内每个月份的周数据
  • 上海控安:WiFi网络安全攻击
  • SONiC 之 Testbed(2)Ansible
  • GeoScene Maps 完整入门指南:从安装到实战
  • Android稳定性问题的常见原因是什么
  • 【python】@staticmethod装饰器
  • 同一个栅格数据,为何在QGIS和ArcGIS Pro中打开后显示的数值范围不同?
  • 苍穹外卖项目笔记day01
  • 【VSCode】使用VSCode打开md文件以及转化为PDF
  • uni-app 网络请求与后端交互完全指南:从基础到实战
  • ckman部署的clickhouse,节点迁移
  • Logstash数据迁移之es-to-kafka.conf详细配置
  • 用 Docker 玩转 Kafka 4.0镜像选型、快速起步、配置持久化与常见坑
  • 让模糊物体变清晰的视频AI:快速提升画质指南
  • 三维视频融合驱动视频孪生创新:智汇云舟引领数字孪生产业新范式
  • Runway Gen-2 深度技术解析:AI视频生成的范式变革
  • RAGFlow
  • 健永科技RFID技术在羊智能分群管理系统的使用案例
  • 传统星型拓扑结构的5G,WiFi无线通信网络与替代拓扑结构自组网
  • 【Linux】Linux基础开发工具从入门到实践
  • Foundry工具大全