firefly架构说明

2023-10-31

Firefly是免费、开源、稳定、快速扩展、能 “热更新”的分布式游戏服务器端框架,采用Python编写,基于Twisted框架开发。它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务,节省大量游戏开发的工作时间,真正做到让使用者把精力放在游戏玩法逻辑上。用它可以搭建自定义的分布式架构,只需要修改相应的配置文件即可。

优势特性

  • 采用单线程多进程架构,支持自定义的分布式架构;
  • 方便的服务器扩展机制,可快速扩展服务器类型和数量;
  • 与客户端采用TCP长连接,无需考虑粘包等问题;
  • 封装数据缓存服务;
  • 可实现实时热更新数据以及游戏逻辑,客户端玩家无感觉;
  • 有几十个基础游戏玩法系统模块提供组装使用(v1.3.0提供);


框架介绍

123.jpg 

management, firefly 是个多进程、分布式的游戏服务器。因此各游戏server(进程)的管理和扩展是firefly很重要的部分,框架通过抽象使服务器的扩展非常容易。

Network,客户端连接通信、server进程间的通信等构成了整个游戏框架的脉络,所有游戏流程都构建在这个脉络上。与客户端的通信采用的是请求/回应式的,所以受到的客户端的请求,服务端都会给出相应的回应,服务端也能主动的推送,广播给客户端消息。这些请求是基于指令号的请求。(例如定义101为登陆指令)server进程之间的通信时采用的异步回调的方式,这样就减少了的进程间通过网络通信中的时间消耗。

Data, 数据处理是网游的重要部分。在网游有大量的数据需要存储,需要更新,这使得数据库的读写效率成为服务器的最大的性能瓶颈。firefly的db处理能够将数据库表中的数据缓存到memcache中并能以对象的形式进行调用相应的对象方法对数据进行操作。可以在不同的进程中通过实例化相同的名称的缓存实例,得到同步的数据。并能将缓存对象中的数据写回数据库中。
框架思路

一个最基本的服务器就是一个在不停运行着的应用程序。在分布式游戏服务器中,我们需要的服务器具有的功能有,监听客户端的连接,监听其他服务进程的消息,连接其他的服务进程,有些需要有数据库连接和缓存服务。如下图

234.jpg 

net connect 做客户端连接,root监听其他服务进程消息,node连接其他服务进程,db数据库,cache缓存。是否需要监听客户端连接,是否监听其他服务进程消息等这是都是可以在config.json中进行配置。包括各个服务器的名称以及各个服务器之间的连接关系。这样就可以自定义出自己的分布式架构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

