Pomelo知识框架
一、Pomelo 基础概念
-
Pomelo 简介
-
定位:分布式游戏服务器框架(网易开源)。
-
特点:高并发、可扩展、多进程架构、支持多种通信协议(WebSocket、TCP等)。
-
适用场景:MMO RPG、实时对战、社交游戏等。
-
-
核心设计思想
-
多进程架构:Master(管理进程) + Worker(业务进程) + Client(前端)。
-
分布式服务:通过轻量级 RPC 实现进程间通信。
-
插件化设计:可扩展的组件(如日志、监控、路由)。
-
-
核心组件
-
Application:Pomelo 应用实例。
-
Server:服务节点(如
chat-server-1
)。 -
Channel:消息广播的通道。
-
Session:客户端会话管理。
-
二、环境搭建与项目初始化
-
开发环境准备
-
安装 Node.js(建议 LTS 版本)。
-
全局安装 Pomelo:
npm install pomelo -g
。 -
可选工具:PM2(进程管理)、Redis(数据缓存)。
-
-
创建第一个项目
-
初始化项目:
pomelo init ./project_name
。 -
目录结构:
/game-server // 服务器代码 /web-server // 前端/HTTP 服务 /shared // 前后端共享代码
-
-
启动与调试
-
启动服务器:
pomelo start
(开发模式加--env=development
)。 -
日志查看:
pomelo log
。
-
三、核心机制与 API
-
服务器类型与角色
-
Frontend Server:直接与客户端通信(如
connector
)。 -
Backend Server:处理业务逻辑(如
chat
、area
)。 -
配置
servers.json
定义服务器集群。
-
-
路由(Routing)
-
客户端请求路由:通过
app.route()
分配请求到指定服务。 -
服务器间 RPC 路由:
servers.json
中的配置。
-
-
通信协议
-
内置支持 WebSocket、Socket.io、原生 TCP。
-
自定义协议:通过
pomelo-protobuf
或pomelo-json
编解码。
-
-
Channel 与广播
-
创建 Channel:
channelService.createChannel()
。 -
广播消息:
channel.pushMessage()
。
-
四、分布式架构进阶
-
RPC 机制
-
服务端暴露 RPC 方法:
app.rpc.[serverType].remote.[method]
。 -
客户端调用:
app.rpc.[serverType].remote.[method].call(ctx, ...)
。
-
-
负载均衡
-
默认路由策略(如轮询)。
-
自定义路由:修改
app.route()
逻辑。
-
-
Master 高可用
-
Master 节点监控 Worker 状态。
-
故障恢复机制。
-
五、数据与存储
-
Session 管理
-
客户端 Session:
sessionService.bind()
。 -
数据共享:通过
session.set()
/session.get()
。
-
-
数据库集成
-
常用数据库:MongoDB、MySQL、Redis。
-
使用
pomelo-mongo
或pomelo-mysql
插件。
-
-
缓存策略
-
Redis 缓存玩家数据。
-
数据同步问题处理(如脏标记)。
-
六、性能优化与调试
-
压力测试
-
使用
pomelo-cli
或artillery
模拟并发。 -
监控指标:QPS、延迟、内存占用。
-
-
性能调优
-
减少 RPC 调用次数。
-
使用 Channel 过滤减少广播流量。
-
进程拆分(如分离网关和逻辑进程)。
-
-
日志与监控
-
内置日志系统(log4js)。
-
集成第三方监控(如 ELK、Grafana)。
-
七、安全与部署
-
安全实践
-
通信加密(SSL/TLS)。
-
防 DDoS:限流、黑白名单。
-
数据校验(防止协议篡改)。
-
-
生产部署
-
使用 PM2 管理进程。
-
配置文件分离(
config/production
)。 -
负载均衡(Nginx + 多机器部署)。
-
-
运维工具
-
pomelo-admin
:管理控制台。 -
pomelo-cli
:命令行监控。
-
八、实战项目与扩展
-
经典案例
-
聊天室(官方 Demo)。
-
实时对战游戏(如棋牌、ARPG)。
-
-
插件开发
-
自定义插件:继承
pomelo.Plugin
。 -
扩展协议、路由、过滤器。
-
-
社区资源
-
官方 GitHub 仓库及 Wiki。
-
社区插件(如
pomelo-sync
数据同步)。
-
学习路线建议
-
初级阶段
-
掌握基础 API(Server/Channel/Session)。
-
完成官方 Demo(如
chatofpomelo
)。
-
-
中级阶段
-
深入 RPC 和分布式设计。
-
集成数据库和缓存。
-
-
高级阶段
-
性能调优与安全加固。
-
开发自定义插件。
-
通过这个框架,你可以逐步从 Pomelo 的基础使用过渡到分布式系统设计的深层理解。建议配合官方文档和实战项目练习!