zoukankan      html  css  js  c++  java
  • BeetleX使用经验记录

    概述

    BeetleX是一款高性能的服务通讯应用框架,通过它可以构建高吞吐的通讯应用服务。

    • 基于异步的通讯模型,可应对百万级别的服务通讯需求
    • 支持TLS,可制定更可靠安全的通讯服务
    • 支持Linux,Windows等多平台部署
    • 支持完善的会话管理机制,针对就同应用扩展不同的会话管理机制
    • Stream的数据操作模式,无缝兼容更多序列化组件并大大降低内存复制,让性能更出色。

    Github:https://github.com/IKende/BeetleX

    文档:http://doc.beetlex.io/

    记录内容

    主要记录文档中没提到的细节信息,以免以后忘记,持续更新中……

    1、服务端向客户端发送内容格式

    IServer有Send方法,message是object类型,看示例可以直接传字串,进行发送。

    bool Send(object message, ISession session);
    
    bool[] Send(object message, params ISession[] sessions);
    
    bool[] Send(object message, System.ArraySegment<ISession> sessions);

    如果传byte[]的话就需要传入IWriteHandler类型的数据了,BytesHandler实现了IWriteHandler接口(具体实现代码),

    //data是byte[]数组
    IWriteHandler write = new BytesHandler(data);
    Server.Send(write,Server.GetOnlines()); //向所有连接客户端发消息

     2、TCP连接超时自动关闭连接的属性配置及使用

    在创建TCP服务的时候配置SessionTimeOut 会话超时时间,单位是;当会话在指定时间内没有接收数据的情况会主动关闭,默认值是0不启用超时检测。

    server.Options.SessionTimeOut = 30;

    但在在接收数据事件中更新接收时间,否则30秒后自动认为当前连接超时未收到数据。

             //比如:
             protected override void OnReceiveMessage(IServer server, ISession session, object message)
            {
                server.UpdateSession(session); //防止超时
    
                //.....业务代码.....
    
            }

     3、一些其它配置的强化说明

    Combined 数据包Buffer整合序列化,些值只适用于广播给多个会话的时候用,默认值是0不开启

    适用场景:避免向N个连接发消息,每个连接各自序列化消息的情况,但如果发送消息是byte[]的话,是否启用意义不大。

    备注:如果实际需求很多消息向一个(少量)连接发送时,加大sendbuffer,可以使用“BufferSize 会话题数据缓冲大,默认是8K”搞定。

    IOQueueEnabled 是否启用线程队列来处理接收的消息,默认不启用

    适应场景:至少6核以上的CPU,没几核的就别开了,性能反而不好(经过Concurrent的集合越多,性能可能越差,这个和锁设计有些关系

    备注: [Warring] no serverGC mode,please enable serverGC mode!   <-这个也一样,至少6核以上的CPU,没几核的就别开了

    4、Websocket的使用

    4.1、断线事件

    采用HttpDisconnect事件,Websocket相关对像都在e.Session.Tag中

    4.2、Websocket原始的数据接收处理

    采用WebSocketConnect和WebSocketReceive事件处理,即不使用,数据发送用SendToWebSocket(可指定特定要发的HttpRequest)

    4.3、FasthttpApi热更新

    fasthttpapi有做热更功能,只是并没介绍这一功能,代码可以查看
    https://github.com/IKende/FastHttpApi/blob/master/src/ModuleManage.cs 
  • 相关阅读:
    httpClient-3.1学习笔记
    HTTP Header 详解
    Java:对象的强、软、弱和虚引用
    Spring @ResponseBody 返回乱码 的优雅解决办法
    Spring MVC 返回类型为字符串时, 返回中文变成"?"处理
    GroupVarint
    Format
    DynamicConverter
    Thread pools & Executors
    Futures
  • 原文地址:https://www.cnblogs.com/e4ky/p/12487542.html
Copyright © 2011-2022 走看看