2X + Clustering

Post here your questions about SFS2X. Here we discuss all server-side matters. For client API questions see the dedicated forums.

Moderators: Lapo, Bax

flash2070
Posts: 16
Joined: 28 Sep 2010, 19:42

2X + Clustering

Postby flash2070 » 23 Dec 2010, 16:37

Hello,
I want to implement clustering using Terracotta (as you adviced and recomended)

you wrote TC is open-source/ free but I see it a commercial product.
moreover, I didn't understand which product should I use:

http://www.terracotta.org/products?src= ... found.html

1) is it the Ehcache?

2) I'm planning to place my application on EC2.
I would be happy if you could give me some details about clustering using terracotta (and how to put it on EC2)

3) if not terracotta - which another "JVMclustering software " would you advice me to use?

thanks in advanced :wink:
Flash
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 24 Dec 2010, 12:13

Hi,
Terracotta is absolutely open source and free. They also have a commercial version, which supports heap partitioning and other super advanced stuff. I can guarantee that the free edition already offers everything you need and tons of scalability.

You just need to register on their website and proceed to the download page where you will find both versions.

When we get questions like these about clustering my first reaction is always... why? Why do you think you need clustering?

Don't get me wrong, clustering is cool, but it also add another level of complexity to your design. Do you have an application that is not able to scale at the moment? Any other reasons?
Lapo
--
gotoAndPlay()
...addicted to flash games
vooood
Posts: 45
Joined: 08 Oct 2010, 09:04
Location: Croatia
Contact:

Postby vooood » 26 Dec 2010, 15:15

Lapo wrote:Hi,
Terracotta is absolutely open source and free. They also have a commercial version, which supports heap partitioning and other super advanced stuff. I can guarantee that the free edition already offers everything you need and tons of scalability.

You just need to register on their website and proceed to the download page where you will find both versions.

When we get questions like these about clustering my first reaction is always... why? Why do you think you need clustering?

Don't get me wrong, clustering is cool, but it also add another level of complexity to your design. Do you have an application that is not able to scale at the moment? Any other reasons?


I will give you my reasons if that means anything. I'm working on an MMO that will run all players on one server (without shards) which means tens of thousands potential players - that definitely needs a clusters, especially with world complexity i'm working on..
Music was my first love, and it will be my last
Music of the future, and music of the past
To live without my music would be impossible to do
In this world of trauma my music pulls me through
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 26 Dec 2010, 16:18

I will give you my reasons if that means anything. I'm working on an MMO that will run all players on one server (without shards) which means tens of thousands potential players - that definitely needs a clusters, especially with world complexity i'm working on..

That sounds reasonable :)
You should probably think of sharding using multiple instances of the server. There are various strategies, for example one Lobby server + N game servers, one per game type.
Other options include multiple instances for different regions of the world (Asia, Europe, America...) or for different languages.
Lapo

--

gotoAndPlay()

...addicted to flash games
rav
Posts: 82
Joined: 06 Dec 2010, 13:14

Postby rav » 27 Dec 2010, 13:38

My producer, hopes to hundreds of thousands concurrent users :) so I must use clustering too.

Lapo, is there the same problem with 'Banned list' while using clustering like the problem with 'Buddy list'? Are there other areas which should be prepared for clustering (besides Buddy list and may be Banned list)?
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 27 Dec 2010, 14:20

@rav:
I don't know the context of your application so I might be entirely wrong here and I apologize in advance.
My producer, hopes to hundreds of thousands concurrent users so I must use clustering too.

You shouldn't take decisions on clustering based on "hopes" but instead you should use realistic estimates.

We have got in the habit of asking "why clustering", because we get many requests from clients, small and big, who are starting to build an MMO or multiplayer game, and their first concern is to be able to handle zillions of concurrent users.

This is perfectly understandable but if you have experience in this field you know that the user base typically builds up over some time (usually months) and it's unlikely that will really need to start with a cluster. You won't need it for quite some time, actually.

Of course there are exceptions to this. If your company name is Disney, MTV, Warner Bros etc... or any another big guy who can do massive ad campaigns then of course you'll need to be prepared for the user flood.

Again this is why we ask :) and in general we tend to discourage clustering , especially if it's the first application of this type being developed. Why? For a series of good reasons:

1- A single dedicated server can handle tens of thousands of clients depending on the hardware, complexity of server code etc...
Let's say the hardware limit is 50K CCU. This roughly means 10 million unique visits a day... which is the kind of web traffic that a first class news website does.

Bottom line: not everyone is in the range of the NY Times right? So we want make sure that the customer's traffic expectations are based on sound estimates, not just anxiety or excess of self confidence.

2- Clustering adds an extra layer of complexity which probably, in 50% of the cases, can be avoided or at least postponed.
It is great to think ahead of problems, but it is also wise to take care of problems when they are a real concern instead of slowing down the development with extra work.

Bottom line: while designing your application think of good strategies to scale your application. Then spend some time in studying a realistic traffic estimate and see if clustering is really needed from start.

3- The Terracotta fever.
Terracotta is cool and everyone wants to use it. It can do great stuff with a Java application in terms of scalability. It is also the most complex of the options and it requires excellent understanding of the Java platform, scalability issues and server architectures.

If you are new to this field you should take one step at a time unless your team is made of up real gurus.

Also Terracotta is not the only way for clustering SmartFoxServer. In fact we have a number of very big clients that run stellar traffic with large clusters and don't even use it.

Bottom line: carefully evaluate the scalabilty strategy taking into account its complexity and the overall impact on managing the infrastructure.
Lapo

--

gotoAndPlay()

...addicted to flash games
rav
Posts: 82
Joined: 06 Dec 2010, 13:14

Postby rav » 28 Dec 2010, 06:36

I fully agree with you, Lapo. And I don't want to implement clustering from the begining. I just want to understand which problems I'll get while implementing clustering.
First problem I know: embedded Buddy list
Second problem (not sure about this): embedded Ban list
Third problem: ??? etc?

I want to use embedded features over some kind of proxy (When time will come I just implement this features with clustering). But if I ignore this I will lose my eggs - producer will smash them :)

and also I suppose that 50k CCU is means nearly 2 millions unique players
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 29 Dec 2010, 08:39

The clustering whitepaper and the related sources are a good place to start learning how Terracotta can work with SFS. It is valid for both 1.x and 2X

In our whitepaper we discuss the integration of the Terracotta DSO with SFS. Today the Terracotta guys have shifted their business to the most profitable area of websites/db cachei-ing and large distributed caches and they mostly push those technologies in their website.

The DSO has almost disappeared from their website, which is quite a pity. Actually the DSO (Data Shared Object) is still at the core of all their technology and it is very powerful to provide a fine grained clustering.

Anyways, depending on the level of integration you need with Terracotta you might also consider the use of their EHCache system instead of the DSO. The advantage is that EHCache is much simpler compared to the DSO approach.
Lapo

--

gotoAndPlay()

...addicted to flash games
rav
Posts: 82
Joined: 06 Dec 2010, 13:14

Postby rav » 29 Dec 2010, 11:28

But what about possible/future problems with clustering? :)
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 29 Dec 2010, 12:18

Ah... that is something we don't discuss in the board yet, sorry.
Maybe you can drop us an email directly and we'll give you some more details.
Lapo

--

gotoAndPlay()

...addicted to flash games
rav
Posts: 82
Joined: 06 Dec 2010, 13:14

Postby rav » 29 Dec 2010, 12:29

Lapo wrote:Maybe you can drop us an email directly and we'll give you some more details.


ryabinin.alexander@gmail.com

Looking throw EHCache I came to conclusion: pure EHCache is not enough for clustering, besides EHCache I have to use Distributed Caching With Terracotta
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 29 Dec 2010, 12:38

Yes, I think you are correct. The cache works great for "flat" objects but it's not ideal for complex graphs
Lapo

--

gotoAndPlay()

...addicted to flash games
rav
Posts: 82
Joined: 06 Dec 2010, 13:14

Postby rav » 29 Dec 2010, 13:32

waiting for information on e-mail
thank you :)
dannyrg
Posts: 19
Joined: 19 Oct 2010, 19:08

Postby dannyrg » 30 Dec 2010, 03:39

Lapo, in regards to your quote below:

"
1- A single dedicated server can handle tens of thousands of clients depending on the hardware, complexity of server code etc...
Let's say the hardware limit is 50K CCU. This roughly means 10 million unique visits a day... which is the kind of web traffic that a first class news website does."


I'd like to know if you guys ever tested these numbers with OpenSpace users. Is a single server really capable of running 50K CCU or even 20K when it has to handle pathfinding on top of other game related work?
(obviously i'm not expecting a low-end machine to do this. for the sake of this question, let's assume a high-end hardware from the EC2 server options).


Thanks,

Dan
User avatar
Lapo
Site Admin
Posts: 21791
Joined: 21 Mar 2005, 09:50
Location: Italy

Postby Lapo » 30 Dec 2010, 08:15

No, we never tested it. I don't see particular performance problems however, the pathfinding is not so intensive and the pathfinder is very optimized.
Lapo

--

gotoAndPlay()

...addicted to flash games

Return to “SFS2X Questions”

Who is online

Users browsing this forum: DavinVicy, DerikFent and 46 guests