firefly架构说明 的相关文章

  • 具有多个输入的kerasvalidation_data

    我尝试使用validation data方法 但是有问题 model fit X macd train X rsi train X ema train Y train sample weight sample weight validati
  • 如何从 Python 返回 JSON 值?

    我从如下所示的 jQuery 文件发送 ajax 请求 该请求需要 JSON 格式的响应 jQuery ajax url Control getImageDetails file id currentId type GET contentT
  • 如何读取通过追加行不断更新的文件?

    在我的终端中我正在运行 curl user dhelm 12345 https stream twitter com 1 1 statuses sample json gt raw data txt curl 的输出是实时流式 Twitte
  • 管理 Tweepy API 搜索

    如果这是对之前在其他地方回答过的问题的粗略重复 请原谅我 但我不知道如何使用 tweepy API 搜索功能 是否有任何有关如何使用搜索推文的文档api search 功能 有什么方法可以控制返回的推文数量 结果类型等功能 由于某种原因 结
  • 如何跳过财务图中的空日期(周末)

    ax plot date dates dates highs lows 我目前正在使用此命令来绘制财务高点和低点Matplotlib http en wikipedia org wiki Matplotlib 效果很好 但如何删除 x 轴上
  • 查找 python 数据框中每行的最高值

    我想找到每行中的最高值并返回 python 中该值的列标题 例如 我想找到每行的前两个 df A B C D 5 9 8 2 4 1 2 3 我希望我的输出看起来像这样 df B C A D 您可以使用字典理解来生成largest n数据帧
  • 在Python中迭代文件对象不起作用,但readlines()可以,但效率低下

    在下面的代码中 如果我使用 for line in fin 它只对 a 执行 但如果我使用 wordlist fin readlines for line in wordlist 然后它执行 a thru z But readlines 立
  • 检查多维 numpy 数组的所有边是否都是零数组

    n 维数组有 2n 个边 1 维数组有 2 个端点 2 维数组有 4 个边或边 3 维数组有 6 个 2 维面 4 维数组有 8 个边 ETC 这类似于抽象 n 维立方体发生的情况 我想检查 n 维数组的所有边是否仅由零组成 以下是边由零组
  • 使用 OpenCV 进行相机校准 - 如何调整棋盘方块大小?

    我正在使用 OpenCV Python 示例开发相机校准程序 来自 OpenCV 教程 http opencv python tutroals readthedocs io en latest py tutorials py calib3d
  • 将分布拟合到直方图

    I want to know the distribution of my data points so first I plotted the histogram of my data My histogram looks like th
  • 比较两个文本文件并计算差异

    我一直在尝试在Python中比较两个文本文件 本质上我想打开它们并一次比较一个字符 如果字符不同 则向计数器添加1 然后显示该值 这是我到目前为止所拥有的 usr bin env python diff 0 import random im
  • 获取 HTML 代码的结构

    我正在使用 BeautifulSoup4 我很好奇是否有一个函数可以返回 HTML 代码的结构 有序标签 这是一个例子 h1 Simple example h1 p This is a simple example of html page
  • 将 for 循环替换为 pyspark 中的并行进程

    我在脚本中使用 for 循环来为 size DF 数据帧 的每个元素调用函数 但这需要很多时间 我尝试通过地图删除 for 循环 但没有得到任何输出 size DF 是我从表中获取的大约 300 个元素的列表 用于 import call
  • Python Flask应用程序无法被网络中的远程计算机访问

    我在本地主机上的 python 上运行了一个简单的 Flask Web 应用程序 Web 应用程序在 127 0 0 1 8000 上运行 但我无法使用 myHostComputerIPaddress 8000 从网络中的远程计算机访问它
  • 让 TensorFlow 在 ARM Mac 上使用 GPU

    我已经安装了TensorFlow在 M1 上 ARM Mac 根据这些说明 https github com apple tensorflow macos issues 153 一切正常 然而 模型训练正在进行CPU 如何将培训切换到GPU
  • Python:使用for循环更改变量后缀

    我知道这个问题被问了很多 但到目前为止我无法使用 理解答案 我想改变for循环中变量的后缀 我尝试了 stackoverflow 搜索提供的所有答案 但很难理解提问者经常提出的具体代码 因此 为了清楚起见 我使用一个简单的示例 这并不意味着
  • Docker Build 找不到 pip

    尝试关注一些 1 https aws amazon com blogs aws run docker apps locally using the elastic beanstalk eb cli 2 http docs aws amazo
  • 在哪里可以找到Python内置序列类型的时间和空间复杂度

    我一直无法找到此信息的来源 无法亲自查看 Python 源代码来确定这些对象是如何工作的 有谁知道我可以在网上找到这个吗 结帐时间复杂度 http wiki python org moin TimeComplexitypy dot org
  • Python模糊字符串匹配作为相关样式表/矩阵

    我有一个文件 其中包含 x 个字符串名称及其关联的 ID 本质上是两列数据 我想要的是一个格式为 x by x 的相关样式表 将相关数据作为 x 轴和 y 轴 但我想要 fuzzywuzzy 库的函数 fuzz ratio x y 作为输出
  • 使用Python的线程模块调用ctypes函数比使用多处理更快?

    我一生都无法找出这个问题的答案 我编写了一个可以执行数百次繁重计算的脚本 我有一个绝妙的主意 将这些计算任务编写为 C 然后使用 Python 的 ctypes 与它们交互 我心想 我什至可以使用并行性进一步优化它 我最初的方法是使用线程

