美文网首页
Node 的事件轮询机制图谱和中间层架构图谱

Node 的事件轮询机制图谱和中间层架构图谱

作者: 柏丘君 | 来源:发表于2018-01-14 16:18 被阅读0次

    这篇文章主要总结两个图谱:Node 的事件轮询机制图谱和 Node 作为中间层在大型应用下的架构图谱。
    注:文中的内容大多是我自己的理解,并不一定正确,如果您在阅读的过程中发现了任何错误,欢迎告诉我,以便改正。

    Event Loop 和异步 IO

    关于 Event Loop 和异步 IO,可以参考这两篇文章:

    Node 的事件轮询机制图谱

    Node 的事件轮询机制图谱如下:


    Node 的事件轮询机制图谱如.png

    图谱说明:

    1. Node 服务器收到客户端的请求,先将请求保存在一个队列中
    2. 将请求假如到 Event Loop
    3. Event Loop 通过 Libuv 库向操作系统发出指令,并注册回调函数(具体的任务交给 Libuv 调度,Event Loop 不负责具体的任务实现,如 IO 读取)
    4. Libuv 是 C++ 的一个处理异步任务的模块,其对 Linux 和 Windows 平台进行了兼容
    5. Libuv 将任务分发给具体的工作线程,工作线程负责执行任务
    6. 工作线程执行任务完毕后,通知 Libuv
    7. Libuv 收到任务完成的通知后再通知 Event Loop,触发先前注册的回调函数
    8. 回调函数执行完成后,移除请求队列中的相关请求

    以 Node 为中间层的架构图谱

    下面是一个以 Node 为中间层的架构图谱:


    Node 中间层的架构图谱.png

    图谱说明:

    1. 客户端发起请求,首先由 Nginx 进行负载
    2. Nginx 将请求转发到某台 Node 服务器后,由该服务器上的 PM2 等管理软件选择一个合适的进程处理请求
    3. 同时,Node 服务还可以对静态资源进行处理,将静态资源请求重定向到某台 CDN 上
    4. Node 向后端发起请求
    5. Node 不直接请求 Java 服务器,在 Node 和 Java 集群之间设置一个 HTTP 的缓存,Node 从缓存中获取数据,缓存一般由 Varnish 或 Squid 完成
    6. HTTP 缓存和 Java 服务器之间要保持连接,一般可以通过心跳确认连接状态,如果和某台服务器连接出现了异常,就要进行处理
    7. Java 服务器从数据库集群中读写数据
    8. 数据库集群进行了读写分离
    9. 同时,还需要对数据库进行冷热备份操作,以进行容灾

    上面就是使用 Node 作为中间层的一个比较大型的应用的架构图谱。

    完。

    相关文章

      网友评论

          本文标题:Node 的事件轮询机制图谱和中间层架构图谱

          本文链接:https://www.haomeiwen.com/subject/yeyfoxtx.html