基于node.js的高可扩展游戏服务器框架 设计与实现

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

教师成绩录入步骤 1. 登录教务系统 2. 进入教师成绩管理界面 3. 选择相应的教学班,点击 “ 课程成绩录 入 ” 进入成绩录入界面 4. 点击 “ 设置 ” 按钮设置 “ 成绩分项 ” 5. 录入成绩, “ 保存成绩 ” 按钮可以保存成 绩但不提交(提交后不能再修改成绩) 6. “ 提交成绩 ”
7.2 图示化记忆 记忆的概述 图示化记忆 联想记忆法 奇特联想记忆法 用手记忆.
方振镇 华东架构师大会. SNS 和 Web 游戏基本对比 SNS 游戏后台 Web 游戏后台 如何选择 问答.
高级服务器设计和实现 1 —— 基础与进阶 余锋
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
事件驱动的移动数据中心 广州舜飞信息科技有限公司 谭荣棉.
第十六章 股票交易資訊分析與試算 課前指引 目前最熱門的理財方式莫過於投資股票市場,因此本章首先講解如何從美國股市匯入重要資料,之後教授使用WEB查訊功能,匯入台灣股市即時或盤後交易資訊到Excel工作表中,再利用資料分析工具來協助瞭解個股。最後再利用Excel圖表功能來繪製成股票K線圖,這是不是很有趣及實用呢?
大世界网络游戏服务器的构架 Deep cold 游戏引擎.
基于Pomelo的MMO RPG开发 网易杭州研究院
第二章 项目一:企业厂区与车间平面设计 1.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
实用操作系统概念 张惠娟 副教授 1.
第8章 机床操作 主讲:臧红彬 博士.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
第一部分 系统概述 第二部分 技术背景 目录 第三部分 维修流程描述 成功案例 第四部分. 第一部分 系统概述 第二部分 技术背景 目录 第三部分 维修流程描述 成功案例 第四部分.
企业级云计算 A Enterprise Cloud Serivce
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
網路安全技術期末報告 Proxy Server
Hadoop I/O By ShiChaojie.
瑞斯康达—MSG1500 产品类型:路由器 建议零售价格:198元 上市时间:2017 年 3月
AngularJS -- 使用AngularJS进行开发
面向对象建模技术 软件工程系 林 琳.
从现在做起 彻底改变你自己 Sanjay Mirchandani EMC公司高级副总裁、首席信息官.
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
SQL Injection.
Qt网络编程实战之HTTP服务器 安晓辉(foruok)
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
Visual Studio Team System 简介
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十一章 電腦網絡.
PaPaPa项目架构 By:Listen 我在这.
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
WEB统一检索本地整合技术 中国农业大学图书馆 康实.
打造樂活好宅 居家生活佈置 租屋要注意.
SOA – Experiment 2: Query Classification Web Service
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
中央研究院資訊科學所 陳伶志 電 腦 網 路 中央研究院資訊科學所 陳伶志
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
 协同工作,共创辉煌 New Media , New Chance.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
信号量(Semaphore).
解决“最后1公里”问题.
核探测与核电子学国家重点实验室 中国科学技术大学近代物理系 王照琪
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
数据集的抽取式摘要 程龚, 徐丹云.
Chapter 18 使用GRASP的对象设计示例.
指導老師:蘇怡仁老師 組員:陳翊嘉、何盈宏、黃皇瑋、鄭楚懷
郑 昀 应用开发事业部 神州泰岳 SIP多方会话消息 之实例讲解 郑 昀 应用开发事业部 神州泰岳
民航新疆气象中心 对用户的支持与服务概述 米永胜 2019年5月20日 航空气象的宗旨是为航空飞行的安全、正常和效益服务。
OpenStack vs CloudStack
CMP 讲义 2018 CMP设计哲学及基础概念 CMP推荐的4层代码结构.
Google的云计算 分布式锁服务Chubby.
_07多连接之select模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Zookeeper的应用 Hbase Kafka Twitter Storm Spark—mesos+zookeeper.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
《NIOS II那些事儿》视频教程(三) -- NIOS II开发初探
Presentation transcript:

基于node.js的高可扩展游戏服务器框架 设计与实现 周永昶 zhouyongchang@corp.netease.com

提纲 Node.js与游戏服务器 游戏服务器框架的可扩展性 游戏的可扩展性 框架的可扩展性

