SlideShare a Scribd company logo
1 of 71
Building fast, scalable game server in
node.js

Charlie Crane
@xiecc
Who am I

 NASDAQ: NTES
 Senior engineer, architect(8 years) in NetEase Inc. ,

developed many web, game products
 Recently created the open source game server framework in

node.js: pomelo
Top cities for npm modules
https://gist.github.com/substack/7373338
Agenda
 State of pomelo
 Scalability
 Framework
 Performance
 Realtime application
The state of pomelo

Fast, scalable, distributed game server
framework for node.js
Open sourced in 2012.11.20
Newest version: V0.7
https://github.com/NetEase/pomelo
Pomelo position
 Game server framework
 Mobile game
 Web game
 Social game
 MMO RPG(middle scale)

Realtime Multiple User Interaction
 Realtime application server framework
State of pomelo
 Pomelo is not a

single project
 Almost 40 repos in total
Framework ---
https://github.com/NetEase/pomelo
Success cases
Card Game — ShenMu

http://shenmu.iccgame.com/index.shtml
Success cases
Combat Strategy Game — Ancient songs

http://www.ixuanyou.com/
Success cases
Realtime Communication Tools —
ZhongQingBangBang

Q&A

http://wap.youth.cn/bangbang/
Success cases
 The magic card hunter https://itunes.apple.com/cn/app/id6649640688
 Beauty Fried golden flower http://app.xiaomi.com/detail/41461
 Texas Hold ’ em poker http://www.yiihua.com/
 Metal Slug http://www.17erzhan.com/ww2/ww2index.php
 Coal instant messaging http://www.mtjst.com
 Yong Le golden flower http://pan.baidu.com/s/1pCmfD
 17 Bullfight http://app.91.com/Soft/Detail.aspx?Platform=iPhone
…
Job huntings
Agenda
 The state of pomelo
 Scalability
 Framework
 Performance

 Realtime appliation
Demo first
http://pomelo.netease.com/lordofpomelo
Scalability---Web and Game server
 Web server

unlimited scalability
 Game server

World record: world of tanks(bigworld), 74,536 online users
MMORPG:7k-8k maximum

Why?
Why does game server not scale?
 Reason 1: Long connection
 Response time

Web response time: 2000ms
Game、realtime web: <100ms
 Message direction

web: request/reponse
game: request/push/broadcast, bi-direction
How to solve
 Node.js to rescue

Perfect for:
Network-insentive application
Real-time application
Holding connections
Mqtt: 120,000 connections, 1 process, 10K/connection
Socket.io: 25,000 connections, 1 process, 50K/connection
Why does game server not scale
 Reason 2: stateful
 Web app -- stateless
 No coordinates, no adjacency
 Partition randomly, stateless

 Game server -- stateful
 Have coordinate, adjacency
 Partition by area, stateful
How to solve
 No good solution in technical level
 Depending on game design
 Don’t make one area too crowded
 Balance of area
Too crowded area
Disperse player
Why does game server not scale
Reason 3: Broadcast

MESSAGES IN

1

MESSAGES OUT

1

1

1
Why does game server not scale

1

2

MESSAGES IN

MESSAGES OUT

4

2
2

1
Why does game server not scale
MESSAGES IN

MESSAGES OUT

4

1

16

4

4

4

1

1
4

1
Why does game server not scale
MESSAGES IN

MESSAGES OUT

100

1

10000

100

100

100

1

1
100

1
Why does game server not scale
MESSAGES IN

MESSAGES OUT

1000

1

1000

1000000

1000

1000

1

1
1000

1
1、How to solve --- broadcast
 AOI --- area of interested

module: pomelo-aoi
2、How to solve -- broadcast
 Split process, seperate load , frontend is stateless

broadcast

Frontend
(connector)

Single Process

Game logic

Backend
(area)
3、How to solve – broadcast
 Game design, don’t make one place(in area) too crowded
 Map size
 Character density
 Disperse born place
Disperse born place
4、How to solve -- pushScheduler
app.set(‘pushSchedulerConfig’, {
scheduler: new MessageScheduler(app);
});
 Direct:send message directly
 Buffer:

buffer message in array, and flush it every 50ms
 Other Strategies: flexible, depending on client number
