zoukankan      html  css  js  c++  java
  • muduo 学习

    设计目标

    muduo的设计目标是专用的数独服务器或者游戏服务器,不是用来写通用的httpd或者ftpd或Web proxy。前者通常有业务逻辑,后者更强调高并发和高吞吐量。

    原理

    muduo支持并发非阻塞TCP网络编程,它的核心是每个IO线程一个事件循环(loop),把IO事件分发到回调函数上。

    基于事件的非阻塞网络编程
    1. 接收数据(receive):注册一个收数据的回调,网络库收到数据时调用回调函数,将收到的数据提供给我。
    2. 接受连接(accept)
    3. 发送数据(send)
    TCP网络编程最本质的是处理三个半事件
    1. 连接建立。onConnection()
    2. 连接断开:主动断开(close--关闭套接字, shutdown--关闭连接)和被动断开(read返回0)。
    3. 消息到达,文件描述符可读。onMessage() 处理收到的数据
    4. 消息发送完毕(指数据写入操作系统的缓冲区,等待TCP协议栈完成数据的发送与重传) onWriteComplete()
    应用层发送缓冲区
    应用层接收缓冲区

    长连接TCP服务,分包

    1. 消息长度固定
    2. 特殊字符作为消息边界
    3. 消息头部加长度字段
    4. 根据消息本身格式分包(JSON、XML配对)
    -------------------------------------------------------------逆水行舟,不进则退。
  • 相关阅读:
    Mybatis3详解(一)----Mybatis的介绍
    【k8s】svc-sessionAffinityConfig
    【k8s】svc-sessionAffinity
    【k8s】svc-selector
    【k8s】svc-publishNotReadyAddresses
    【k8s】svc-ports
    【k8s】svc-externalIPs
    【k8s】svc-clusterIPs
    【k8s】svc-clusterIP
    【k8s】Service
  • 原文地址:https://www.cnblogs.com/alilliam/p/13739134.html
Copyright © 2011-2022 走看看