首页 时尚 演艺 游戏 八卦 音乐 影视 活动 热点 快讯 聚焦 综合 资讯
当前位置:首页 > 热点 > 正文

ET框架6.0分析三、网络通信

2023-05-15 17:38:46    来源:博客园
概述

ET框架的消息机制贯彻始终,包含Entity消息(Awake,Update ...),自定义(Customer)消息,网络消息等。而ET系统的进程包含了客户端、Gate等各种类型的服务器,进程包含各种服务器客户端之间通过网络消息进行通信进行工作。

ET框架消息结构

结构图为了更加明确整体关系,进行了一定程度的简化,剔除掉了一些消息解包等一些细节


(资料图片)

NetCompontent网络组件有Client客户端、Server服务器(Gate)、Inner内网服务等多态,进程业务使用网络组件进行通信,网络组件会对连接建立一个Secsiom会话对象,封装连接信息和相关操作

Service和Channel实现负责NetCompontent和Session的功能,有Tcp长连接、Web网页、KCP无连接可靠协议的多态(若不熟悉KCP协议,可以参考之前写的文章 跳转链接: KCP协议浅析)。

Channel对应一个Session连接,封装了对底层tcp等协议库的操作。Service对应一个NetCompent组件,对应NetCompent管理多个Session,Server管理和调度一堆Channel的工作。

NetServices负责调度多个Service对象的在网络线程和主线程工作任务,ET开了网络线程处理网络相关,某些进程需要多个网络组件(比如Gate服务器同时需要Server、Inner网络组件,接收转发客户端消息)。

NetComponentOnReadEvent是不同类型网络组件的消息处理器。

NetClientComponentOnReadEvent对应客户端Client,处理普通消息和RPC调用。NetInnerComponentOnReadEvent对应服务器内网类型Inner,处理Actor消息NetServerComponentOnReadEvent对应服务外网,处理Actor消息、RPC调用、普通消息消息通信

以典型的TCP协议类型为例,其他实现类似,看图相信都能理解,不多赘述。有一些要注意的点:

如上述,ET开了一个线程处理网络相关,一些工作使用了“生产-消费”Task任务这种方式。使用了异步SocketTCP发消息TCP收消息多进程调用

ET框架在基础网络消息通信基础使用了Actor模型、PRC等相关技术思想(某些思想和实现有调整)进行了拓展,提供多个进程的互相调用机制。先对相关技术做一个简介:

Actor模型

在计算机科学中,Actor模型(Actor model)是一种并发运算上的模型。“Actor”是一种程序上的抽象概念,被视为并发运算的基本单元:当一个Actor接收到一则消息,它可以做出一些决策、创建更多的Actor、发送更多的消息、决定要如何回答接下来的消息。Actor可以修改它们自己的私有状态,但是只能通过消息间接的相互影响(避免了基于锁的同步)

这是维基百科中对于Actor模型的描述,简单理解它就是提供了一种消息机制避免了基于锁的同步。一些经典的应用场景是多线程,在ET框架中它的应用场景是多进程,类似的它提供了一种机制:直接通过ID发消息,不用关心实例在哪个进程。

RPC