Why does game server not scale
 Reason 4: Tick (game loop)
 setInterval(tick, 100)

 What does every tick do?
 Update every entity in the scene(disappear,move, revive)
 Refresh monster
 Driving ai logic(monster, player)

Tick must be far less than 100ms
Problem of tick
 The entity number should be limited
 Pay attention to update algorithm: AI etc.

 GC, full gc should be limited
 V8 is good at GC when memory is under 500M, even full GC
 Memory must be limited
 Try to divide process
At last--- runtime architecture
How to solve complexity
 Too … complicated?

solution:

framework
Agenda
 The state of pomelo
 Scalability
 Framework
 Performance
 Realtime application
Pomelo Framework
The essence of pomelo:
A distributed, scalable, realtime application
framework.
Framework --- design goal
 Abstract of servers(processes)
 Auto extend server types
 Auto extend servers

 Abstract of request/response and broadcast/push
 Zero config request
 Simple broadcast api

 Servers communication---rpc framework
Framework -- some features
 Server scalability

 Network
 Plugins
Server scalability
Server Scalability-- dynamic
extensions
 pomelo add host=[host] port=[port] id=[id]

serverType=[serverType]
 node app.js env=production host=[host]

port=[port] id=[id] serverType=[serverType]
Network
Pomelo
component
Loader

MQTTConnector

Mobile client

Connector

SIOConnector

HybridConnector

Socket.io client

Socket, websocket
client
Network--Message encode, decode
Network--original protobuf
 Original protobuf
Network--pomelo protobuf
 Our protobuf
Network -- Proto compress
 Config:
Network---protobuf definition
 Handler return json, auto encoded to protobuf
Network--pomelo protobuf
https://github.com/pomelonode/pomelo-protobuf
As an independent project, supporting unity3d, iOS, android, C
Network -- Pomelo Netflow – V0.2
 Version 0.2, 400 online users

Out: 3645Kb/S in: 270Kb/s
Network -- Pomelo Netflow – V0.3
 Version 0.3, 400 online users

Out: 925KB/S, in: 217KB/S, 25% Netflow of 0.2
Plugins
 A mechanism to extend framework

 Example:
 pomelo-status-plugin , online status plugin, based on redis
Plugins example -- Reliability
 pomelo-masterha-plugin, based on zookeeper, master HA
 Servers auto reconnect

Zookeeper

Master

Slave

Slave
Agenda
 State of pomelo
 Scalability
 Framework
 Performance

 Realtime application
Performance --- overview
 The performance varies largely in different games,

applications
 The variation
 Application type: Game or realtime application
 Game type: round or realtime fight, room or infinite
 Game design: Map size, character density, balance of areas
 Test parameters: Think time, test action
Performance --- reference data
 Online users per process
 next-gen: support 20,000 concurrent players in one area

 World record – not one area
 world of tanks(bigworld), 74,536 online users

 But in real world(MMO rpg)
 The real online data: maximum 800 concurrent users per area, 7,000

concurrent users per group game servers
Performance--Server configuration
Openstack virtual machine
Performance --- stress testing
 Use Case 1: fight
 Stress on single area(area 3), increasing step by step,

login every 2 seconds
 Game logic: attack monstors or other players every

2~5 seconds
Performance --- stress testing
Performance--result
 486 onlines
Performance -- top
 Using toobusy, limit cpu 80%
Performance – stress test
 Use case 2 – move
 Stress on single area(area 3), increasing step by step,

login every 2 seconds
 Game logic: move in the map every 2~5 seconds
Performance – stress test
 800 online users
Performance --- stress testing
 Use Case 3: fight & move
 Stress on single area(area 3), increasing step by step,

login every 2 seconds
 Game logic: 50% attack monstors or other players

every 2~5 seconds, 50% move around
 Result: 558 onlines in one area
Agenda
 State of pomelo
 Scalability
 Framework
 Performance

 Realtime application
Realtime app and game
 Many success stories in realtime application
 Message push platform in NetEase
 ZhongQinBangBang

 Not that frequent messages as game
 Do do need that realtime (less than 50ms), we can use

different pushScheduler strategy
 Much more scalable than game
Message push platform
Supporting more than 10,000,000 online users
 Products using message push platform
 love.163.com
 music.163.com

 news.163.com
 note.youdao.com
 game.163.com
 yuehui.163.com

 yuedu.163.com
Message push platform
AMQP
Receiver
Receiver

publish

Receiver
Receiver

