• nginx基础概念


    1.正向代理:代理的是客户端,一般有明确的访问对象

    比如:我现在通过v-p-n去访问YouTube,那么就是正向代理。

    2.反向代理:代理的是服务器

    最常见的就是web中,nginx去代理一群后端的服务器。

    3.负载均衡:在反向代理的基础上,

    比如:后代集群每一台机器的处理能力不同,nginx根据配置权重,请求来了去分一个机器处理。

    --------------------

    共享内存中的锁

    ----------------------------------

    通过master启动worker,master负责listen,worker负责accept

    模块化架构:

            不同阶段对应不同的钩子函数。

            void* ctx表示上下文?

    worker中的锁:

            主线程通过epoll感知任务。

            线程池负责处理任务

            完成队列

    ------------------

    锁的分类:

            互斥锁。

            自旋锁: 适合push和pop这种很轻量级的,这样子可以避免cpu上下文切换。

           读写锁。

            条件变量:在单进程内,信号量能解决的问题,条件变量都可以解决。

                    比如可以实现:任务少的时候休眠,任务多的时候唤醒。

                    但是只能解决多线程之间的互斥问题。

            信号量:可以解决多进程的问题。

            

    --------------------

    高性能服务器影响因素:

            内存池:大量的请求下,波动很小。

            锁:互斥锁(会 引起上下文切换)和spinlock(浪费一点cpu,但是不切换)

    ----------------

    一个好的开源项目,以nginx为例子:

         1.代码可读性好

         2.性能高、稳定性强、内存池、http协议

         3.文档齐全,社区维护较好

         4.代码迭代很频繁

         5.代码结构稳定,写代码的人有一定的预见能力,应对后续的变更,代码结构基本不变。

  • 相关阅读:
    No URLs will be polled as dynamic configuration sources警告处理
    springcloud 整合 openfeign
    python中开发页面的两种方法:Qt Designer(PyQt图形化界面拖拽开发App界面)以及Django(开发Web应用框架)
    AM62x的SPI总线怎么用?
    腾讯tbs 内存泄露
    2022-2028全球COB摄影灯行业调研及趋势分析报告
    JDBC学习笔记
    运维排查 | Systemd 之服务停止后状态为 failed
    【计算机网络】传输层(三)—— TCP 协议
    【Python3】运算符
  • 原文地址:https://blog.csdn.net/themagickeyjianan/article/details/133885280