windows版gbc:基于enginx的组件服务器系统paas,可用于mixed web与websocket game

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 本文关键字:利用nginx实现paas,利用nginx实现组件化游戏引擎,(openresty)nginx+lua实现混合cs/bs一体化分布式架构

本文关键字:利用nginx实现paas,利用nginx实现组件化游戏引擎,(openresty)nginx+lua实现混合cs/bs一体化分布式架构

在前面的文章中说到,enginx搭配任何领域协议引擎/逻辑引擎就能形成一个专门的服务器套装,enginx负责任何其它的事情。比如IO,安全,前后端其它组件的协配作为胶合剂而存在。拿传统游戏服务器来说,独立游戏(世界,地图,现实登录,转发网关,负载网关,etc..)处理服务器往往是将领域逻辑做成服务器的部分,enginx它本身没有游戏以上任一方面的服务器,但利用其可lua编程定制IO逻辑+胶合不同服务器的能力,可以实现和替换其中的一部分,比如,1实现不同的gamegate作消息转发,就实现了用enginx编程替换了其中的网关部分:

这样配合传统服务器就将其纳入到了一个统一的enginx生态。向高可定制服务器集群系统发展,(enginx即是服务器的框架的框架):

一个现代APP无非由界面,存储,网络与交互,领域逻辑等stacks组成,enginx可以负责包括网络交互与安全在内的一系列事情,openresty+lua可定制的能力使得定制服务器集群变得高可用,一体化。使任何分布式集群形成appstack化。特别适用于定制web架构及其其它tcp集群架构。是服务器的服务器。
再比如,2,搭配msg middleware实现api和领域协议处理。甚至可以将领域逻辑引擎enginx生态化不需要外来服务器实现(基于lua的领域引擎不会比原生本地的服务器性能下降多少)。甚至向组件服务器系统发展:

比如,进一步,配合协议处理,enginx能使任何分布式长链接应用共享与WEB一样的语义化协议(不需要定制协议处理细节):

比如,具体到网络交互细节部分(协议处理)的一种实现法,可以做成更一体化的方案,比如类web的协议封装,比如websocket,其实二端通讯,无论是基于多高级的应用层高级协议如HTTP,WEBSOCKET都要加上自己领域的那一层,这些是语义化的东西,PB即可以做。如果是简单基本websocket的游戏服务端框架的话。那么只需要提供网络支持即可(或者再加上一个协议文档化的东西比如pbc,portobuffer)。这样基本上就是一个简单的组件化语义游戏服务端框架了。

更甚至,配合语言系统,enginx甚至能使之成为一个容器性质(且以语言后端为基础的,下面会说到)的APP环境:

比如,当这种语言是一种脚本语言时,配合解释器开一个worker线程执行一段脚本就达了这个目的。(这就是不折不扣的paas+langsys backend baas了)。这体现了enginx,能直接接上语言,以语言后端真正成为领域逻辑服务器的特点且以容器的方式进行。这就是“组件+脚本组件+容器”了

好了,VS传统服务器,GBC即是以上谈到的组件服务器的一种实现:

gbc的特点 VS kbe:传统服务器集群与组件服务器系统

这个对比几乎是专门的服务器集群(传统服务器)vs逻辑清希的脚务器脚本化组件(组件服务器)的区别了。

它有一台beanstalked和pbc组成的领域协议处理系统。niginx只负责io和中转部分。我认为这是除了语言后端的逻辑处理,其网络协议处理方面是作为组件服务器化的另一大特点,其以语言为容器制造worker的特点。每个脚本都是一个app,一个应用的特点,更是其同时可用于游戏服务器和一般化HTTP WEB服务器的二大努力。

可以看出,组件服务器的逻辑更清晰,突出语言后端,CS/BS全包架构,定制逻辑引擎方面的能力更强大。与单语言环境的PAAS相比可以同时接上多语言促成多语言环境下的PAAS。

gbc改造成windows版本

gbc默认只在unix系发布运行,流程逻辑基本上是py virtualenv利用supervisor开启nginx,redis,beanstalk+2个app的守护过程:由于作为主体的openresty与其它组件都在windows上有实现,除在win下supervisor不能移殖外其它都可移殖所以可以轻易将其移殖到windows上。全程只多了那个supervisor,只要把这个去除(换成普通的windows支持的调用方式即可),gbc本身的framework和package都并不用动。

改动的部分:主要是配置部分和启动部分(有四个文件start_server,shell_func.sh,shell_func.lua,start_work.lua需要涉及到和简化掉,前二基本可直接删除我把它做成了以下一个简化浓缩的bat如下),后二个文件需大改(涉及到很多路径修改的部分看下载):

luajit %CD%\update_config.lua
cd %APPSTACK_ROOT%\openresty\
RunHiddenConsole nginx2
cd %APPS_ROOT%\gbcdata\
RunHiddenConsole beanstalkd -l 127.0.0.1 -p 11300 -b %APPS_ROOT%\gbcdata\db
RunHiddenConsole redis-server2 %APPSTACK_ROOT%\redis\redis.conf
cd %GBC_ROOT%\
 
REM 这里的路径要做成workerbootstrape中按approotpath为key取configs的形式:  即其中 local appConfig = self._configs[appRootPath]这句
start luajit start_worker.lua %APPSTACK_ROOT%\gbc %APPS_ROOT:\=/%/gbcdata/apps/welcome
start luajit start_worker.lua %APPSTACK_ROOT%\gbc %APPS_ROOT:\=/%/gbcdata/apps/tests

以下是效果和运行图:

本地下载:

gbc.rar


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
76 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
|
1月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
59 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
1月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
36 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
10天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
17天前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
38 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
7天前
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
9天前
|
Windows
Windows系统云服务器配置多用户登录
本教程介绍了在Windows云服务器上配置远程桌面服务的详细步骤,包括安装桌面会话主机和远程桌面授权、允许多用户远程连接以及配置新用户并加入远程桌面用户组。通过添加角色和功能、设置组策略以及管理用户权限,实现多用户同时登录和远程访问。按照指引操作,可顺利完成服务器的远程访问配置,提升管理和使用效率。
26 0
|
2月前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
199 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
4月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
115 32
|
4月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
274 13
如何配置Windows主机MPIO多路径访问存储系统