随机推荐

  • 在设计软件测试用例的原则,设计软件测试用例需要遵循的四条原则

    测试 由于成本因素的介入 决定了工程中设计好的测试用例原则不只有 覆盖住所要测试的功能 这一条 下面是我根据自己的工作经验总结出的其它四条原则 在这里抛砖引玉 希望大家拍砖和指正 这些原则特别是针对那些需要被自动化 并且是要被经常执行的测试
  • node js 路由模糊匹配_我们为什么需要Node中间层

    首先跳出前端 要看清node中间层在整个服务承担什么角色 首先我们要跳出前端的视野 把自己视角提示一个level 去鸟瞰整个项目 互联网时代其实就是信息时代 我们都是在利用数据交换 来产生价值 一个最简单的数据流 前端 gt 后端 gt 数
  • mysql基础知识点回顾(精简,不包含存储过程等)

    数据库的基础知识 数据分类 结构化数据 能够使用统一的结构表示的数据 如数字 字符等 半结构化数据 介于完全结构化和完全无结构化之间 如xml和html等 非机构化数据 长度可变 不能使用统一的结构表示的数据 如图像 音频 数据库的分类 关
  • 用Python实现简单登录注册小程序

    判断文件是否存在 pi 1 while pi lt 2 try a open mima a close except a open mima w a close else pi 3 a open mima r str 1 for line
  • 网卡获取ip地址失败

    linux redhat虚拟机上网卡获取ip地址失败 网卡设置为自动获取ip的 重启network服务提示如下信息 Bringing up interface eth0 RTNETLINK answers No such device 查看
  • android O以后版本 自定义Notification

    最近在使用通知的时候 发现方法执行后 没有弹出通知 而是提示下面的错误 Developer warning for package com example test Failed to post notification on channe
  • HTTP和SOAP完全就是两个不同的协议

    HTTP和SOAP完全就是两个不同的协议 HTTP只负责把数据传送过去 不会管这个数据是XML HTML 图片 文本文件或者别的什么 而SOAP协议则定义了怎么把一个对象变成XML文本 在远程如何调用等 怎么能够混为一谈 这样说两种协议 H
  • 【Eviews】异方差的检验(图示检验法、white检验法、GQ检验法)与修正(加权最小二乘法)

    异方差 模型中随机扰动项的方差 随 解释变量 的变动而变动 异方差的检验 图示法 先对y x做线性回归 这样才能产生残差resid GQ检验法 切记 先对解释变量x排序 一般是按照升序 再截断样本 取一头一尾 计算残差平方和 构造F检验 得
  • 三数论大小(引用)

    题目描述 输入三个整数 然后按照从大到小的顺序输出数值 要求 定义一个函数 无返回值 函数参数是三个整数参数的引用 例如int a int b int c 在函数内通过引用方法来对三个参数进行排序 主函数调用这个函数进行排序 要求 不能直接
  • 网络爬虫数据解析的四种方式之XPath

    文章目录 前言 四种数据解析方式 数据解析之XPath XPath介绍 在浏览器中安装XPath helper插件 XPath使用方法 通过浏览器测试插件是否安装成功 通过python代码实现用XPath来解析数据 前言 快期末了 有个数据
  • Linux学习之VMware虚拟机安装

    前言 今天是癸卯年正月十五元宵节 在此祝大家元宵快乐 这篇文章主要给大家介绍安装VMware虚拟机的步骤 话不多说 开始安装 安装准备 VWware workstation rhel 8 2 x86 64 dvd iso 64 位操作系统
  • Bash 脚本

    什么是 Bash 简介 Bash GNU Bourne Again Shell 是一个为 GNU 计划编写的 Unix shell 它是许多 Linux 平台默认使用的 shell shell 是一个命令解释器 是介于操作系统内核与用户之间
  • 广度优先搜索(邻接矩阵)

    广度优先搜索 邻接矩阵 1 1一 用数组来存放顶点 vexs 0 A vexs 1 B vexs 2 C vexs 3 D vexs 4 E vexs 5 F vexs 6 G vexs 7 H vexs 8 I 1 2 用邻接矩阵来表示边
  • webrtc 看不到对方画面是什么原因_WebRTC 细节探究

    探究 从了解到理解 从理解到看见 写在前面 WebRTC 的使用并不复杂 可是其中的流程细节还是挺值的深挖的 每个人脑回路不一样 感到困惑的点可能也不一样 这篇主要讲了Signaling这个过程的一些小细节 如果有错欢迎指出一起讨论 深究
  • Windows系统配置maven环境

    windows安装maven 我们为什么要配置maven呢 Maven是统一集中管理好所有的依赖包 不需要程序员再去寻找 Maven项目会有一个 pom xml文件 在这个文件里面 只要你添加相应配置 他就会自动帮你下载相应jar包 不用你
  • 4.5 服务器上的 Git - Git 守护进程

    4 5 服务器上的 Git Git 守护进程 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 25 初稿 目录 文章目录 4 5 服务器上的 Git Git 守护进程 版本说明 目录 Git 守护进程 Git 守护进程 接
  • redis订阅发布介绍

    redis订阅发布 redis发布订阅 pub sub 是一种消息通信模式 订阅者 pub 发送消息 订阅者 sub 接受消息 比如生活中的微信订阅公众号 微博关注账号 redis客户端可以订阅任意数量的频道 这分为三个部分 消息发送者 频
  • 基于人工智能算法实现AI足球比赛

    相关资料 http t csdn cn 1XSne 实现目标 目前进展 主要用到就是射门概率那块 用随机数 能力值来控制 include
  • 周志华《Machine Learning》学习笔记(9)--EM算法

    上篇主要介绍了贝叶斯分类器 从贝叶斯公式到贝叶斯决策论 再到通过极大似然法估计类条件概率 贝叶斯分类器的训练就是参数估计的过程 朴素贝叶斯则是 属性条件独立性假设 下的特例 它避免了假设属性联合分布过于经验性和训练集不足引起参数估计较大偏差
  • firefly架构说明

    Firefly是免费 开源 稳定 快速扩展 能 热更新 的分布式游戏服务器端框架 采用Python编写 基于Twisted框架开发 它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务 节省大量游戏开发的工作时间 真正做到让使用者把精力