天天看點

網易開源遊戲伺服器架構 pomelo 0.9 版釋出

pomelo 0.9版于2月26日釋出,以下是該版本的新特性。

在pomelo 0.9中提供了基于zmq的rpc調用,開發者可以根據需要選擇原有的pomelo-rpc或者pomelo-rpc-zeromq。基于zeromq和原有的pomelo-rpc的性能對比測試結果可以參考:

具體使用方法:

安裝zeromq

在app.js中進行配置,具體配置如下所示:

根據網友的建議,在pomelo 0.9版本中增加了重新開機的指令和伺服器單獨啟動的指令;具體指令如下:

pomelo start -t [server type] 啟動某類型的伺服器,如果需要分開啟動不同類型伺服器時候使用,首先必須啟動master伺服器,例如:

pomelo start -i [server id] 啟動具體某個伺服器,同上首先需要啟動master,master伺服器無需提供具體id, 例如:

pomelo restart 重新開機除了master以為的其它伺服器,可能會出現重新開機失敗的情況。

pomelo restart -t [server type] 重新開機某類型的伺服器,不包括master伺服器

pomelo restart -i [server id] 重新開機具體某個伺服器,不包括master伺服器

``

app.set('proxyconfig', {

timeout: 1000 * 20

});

./game-server/app/util/blacklist.js

... ...

var self = this;

self.blacklist = ['192.168.100.1', '192.168.100.2'];

module.exports.blacklistfun = function(cb) {

cb(null, self.blacklist);

};

./game-server/app.js

var blacklist = require('./app/util/blacklist');

app.configure('production|development', function() {

app.set('connectorconfig', {

blacklistfun: blacklist.blacklistfun

}

blacklist 192.168.100.1

blacklist (([01]?d?d|2[0-4]d|25[0-5]).){3}([01]?d?d|2[0-4]d|25[0-5])

var store = require('./store');

app.set('channelconfig', {

store : store,

prefix : 'pomelo'

//store.js

var redis = require('redis');

var storemanager = function() {

this.redis = redis.createclient(6379, '127.0.0.1', {});

module.exports = new storemanager();

storemanager.prototype.add = function(key, value, cb) {

this.redis.sadd(key, value, function(err) {

storemanager.prototype.remove = function(key, value, cb) {

this.redis.srem(key, value, function(err) {

cb(err);

storemanager.prototype.load = function(key, cb) {

this.redis.smembers(key, function(err, list) {

cb(err, list);

storemanager.prototype.removeall = function(key, cb) {

this.redis.del(key, function(err) {

{

"name": "boot",

"description": "main app boot component",

"dependencies": {

},

"scripts": ["index.js"]

var emitter = require('emitter');

window.eventemitter = emitter;

var protocol = require('pomelo-protocol');

window.protocol = protocol;

var protobuf = require('pomelo-decodeio-protobuf');

window.decodeio_protobuf = protobuf;

var pomelo = require('pomelo-jsclient-websocket');

window.pomelo = pomelo;

var jquery = require('jquery');

window.$ = jquery;

app.use(protobuf, {

protobuf: {

//設定用戶端重連

pomelo.init({

host: 127.0.0.1,

port: 3050,

reconnect: true

}, function() {

//設定用戶端重連最大次數

reconnect: true,

maxreconnectattempts: 20

繼續閱讀