Node.js与游戏服务器 Pomelo 定位 目标 Web,社交,Mobile游戏服务器 简化游戏开发 https://github.com/NetEase/pomelo

Node.js与游戏服务器 什么是node.js Node.js 特性 Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js 特性 服务器端js 事件驱动,异步IO 单线程 轻量 快速开发

Node.js与游戏服务器 为什么用node.js 优势 IO 可扩展性 Javascript 社区 不足 CPU密集计算

游戏服务框架的扩展性 为什么扩展? 如何扩展? 游戏服务器的特性 框架的特性

游戏服务器的扩展性 Web服务器 短连接 无状态 无限水平扩展

游戏服务器的扩展性 游戏服务器 长连接 有状态 响应时间~100ms 有策略的扩展

游戏服务器的扩展性 单服架构 所有处理均在一个进程内完成 优点:简单 缺点:扩展难度较大

游戏服务器的扩展性 模块化架构 将场景分离出来 游戏世界随场景进行扩展 设计和维护复杂

游戏服务器的扩展性 BigWorld架构 无缝地图,无限大的世界 强大的负载均衡

游戏服务器的扩展性 游戏服务器架构发展趋势

游戏服务器的扩展性 扩展的策略 多进程单线程 避免线程间的并发问题 单一进程负责单一服务 进程间通过消息进行通讯 以服务为单位进行功能扩展 使得游戏世界的扩展更容易

游戏服务器的扩展性 扩展的策略 服务器的类型与数量 服务器类型为模板 服务进程为实例 以实例的数量进行水平扩展 更合理的分配资源

游戏服务器的扩展性 扩展的策略 场景的分区策略 避免分布式的状态同步 以场景为单位分区 场景内所有状态在同一个进程(玩家,怪物,NPC等) 无状态的服务可以分离出来(寻路等)

游戏服务器的扩展性 Demo http://pomelo.netease.com/lordofpomelo/

游戏服务器的扩展性 运行时进程结构

游戏服务器的扩展性 小结 游戏服务器是一个整体 将问题分解,简化 灵活扩展,合理分配资源 从头开发比较复杂

框架的扩展性 设计目标 支撑游戏服务器的架构模型 简化游戏服务器开发

框架的扩展性 考虑的问题 服务器整体规划 单个服务进程的规划 业务逻辑的实现和扩展 框架的通用性

服务器的整体规划 服务器整体规划 提取服务器的共性 服务进程的类型 服务进程的数量 可能会有很多种类型的进程 不同的类型可能有不同的特性 不同类型的进程可能分配不同的数量 提取服务器的共性

服务器的整体规划 服务器的抽象 master backend frontend backend rpc backend frontend forward message frontend push message by channel backend rpc backend frontend backend

服务器的整体规划 Frontend Server 承载客户端连接 维护session信息 将请求分发给后端服务器 向客户端推送消息

服务器的整体规划 handler remote session before after dispatcher filter websocket rpc

服务器的整体规划 Backend Server 接收前端分发的请求 实现业务逻辑 提供远程服务 通过channel向客户端推送消息

服务器的整体规划 handler remote channel before after dispatcher filter rpc

服务器的整体规划 服务类型的定制 area connector chat frontend backend status 基于websocket的server 提供rpc服务的server

服务器的整体规划 实现策略:惯例优先 按服务器类型划分目录 handler实现请求处理逻辑 remote实现远程调用接口 一个工程管理所有代码 开发者只要填空就可以了 server type

服务器的整体规划 配置文件指定实例数量

服务进程的规划 单个服务进程的规划 进程对外的服务能力 服务的能力应该怎么获得 能力的复用:继承 or 组合

服务进程的规划 组件系统 组件是服务的功能单元 将组件组合到一起让进程具有相应的能力 组件间通过一个统一的上下文进行协作 将大软件分解为小模块

服务进程的规划 基于组件的扩展 app handler client connector rpc client proxy client server remote peer

服务进程的规划 组件的生命周期

服务进程的规划 不同层次的抽象 area chat status connector container backend frontend component core

业务逻辑的实现与扩展 业务逻辑的实现 客户端请求的处理 RPC的处理

客户端请求 服务流程的扩展 业务逻辑与前/后置逻辑分离 Handler实现业务逻辑 Filter负责前/后置逻辑,是服务流程的扩展点

RPC RPC的作用 服务器间通讯的基础 隐藏底层通讯的细节 考虑的问题 多进程间通讯 路由控制 协议切换

RPC RPC Client

RPC RPC Server

Q&A