Skip to main content
Inspiring
November 21, 2006
Question

Syncronizing FMSs

  • November 21, 2006
  • 9 replies
  • 571 views


I have been given a research task by my boss. I am NOT (yet) an experienced FMS programmer, and I have been tasked with finding out how to do the following.

We need to collect live audio/video and screen capture data from numerous distributed sources all recording at the same time (the same event, actually) and securly collect it at multpiple locations, insuring that each location is fully syncronized with the other(s). The idea was to have complete sets of all the data stored on multiple servers, for a few reasons, including security, backup and load sharing.

Now, I gather that the best way to do this is by using one or two origin servers and using edge servers at the remote sites to do the load balancing. But everything that I have been able to find has been geared to the servers satisfying requests for data, not collecting data from the clients.

We are already using a FMS to collect data from multiple camera, microphone and screen capture feeds at a single physical location. Is expanding this to handle feeds from multiple distributed locations as simple as establishing a one or two origin server farm and setting up a series of edge servers to reroute the traffic? And if I use two origin servers, how do I insure that they stay mirrored and that data streams from a common event, coming in from different edge servers are all combined into a single event database?

I don't start small. You should see the first wood floor I ever layed!

If I could be redirected to white papers or the like, that would be great. Thanks for your help.
    This topic has been closed for replies.

    9 replies

    NeeeolAuthor
    Inspiring
    December 7, 2006
    "Oh" he said sheepishly. :(
    December 7, 2006
    application.syncSo is just a variable I declared above:

    application.syncSo = {}; //( {} is shorthand for new Object();

    I use it as sort of a global name-value-collection.

    /Johan
    NeeeolAuthor
    Inspiring
    December 7, 2006
    Johan,

    I am really feeling stupid now. application.syncSo does not show up in either my client-side or server-side action script references. I am looking at the PDF references published by Adobe for Flash Media Server 2 dated 11/4/2005. Have I got the wrong references?
    NeeeolAuthor
    Inspiring
    December 6, 2006
    Thanks. We'll give this a try. I do appreciate the extensive listing - it really helps.
    December 6, 2006
    I haven't done it server to server but according to documentation it should work the same way as client to server.

    Create a named reference to all SO:s to synchronize:

    ----------------------------------

    application.syncSo = {};
    syncSo["mySo"] = mySo;

    ----------------------------------

    Server 1 listens to server 2:

    application.onConnect(client, params) {
    if(params.type=="server") {

    client.synchronize = function(dataAddress, dataName, dataValue) {
    application.syncSo[dataAddress].setProperty(dataName, dataValue);
    return true;
    }
    }

    ----------------------------------

    Server 2 calls server 1:

    var syncNc = new NetConnection();
    syncNc.synchronize = function(dataAddress, dataName, dataValue) {
    application.syncSo[dataAddress].setProperty(dataName, dataValue);
    return true;
    }
    syncNc.connect(server2Url, {type:"server"});

    ----------------------------------

    Server 2 calls synchronize:

    syncNc.call("synchronize", myCallbackObject, "mySo", "myProp", "myVal");

    ----------------------------------

    It's untested but it should work.
    NeeeolAuthor
    Inspiring
    December 5, 2006
    Okay, that's interesting. Unfortunately I don't have enough experience with this to really understand where you're going.

    Have you done this? And if so, can you upload the whole procedure?
    December 5, 2006
    Another way to accomplish this is to let the servers connect to each other and call methods on the connections. You'd have to set up a command structure like:

    nc.call("syncData", callbackFunction, {dataAddress:object/property, dataValue:value}...etc.

    /Johan
    NeeeolAuthor
    Inspiring
    November 22, 2006
    Okay, I'll look into shared objects. I guess the issue here would be recognizing when the second server creates a shared object that it is actually related to one that is already in existance on the other server. Maybe the way this should work is that when a new event is initiated, shared objects are simultaneously created on both servers. Then, when clients calling in to the second server get established, they would connect to the already existing object.

    Thanks!
    November 22, 2006
    One quick way of synchronizing several different FMS:es is to set up a SharedObject on each FMS holding the data to be synchronized and letting all FMS:es connect to each other's SO:s (or all connect through a central "server" FMS).

    /Johan