Redis,
Device

APNS publisher
APNS publisher

Channel push, socket

Connector

Connector

Connector

LVS
socket.io

Web client

mqtt
Android
client

mqtt

iOS client
Message push systems
 High load, More than 10,000,000 online users

 Realtime, broadcast to 5 million users in 1minute
 Reliability, qos=1 in any conditions
 Save power and network

 Support all the clients
 iOS(APNS, mqtt)
 android(mqtt)
 browser(socket.io)

 windows desktop application(mqtt)
Q&A
@xiecc
https://github.com/NetEase/pomelo

More Related Content

What's hot

Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedis Labs
 
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)상현 조
 
Ndc17 DevOps? DevOps개발자? 북미에서의 6년
Ndc17 DevOps? DevOps개발자? 북미에서의 6년Ndc17 DevOps? DevOps개발자? 북미에서의 6년
Ndc17 DevOps? DevOps개발자? 북미에서의 6년Taehyun Kim
 
Building your First gRPC Service
Building your First gRPC ServiceBuilding your First gRPC Service
Building your First gRPC ServiceJessie Barnett
 
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...HostedbyConfluent
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 

What's hot (20)

Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel HochmanRedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
RedisConf17 - Lyft - Geospatial at Scale - Daniel Hochman
 
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)GCGC- CGCII 서버 엔진에 적용된 기술 (1)
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
 
Ndc17 DevOps? DevOps개발자? 북미에서의 6년
Ndc17 DevOps? DevOps개발자? 북미에서의 6년Ndc17 DevOps? DevOps개발자? 북미에서의 6년
Ndc17 DevOps? DevOps개발자? 북미에서의 6년
 
Building your First gRPC Service
Building your First gRPC ServiceBuilding your First gRPC Service
Building your First gRPC Service
 
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
Monitoring and Resiliency Testing our Apache Kafka Clusters at Goldman Sachs ...
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 

Viewers also liked

Game server development in node.js
Game server development in node.jsGame server development in node.js
Game server development in node.jsXie ChengChao
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf euXie ChengChao
 
Game development with Node.js
Game development with Node.jsGame development with Node.js
Game development with Node.jsMartin Grüner
 
Building multiplayer games with angular, node, socket.io, and phaser.io
Building multiplayer games with angular, node, socket.io, and phaser.ioBuilding multiplayer games with angular, node, socket.io, and phaser.io
Building multiplayer games with angular, node, socket.io, and phaser.ioAri Lerner
 
Realtime webapp with node.js
Realtime webapp with node.jsRealtime webapp with node.js
Realtime webapp with node.jsrobin_sy
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0Wen-Tien Chang
 
Scalability using Node.js
Scalability using Node.jsScalability using Node.js
Scalability using Node.jsratankadam
 
20 Game Ideas You Should Steal
20 Game Ideas You Should Steal20 Game Ideas You Should Steal
20 Game Ideas You Should StealStuart Dredge
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)Koji YUSA
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 

Viewers also liked (15)

Game server development in node.js
Game server development in node.jsGame server development in node.js
Game server development in node.js
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
 
Game development with Node.js
Game development with Node.jsGame development with Node.js
Game development with Node.js
 
Building multiplayer games with angular, node, socket.io, and phaser.io
Building multiplayer games with angular, node, socket.io, and phaser.ioBuilding multiplayer games with angular, node, socket.io, and phaser.io
Building multiplayer games with angular, node, socket.io, and phaser.io
 
Introduction to Go-Lang
Introduction to Go-LangIntroduction to Go-Lang
Introduction to Go-Lang
 
Realtime webapp with node.js
Realtime webapp with node.jsRealtime webapp with node.js
Realtime webapp with node.js
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0A brief introduction to SPDY - 邁向 HTTP/2.0
A brief introduction to SPDY - 邁向 HTTP/2.0
 
Scalability using Node.js
Scalability using Node.jsScalability using Node.js
Scalability using Node.js
 
20 Game Ideas You Should Steal
20 Game Ideas You Should Steal20 Game Ideas You Should Steal
20 Game Ideas You Should Steal
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)
M-6 MQTTの使いどころ (JJUG CCC 2015 Spring)
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 

Similar to Building fast,scalable game server in node.js

Movi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupMovi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupLars-Erik M Ravn
 