分布式计算中,远程过程调用(英语:Remote Procedure Call,RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统

RPC机制通过一些手段抹平了不同进程的差异,使得进程间的调用可以和本地异步调用一样处理。

了解了这两种技术,下面来看ET框架对其的应用和如何实现多进程调用的。

消息协议类型

如上图所示消息类型分为三种:

Message 消息,无需应答Request 请求,对应一个Response应答Response 应答,对应一个请求

注意Request和Response一定成对定义,且其Message一定包含一个RpcId字段

消息类型可以被前缀修饰,修饰有三种:

None 客户端与服务器(Gate)之间不需要转发的消息。(注意这里不是修饰字符不是"None",而是""表示没有)Actor 服务器内网之间的消息ActorLocation 客户端与服务器需要转发的消息。

修饰字符可以修饰任意消息类型,组合起来一共有9种消息。如这个登录到Gate的协议:

//ResponseType G2C_LoginGatemessage C2G_LoginGate // IRequest{int32 RpcId = 1;int64 Key = 2;  // 帐号int64 GateId = 3;}message G2C_LoginGate // IResponse{int32 RpcId = 1;int32 Error = 2;string Message = 3;int64 PlayerId = 4;}
C2G_LoginGate 在消息名后面注明了消息类型,并在消息名上面注明了应答包的消息类型,并且包含一个RpcId的字段,这些都必须的,表示这是个不需要转发的、需要应答的请求消息。而消息名前缀只是方便理解,起到注释的作用:表示这是Client进程发送给Gate服务器进程的消息。G2C_LoginGate 同上,是上述C2G_LoginGate请求的应答消息。Rpc调用过程

如图所示,进行Rpc调用时,生成一个新的RpcID并带入请求包中,同时把调用信息存起来。对方应答时,会把请求包的RpcID传入到应答包中。在收到消息时如果是Resp类型消息会调用OnResp方法,通过应答包的RpcID取出RpcInfo,通过RpcInfo取消调用RpcCall函数的异步阻塞。

public static void OnResponse(this Session self, IResponse response){if (!self.requestCallbacks.TryGetValue(response.RpcId, out var action)){return;}self.requestCallbacks.Remove(response.RpcId);if (ErrorCore.IsRpcNeedThrowException(response.Error)){action.Tcs.SetException(new Exception($"Rpc error, request: {action.Request} response: {response}"));return;}action.Tcs.SetResult(response);}

action.Tcs.SetResult会取消异步的阻塞,执行await后面的语句,详情见之前写的文章 跳转链接: C#异步编程

Actor模型实现

在ET框架的设计中,Actor其实是一个带有MailboxComponent的组件。其具体的实现方式,ET有比较详细的文档说明,有实现思路和使用方式的介绍,这里贴出来,不做赘述。跳转链接: ET Actor模型 官方介绍

参考链接跳转链接: Actor模型介绍跳转链接: RPC介绍

猜您喜欢
  • ET框架6.0分析三、网络通信
    ET框架6.0分析三、网络通信
    概述ET框架的消息机制贯彻始终,包含Entity消息(Awake,Update ),自定义(Customer)消息,网络消息等。 2023-05-15
  • 环球头条:重庆8种农产品上榜!今年第一批全国名特优新农产品名录公布
    环球头条:重庆8种农产品上榜!今年第一批全国名特优新农产品名录公布
    “全国名特优新农产品”名录公布了重庆8种农产品上榜!近日,农业农村部农产品质量安全中心公布了2023年第 2023-05-15
  • 苏丹冲突已致676人死亡 苏丹民航局延长领空关闭时间
    苏丹冲突已致676人死亡 苏丹民航局延长领空关闭时间
    新华社苏丹苏丹港5月14日电(记者王丙飞)联合国方面14日表示,苏丹武装部队与快速支援部队的冲突已造成至 2023-05-15
  • 上海捷克签证中心签证如何办理详细流程
    上海捷克签证中心签证如何办理详细流程
    一、上海捷克签证中心签证如何办理详细流程捷克的签证只要资料齐全,不难办,但要求必须买保险。网上可以下 2023-05-15
  • “精模”助振兴 “双碳”助变革 做产业发展强支撑 每日视讯
    “精模”助振兴 “双碳”助变革 做产业发展强支撑 每日视讯
    天津轻工职业技术学院坚持以服务求发展,在创新发展中彰显作为,立足天津市制造业立市战略,围绕天津市“1+ 2023-05-15
  • 【天天游讯】《塞尔达传说:王国之泪》在MTC遭到差评轰炸
    【天天游讯】《塞尔达传说:王国之泪》在MTC遭到差评轰炸
    天天RPGNews①《地平线:西之绝境》DLC演员晒新买的PS5:再见Xbox近日《地平线:西之绝境》DLC演员KylieLiy 2023-05-15
  • 新里程碑 《极限竞速:地平线5》玩家数已超3000万 全球热推荐
    新里程碑 《极限竞速:地平线5》玩家数已超3000万 全球热推荐
    近日根据玩家反馈,《极限竞速:地平线5》游戏内的排行榜数据显示,该作的玩家数量已经超过3000万,达成了 2023-05-15
  • 新报告显示:Switch七年时间为任天堂赚了690亿美元|热推荐
    新报告显示:Switch七年时间为任天堂赚了690亿美元|热推荐
    根据网站TweakTown com的一份新报告显示,Switch在发售后的七年时间里为任天堂赚取了超690亿美元。TweakTow 2023-05-15
  • “永生”干细胞培养肉问世 有望实现人造肉无限量供应
    “永生”干细胞培养肉问世 有望实现人造肉无限量供应
    快科技今日(5月15日)消息,人造肉目前已经在全球掀起了一股新风潮,有关人造肉的争议也一直不断,人造肉 2023-05-15
  • 百联ok卡官网_ok卡官网|当前快讯
    百联ok卡官网_ok卡官网|当前快讯
    1、ok卡可以到官方的正规团购处购买。2、OK卡一般是百联旗下的商场都能使用。3、直接进入官网,然后注册用 2023-05-15
  • 【世界时快讯】华科资本(01140)4月末每股资产净值约为0.960港元
    【世界时快讯】华科资本(01140)4月末每股资产净值约为0.960港元
    智通财经APP讯,华科资本(01140)发布公告,于2023年4月30日,华科资本有限公司每股股份的未经审核资产净值 2023-05-15
  • 这是一份期货散户晋升超级大户指南。文段四|世界讯息
    这是一份期货散户晋升超级大户指南。文段四|世界讯息
    投资保本比增值更重要在投资市场保本比增值更重要,好比在战争中。不顾自己的生命去抓 2023-05-15
  • 崆峒区麻武乡:特色产业强村富民 乡村振兴“底气”十足|独家焦点
    崆峒区麻武乡:特色产业强村富民 乡村振兴“底气”十足|独家焦点
    近年来,麻武乡党委政府始终把“产业富民”作为发展农村经济、助推乡村振兴的重要抓手,立足村集体实际,发 2023-05-15
  • 脱口秀节目排行榜2018_脱口秀节目排行榜 每日速读
    脱口秀节目排行榜2018_脱口秀节目排行榜 每日速读
    1、脱口秀主要谈主数节目都PPS看比较名:陈鲁豫主持《鲁豫约》(凤凰卫视湖南卫视)汪涵主持《向》(湖南卫视)李 2023-05-15
  • “行走河南·读懂中国”文明探源采访团走进“中华字都”安阳-今日最新
    “行走河南·读懂中国”文明探源采访团走进“中华字都”安阳-今日最新
    5月13日至14日,由省委宣传部组织的“行走河南·读懂中国”文明探源集中采访团走进“中华字都”安阳。10余 2023-05-15
  • 券商今日金股:20份报告力挺一股(名单)-今亮点
    券商今日金股:20份报告力挺一股(名单)-今亮点
    券商评级是指证券公司的分析师,通过分析上市公司的财务潜力、财务指标、公司运营治理能力,然后进行实地考 2023-05-15
  • 环球观焦点:OPPO旗下哲库突然关停 “吞金兽”自研芯片何去何从?
    环球观焦点:OPPO旗下哲库突然关停 “吞金兽”自研芯片何去何从?
    5月12日,OPPO旗下芯片设计公司哲库(ZEKU)突然关停。哲库一度吸引了来自高通、紫光展锐等芯片设计龙头的 2023-05-15
  • 世界快报:鹤壁房子1000元一套?官方回应具体详细内容是什么
    世界快报:鹤壁房子1000元一套?官方回应具体详细内容是什么
    鹤壁房子1000元一套?官方回应今天的热度非常高,现在也是在热搜榜上了,那么具体的鹤壁房子1000元一套?官 2023-05-15
  • 孝感安陆交警打人?老人被打进ICU
    孝感安陆交警打人?老人被打进ICU
    孝感安陆交警打人?老人被打进ICU 2023-05-15
  • 在线起英文名字软件_在线起英文名
    在线起英文名字软件_在线起英文名
    1、关键词:女子英文名大全ABIGALE原为古希伯来名,意思是 "最初的欢乐 "或 "欢乐之本 "。2、在圣经撒母尔记上 2023-05-15
  • Copyright © 2008-2015 当代娱乐网版权所有   Inc. All Rights Reserved.    联系邮箱:55 16 53 8 @qq.com  京ICP备2021034106号-22