PhpServer will handle gSoap requests and http requests from clients.
PushServer will push notifications to clients and act a file server.
There are many server machines. Every PhpServer will communicate with a specific PushServer when needed. Every PhpServer needs to register itself to a PushServer letting the PushServer to help push notifications to clients.
Here are two architectures:
1) Architecure A
This architure will run each PushServer with a PhpServer on the same machine. Each client will register itself to a PhpServer and the PushServer which is running on the same machine with the PhpServer
|Database|
_____|_____
| |
| |
(|PhpServer| + |PushServer|) //a same server machine
/
|Client|
2) Architecture B
This architure will run each PushServer on a single machine. Each client will register itself to a PhpServer and the PushServer which the PhpServer registers.
|Database|
_____|_____
| |
(|PhpServer|) (|PushServer|) //two server machines
/
|Client|
Which architecture is better and why?
[update]
We are worried about performance, extensibility, and flexbility. Actually the first achitecture is what we currently have and if we choose the second one, we need to modify our software: PhpServer, PushServer and Client. Thus, unless the second network architecture is much better (from load-balancing or network application design perspective), we won’t choose the second one.
1
The basic question “one or two servers” is the wrong question asked, IMHO. As I understand your question it should be more asking if the “Pull” and the “Push” functionality should be handled by the same server application.
My plug would be to separate these functionalities as best as possible, makes the whole stuff easier to develop and maintain.
That said, it simply a question of server load and network architecture if you have the two instances running on the same machine or on two separate ones.