XLcloud 3-d remote rendering
XLcloud 3-d remote renderingXLcloud 3-d remote rendering
XLcloud 3-d remote renderingMarius Preda PhD
 
Building an ActionScript Game Server with over 15,000 Concurrent Connections
Building an ActionScript Game Server with over 15,000 Concurrent ConnectionsBuilding an ActionScript Game Server with over 15,000 Concurrent Connections
Building an ActionScript Game Server with over 15,000 Concurrent Connections Renaun Erickson
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Docker, Inc.
 
Catan world and Churchill
Catan world and ChurchillCatan world and Churchill
Catan world and ChurchillGrant Goodale
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Puppet
 
Php day2013 sports_statistics
Php day2013 sports_statisticsPhp day2013 sports_statistics
Php day2013 sports_statisticsTobias Josefsson
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration SeminarYoss Cohen
 
Capstone Project Final Presentation
Capstone Project Final PresentationCapstone Project Final Presentation
Capstone Project Final PresentationMatthew Chang
 
The post release technologies of Crysis 3 (Slides Only) - Stewart Needham
The post release technologies of Crysis 3 (Slides Only) - Stewart NeedhamThe post release technologies of Crysis 3 (Slides Only) - Stewart Needham
The post release technologies of Crysis 3 (Slides Only) - Stewart NeedhamStewart Needham
 
Mobile Cloud Computing for Games - Gamelet
Mobile Cloud Computing for Games - Gamelet Mobile Cloud Computing for Games - Gamelet
Mobile Cloud Computing for Games - Gamelet Anand Bhojan
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Esun Kim
 
EE4414 Multimedia Communication Systems II
EE4414 Multimedia Communication Systems IIEE4414 Multimedia Communication Systems II
EE4414 Multimedia Communication Systems IIFranZEast
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderertobias_persson
 
Windows containers troubleshooting
Windows containers troubleshootingWindows containers troubleshooting
Windows containers troubleshootingAlexey Bokov
 
Game programming with Groovy
Game programming with GroovyGame programming with Groovy
Game programming with GroovyJames Williams
 

Similar to Building fast,scalable game server in node.js (20)

Movi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupMovi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetup
 
XLcloud 3-d remote rendering
XLcloud 3-d remote renderingXLcloud 3-d remote rendering
XLcloud 3-d remote rendering
 
Building an ActionScript Game Server with over 15,000 Concurrent Connections
Building an ActionScript Game Server with over 15,000 Concurrent ConnectionsBuilding an ActionScript Game Server with over 15,000 Concurrent Connections
Building an ActionScript Game Server with over 15,000 Concurrent Connections
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
Catan world and Churchill
Catan world and ChurchillCatan world and Churchill
Catan world and Churchill
 
ARISE
ARISEARISE
ARISE
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
 
Sgin2013 scrum accomplished-mmog-sajitvasudevan
Sgin2013 scrum accomplished-mmog-sajitvasudevanSgin2013 scrum accomplished-mmog-sajitvasudevan
Sgin2013 scrum accomplished-mmog-sajitvasudevan
 
Php day2013 sports_statistics
Php day2013 sports_statisticsPhp day2013 sports_statistics
Php day2013 sports_statistics
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration Seminar
 
Capstone Project Final Presentation
Capstone Project Final PresentationCapstone Project Final Presentation
Capstone Project Final Presentation
 
The post release technologies of Crysis 3 (Slides Only) - Stewart Needham
The post release technologies of Crysis 3 (Slides Only) - Stewart NeedhamThe post release technologies of Crysis 3 (Slides Only) - Stewart Needham
The post release technologies of Crysis 3 (Slides Only) - Stewart Needham
 
Mobile Cloud Computing for Games - Gamelet
Mobile Cloud Computing for Games - Gamelet Mobile Cloud Computing for Games - Gamelet
Mobile Cloud Computing for Games - Gamelet
 
Windows PowerShell
Windows PowerShellWindows PowerShell
Windows PowerShell
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
 
EE4414 Multimedia Communication Systems II
EE4414 Multimedia Communication Systems IIEE4414 Multimedia Communication Systems II
EE4414 Multimedia Communication Systems II
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderer
 
Windows containers troubleshooting
Windows containers troubleshootingWindows containers troubleshooting
Windows containers troubleshooting
 
