Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Topic1: Load balancing & Scaling #70

Open
ketoo opened this issue Feb 2, 2018 · 4 comments
Open

Topic1: Load balancing & Scaling #70

ketoo opened this issue Feb 2, 2018 · 4 comments

Comments

@ketoo
Copy link
Owner

ketoo commented Feb 2, 2018

Background:

Currently, load balancing & Scaling play an important role in information system especial in the business environment. In the gaming industry, to hold on many people online in a short time we need the operator add new game process at run-time. To achieve the objective the architect-designer would design this feature before the system released.

A load balancer serves as the gates for clients, the load balancer distributes incoming traffic across multiple targets, it looks like easy to implement?

Please discuss how to design this module with different situations under gaming field.

在IT产业高速发展的今天,服务器集群的负载均衡和高扩展性在信息系统特别是商业运行环境中的信息系统中变得越来越重要了.同样的,在多人在线游戏领域里,我们也需要尽可能的支持玩家的高并发数.目前来说,支持运行期动态的增减服务器,是我们解决这个问题的良好办法.然而要达到热插拔服务器,就需要我们在服务器程序中设计相应的功能模块.
或许我们可以使用多台面向客户端的网关服务器用以负载均衡,然后再通过网关服务器分发消息到不同的后台处理服务器,怎么样?看起来很简单吧?
那么请分享一下你的独到见解: 在游戏服务器领域中,如何设计这样一个负载均衡的模块来应对高并发条件下的各种情况.快来加入我们的讨论吧!

@tachen
Copy link

tachen commented Feb 2, 2018

image
https://doc.photonengine.com/en-us/onpremise/current/applications/loadbalancing/application

@ketoo
Copy link
Owner Author

ketoo commented Feb 2, 2018

@tachen Great! If the players just playing in a room like LOL or DOTA2, it looks like easier to implement.

From the docs of Photon:

The Master server handling all the Game Server Peers and the Game Server reporting Game States to the Master, which game server will be assigned depending on their workload. If the clients want to connect to the game server must get a Game Server address from the Master,

The disadvantages of Photon are that the Master Server just only one instance when running, it's a single point; the Game Server handling Client Peers no any proxy/gate to route the incoming traffic.

By the way, it's hard to design a game like WOW if we use lobby mode on the Game Server. Any suggestions for this?

nf_server_arch

@tachen
Copy link

tachen commented Feb 6, 2018

@ketoo
Copy link
Owner Author

ketoo commented Feb 8, 2018

@tachen The calculation of which items fall into which interest areas that is the AOI management. The AOI management is a useful module in MMO world, but interest management is not the same meaning as scaling.

Regarding the game like LOL or DOTA2, you can create multiple rooms, it's easy to add new game server instance at run-time if your load increases.

Regarding the MMO game like WOW, if too many players located in the same scene like a town in the real world, it's hard to hold on by one server instance, which is the reason we would t design the scaling module.

The interest management can make sure the clients receive the events that originate from regions within their view distance only, this optimization can improve the performance in crowded areas, but it doesn't mean it enhancing the scalability.

Yes, we must have a region management to improve the performance, so, I think that we hold the regions by different server instance for MMO game is a good way to expand the load ability. Managing the interest is the key to success, however, how to manage the regions and keep its data correct is a hard job when adding some new instances for scaling.

As far as I know that the "Big World" engine now supporting this feature, but it's hard to know the details of its mechanism.

@ketoo ketoo changed the title Topic1: Load balancing & Scaling (负载均衡&扩容) Topic1: Load balancing & Scaling Jun 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants