• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Devaka Cooray
  • Paul Clapham
Sheriffs:
  • Tim Cooke
  • Knute Snortum
  • Bear Bibeault
Saloon Keepers:
  • Ron McLeod
  • Tim Moores
  • Stephan van Hulst
  • Piet Souris
  • Ganesh Patekar
Bartenders:
  • Frits Walraven
  • Carey Brown
  • Tim Holloway

About scalability

 
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In the 'feature list' for JForum you said that it is 'Fast and scalable, perfect for busy sites'.

I would like to know how scalable is JForum. How do you scale it? Can it scale ( be distributed) on one or several computers?


[originally posted on jforum.net by imjames]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The ability to "scale" is more determined by the underlying application engine that JForum runs on (i.e. Tomcat, JBoss, WebSphere, etc.) and the database engine used.

I think the scalability statement is more a result of JForum being written in Java, which is typically more scalable than some other technologies.
[originally posted on jforum.net by GatorBait3]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
OK , so we can say that JForum does not deal at all with scalability issues but relies on the underlying application engine to provide this service (if available).

In my opinion, the satement in the features is a bit misleading.

And by the way, Java is not more scalable than other language. It is what people has built with the Java language that offer this scalability. I'm a java developper, I know what I'm talking about.
[originally posted on jforum.net by imjames]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

imjames wrote:And by the way, Java is not more scalable than other language. It is what people has built with the Java language that offer this scalability. I'm a java developper, I know what I'm talking about.



I would argue that Java does scale better than some ... but not all.

And why would people choose to build things with Java that offer scalability .. rather than some other language?

But I'm not trying to start a "Java is the best thing in the whole world" type thread here.
[originally posted on jforum.net by GatorBait3]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I would argue that Java does scale better than some ... but not all.


The more I learn about computer, the more I think that the language is not the really important piece of a program.
What I want to say is that you can structure a program in many different way using the same language. The architecture of a program appears to me to be more important than the language. This is not to say that the language is not important at all. It is. The language structures a program but not that much in many cases.
All this to say that scalability is not a language feature. This is something that belongs to the infrastructure. As the Java language is been used a lot on the server side, people have built many libraries/frameworks to do a lot of things but scalability is one of those things that is mostly specific for an application as there is many way to acheive scalability.

How I would scale a forum?
First I must say that it is hard because of the database. To scale I must use several computers and in every computer I must have the same data.
Therefore I should replicate the data from one database to another.

Here I have 2 possibilites (ruling out synchronized replication):
1) multimaster: every database's pc replicates its data to all other pcs. It sounds great but sql conflicts can happen. I don't know if this is possible to make it work with zero conflicts.
2) master-slave: a server receives all database changes and send them to the other pcs. The other pc have the full database but in read only mode (no insert, update, delete) is done locally. So when you read a topic, search something you're doing it on these 'read-only' computers. As there are several of them, you're forum can receive a lot more people. The only draw back is that when you post something, you would have to wait a couple of seconds before you can see you post.
I think this is the prefered way to scale a forum.
As you can see, scaling as nothing to do with a language but all to do with the way you think about your application.

By the way, load balancing is done on the DNS level.

But I'm not trying to start a "Java is the best thing in the whole world" type thread here.


Don't worry I'm not a zealot.
[originally posted on jforum.net by imjames]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You can have a cluster of Tomcat (or any other servlet container implementation) and integrate all jforum instllations.

The main point to make a jforum from machine A talk to the jforum of machine B is to use some sort of distributed cache engine, like JBossCache.

Although we do not release JForum with the JBossCacheEngine implementation, it is available on the CVS, are you're free to try it out!

Rafael
[originally posted on jforum.net by Rafael Steil]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

imjames wrote:
The more I learn about computer, the more I think that the language is not the really important piece of a program.
What I want to say is that you can structure a program in many different way using the same language. The architecture of a program appears to me to be more important than the language. This is not to say that the language is not important at all. It is. The language structures a program but not that much in many cases.
All this to say that scalability is not a language feature. This is something that belongs to the infrastructure. As the Java language is been used a lot on the server side, people have built many libraries/frameworks to do a lot of things but scalability is one of those things that is mostly specific for an application as there is many way to acheive scalability.

How I would scale a forum?
First I must say that it is hard because of the database. To scale I must use several computers and in every computer I must have the same data.
Therefore I should replicate the data from one database to another.

Here I have 2 possibilites (ruling out synchronized replication):
1) multimaster: every database's pc replicates its data to all other pcs. It sounds great but sql conflicts can happen. I don't know if this is possible to make it work with zero conflicts.
2) master-slave: a server receives all database changes and send them to the other pcs. The other pc have the full database but in read only mode (no insert, update, delete) is done locally. So when you read a topic, search something you're doing it on these 'read-only' computers. As there are several of them, you're forum can receive a lot more people. The only draw back is that when you post something, you would have to wait a couple of seconds before you can see you post.
I think this is the prefered way to scale a forum.
As you can see, scaling as nothing to do with a language but all to do with the way you think about your application.

By the way, load balancing is done on the DNS level.

Don't worry I'm not a zealot.



But in this discussion, you are only focusing on the database part of the implementation, which isn't a APPLICATION language (OK, I will say that you can do many app-like things with SQL/DB2/Oracle scripting, and I have written many apps in the old days using dBase/xBase on PCs).

I work for a large company and we have an IBM WebSphere implementation which consists of two physcial app servers that each have two app server instances on them (for a total of four app servers, clustered horizontally and vertically). We also have a server with the Deployment Manager on it, which controls the app server instances, the apps, and keeps everything in sync.

This app server cluster talks to a DB2 server, which also has a fail-over server which takes over via IBM HACMP if the primary has issues (it basically takes the primary off-line, and the secondary "assumes" it's identity - with replication between the two servers to keep them in sync).

So, we have several apps servers to handle the app requests and provide fail-over if one of the app servers has an issue (or even the physical server itself). We can handle a lot of traffic/requests with this implementation.

Now, I would definately say the infrastructure controls the scalability of the language in most cases. In this case WebSphere is a Java app server.

You can't do this type of high-availability implementation using PHP, Visual Basic, or even C as your "language." Why? Because these languages were not designed with multi-server implementations in mind (or not aimed at an enterprise, high availability implementation scheme).

While you can (usually) figure out a way to provide redundancy or fail-over for most any language used, some lend themselves to it easier because of the infrastructure that directly supports the language.

So, I consider the available infrastructure required to implement the language part of the language when referring to scalability (since you can't implement the language without the required infrastructure).

[originally posted on jforum.net by GatorBait3]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
GatorBait3, I had the impression (I might be wrong) that you mix several things into one. For me the language is ont thing, the libraries/frameworks and applications build with the language in another thing.

You can't do this type of high-availability implementation using PHP, Visual Basic, or even C as your "language." Why? Because these languages were not designed with multi-server implementations in mind (or not aimed at an enterprise, high availability implementation scheme).


I think you can. It is just a matter of building the infastructure.
If a language gives you access to sockets (to connect to the network) and HD access, you can build everything you want from databases, every kind of servers and ... clusters.

When you talk about having a cluster of IBM WebSphere or Tomcat, the key is what's hidden behind the word "cluster". My guess is that the WebSphere cluster does not do the same things than the Tomcat cluster to replicate its state: they both acheive the same objective but in different ways.

But in this discussion, you are only focusing on the database part of the implementation


Yes because the database is the harder part to replicate (across a WAN, in a LAN you have less constraints). Once you've got the replication of the database settled, you only need to take a look at this site that explains howto build mission critical internet sites.
http://eddie.sourceforge.net/

There are other ways to do it but this one is efficient and cheap!

The language used this time is Erlang but a similar program could be build in java, c , c++, and many more !
[originally posted on jforum.net by imjames]
 
Migrated From Jforum.net
Ranch Hand
Posts: 17424
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

imjames wrote:GatorBait3, I had the impression (I might be wrong) that you mix several things into one. For me the language is ont thing, the libraries/frameworks and applications build with the language in another thing.



What I'm saying is that you do have to consider the underlying infrastructure (i.e. App Servers, libraries, etc.) which are REQUIRED to use the language.

Can you run Java apps without an app server engine? Can you run PHP without a PHP engine? Can you run Perl without a Perl engine? No ...

See my point? If the language REQUIRES an "engine" you have to include it in your planning. In the end, it's ultimately the "engine" that gives you the scalability (but the "engine" is also tied to or a dependency of the language). Of course, the programmer has to be able to write code that does not limit any scalability plans or capabilites.

And I did say you CAN build redundancy and additional processing for most any implementation ... it's just that some languages lend themselves to doing it more easily than others.

[originally posted on jforum.net by GatorBait3]
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!