Game programming with Groovy
Game programming with GroovyGame programming with Groovy
Game programming with Groovy
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Building fast,scalable game server in node.js

  • 1. Building fast, scalable game server in node.js Charlie Crane @xiecc
  • 2. Who am I  NASDAQ: NTES  Senior engineer, architect(8 years) in NetEase Inc. , developed many web, game products  Recently created the open source game server framework in node.js: pomelo
  • 3. Top cities for npm modules https://gist.github.com/substack/7373338
  • 4. Agenda  State of pomelo  Scalability  Framework  Performance  Realtime application
  • 5. The state of pomelo Fast, scalable, distributed game server framework for node.js Open sourced in 2012.11.20 Newest version: V0.7 https://github.com/NetEase/pomelo
  • 6. Pomelo position  Game server framework  Mobile game  Web game  Social game  MMO RPG(middle scale) Realtime Multiple User Interaction  Realtime application server framework
  • 7. State of pomelo  Pomelo is not a single project  Almost 40 repos in total
  • 10. Success cases Card Game — ShenMu http://shenmu.iccgame.com/index.shtml
  • 11. Success cases Combat Strategy Game — Ancient songs http://www.ixuanyou.com/
  • 12. Success cases Realtime Communication Tools — ZhongQingBangBang Q&A http://wap.youth.cn/bangbang/
  • 13. Success cases  The magic card hunter https://itunes.apple.com/cn/app/id6649640688  Beauty Fried golden flower http://app.xiaomi.com/detail/41461  Texas Hold ’ em poker http://www.yiihua.com/  Metal Slug http://www.17erzhan.com/ww2/ww2index.php  Coal instant messaging http://www.mtjst.com  Yong Le golden flower http://pan.baidu.com/s/1pCmfD  17 Bullfight http://app.91.com/Soft/Detail.aspx?Platform=iPhone …
  • 15. Agenda  The state of pomelo  Scalability  Framework  Performance  Realtime appliation
  • 17. Scalability---Web and Game server  Web server unlimited scalability  Game server World record: world of tanks(bigworld), 74,536 online users MMORPG:7k-8k maximum Why?
  • 18. Why does game server not scale?  Reason 1: Long connection  Response time Web response time: 2000ms Game、realtime web: <100ms  Message direction web: request/reponse game: request/push/broadcast, bi-direction
  • 19. How to solve  Node.js to rescue Perfect for: Network-insentive application Real-time application Holding connections Mqtt: 120,000 connections, 1 process, 10K/connection Socket.io: 25,000 connections, 1 process, 50K/connection
  • 20. Why does game server not scale  Reason 2: stateful  Web app -- stateless  No coordinates, no adjacency  Partition randomly, stateless  Game server -- stateful  Have coordinate, adjacency  Partition by area, stateful
  • 21. How to solve  No good solution in technical level  Depending on game design  Don’t make one area too crowded  Balance of area
  • 24. Why does game server not scale Reason 3: Broadcast MESSAGES IN 1 MESSAGES OUT 1 1 1
  • 25. Why does game server not scale 1 2 MESSAGES IN MESSAGES OUT 4 2 2 1
  • 26. Why does game server not scale MESSAGES IN MESSAGES OUT 4 1 16 4 4 4 1 1 4 1
  • 27. Why does game server not scale MESSAGES IN MESSAGES OUT 100 1 10000 100 100 100 1 1 100 1
  • 28. Why does game server not scale MESSAGES IN MESSAGES OUT 1000 1 1000 1000000 1000 1000 1 1 1000 1
  • 29. 1、How to solve --- broadcast  AOI --- area of interested module: pomelo-aoi
  • 30. 2、How to solve -- broadcast  Split process, seperate load , frontend is stateless broadcast Frontend (connector) Single Process Game logic Backend (area)
  • 31. 3、How to solve – broadcast  Game design, don’t make one place(in area) too crowded  Map size  Character density  Disperse born place
  • 33. 4、How to solve -- pushScheduler app.set(‘pushSchedulerConfig’, { scheduler: new MessageScheduler(app); });  Direct:send message directly  Buffer: buffer message in array, and flush it every 50ms  Other Strategies: flexible, depending on client number
  • 34. Why does game server not scale  Reason 4: Tick (game loop)  setInterval(tick, 100)  What does every tick do?  Update every entity in the scene(disappear,move, revive)  Refresh monster  Driving ai logic(monster, player) Tick must be far less than 100ms
  • 35. Problem of tick  The entity number should be limited  Pay attention to update algorithm: AI etc.  GC, full gc should be limited  V8 is good at GC when memory is under 500M, even full GC  Memory must be limited  Try to divide process
  • 36. At last--- runtime architecture
  • 37. How to solve complexity  Too … complicated? solution: framework
  • 38. Agenda  The state of pomelo  Scalability  Framework  Performance  Realtime application
  • 39. Pomelo Framework The essence of pomelo: A distributed, scalable, realtime application framework.
  • 40. Framework --- design goal  Abstract of servers(processes)  Auto extend server types  Auto extend servers  Abstract of request/response and broadcast/push  Zero config request  Simple broadcast api  Servers communication---rpc framework
  • 41. Framework -- some features  Server scalability  Network  Plugins
  • 43. Server Scalability-- dynamic extensions  pomelo add host=[host] port=[port] id=[id] serverType=[serverType]  node app.js env=production host=[host] port=[port] id=[id] serverType=[serverType]
  • 48. Network -- Proto compress  Config:
  • 49. Network---protobuf definition  Handler return json, auto encoded to protobuf
  • 50. Network--pomelo protobuf https://github.com/pomelonode/pomelo-protobuf As an independent project, supporting unity3d, iOS, android, C
  • 51. Network -- Pomelo Netflow – V0.2  Version 0.2, 400 online users Out: 3645Kb/S in: 270Kb/s
  • 52. Network -- Pomelo Netflow – V0.3  Version 0.3, 400 online users Out: 925KB/S, in: 217KB/S, 25% Netflow of 0.2
  • 53. Plugins  A mechanism to extend framework  Example:  pomelo-status-plugin , online status plugin, based on redis
  • 54. Plugins example -- Reliability  pomelo-masterha-plugin, based on zookeeper, master HA  Servers auto reconnect Zookeeper Master Slave Slave
  • 55. Agenda  State of pomelo  Scalability  Framework  Performance  Realtime application
  • 56. Performance --- overview  The performance varies largely in different games, applications  The variation  Application type: Game or realtime application  Game type: round or realtime fight, room or infinite  Game design: Map size, character density, balance of areas  Test parameters: Think time, test action
  • 57. Performance --- reference data  Online users per process  next-gen: support 20,000 concurrent players in one area  World record – not one area  world of tanks(bigworld), 74,536 online users  But in real world(MMO rpg)  The real online data: maximum 800 concurrent users per area, 7,000 concurrent users per group game servers
  • 59. Performance --- stress testing  Use Case 1: fight  Stress on single area(area 3), increasing step by step, login every 2 seconds  Game logic: attack monstors or other players every 2~5 seconds
  • 62. Performance -- top  Using toobusy, limit cpu 80%
  • 63. Performance – stress test  Use case 2 – move  Stress on single area(area 3), increasing step by step, login every 2 seconds  Game logic: move in the map every 2~5 seconds
  • 64. Performance – stress test  800 online users
  • 65. Performance --- stress testing  Use Case 3: fight & move  Stress on single area(area 3), increasing step by step, login every 2 seconds  Game logic: 50% attack monstors or other players every 2~5 seconds, 50% move around  Result: 558 onlines in one area
  • 66. Agenda  State of pomelo  Scalability  Framework  Performance  Realtime application
  • 67. Realtime app and game  Many success stories in realtime application  Message push platform in NetEase  ZhongQinBangBang  Not that frequent messages as game  Do do need that realtime (less than 50ms), we can use different pushScheduler strategy  Much more scalable than game
  • 68. Message push platform Supporting more than 10,000,000 online users  Products using message push platform  love.163.com  music.163.com  news.163.com  note.youdao.com  game.163.com  yuehui.163.com  yuedu.163.com
  • 69. Message push platform AMQP Receiver Receiver publish Receiver Receiver Redis, Device APNS publisher APNS publisher Channel push, socket Connector Connector Connector LVS socket.io Web client mqtt Android client mqtt iOS client
  • 70. Message push systems  High load, More than 10,000,000 online users  Realtime, broadcast to 5 million users in 1minute  Reliability, qos=1 in any conditions  Save power and network  Support all the clients  iOS(APNS, mqtt)  android(mqtt)  browser(socket.io)  windows desktop application(mqtt)