Archived

This forum has been archived. Please start a new discussion on GitHub.

Multiple Applications in one IceGrid question

Hi, The Project I'm doing is a App Platform, Which has multi apps in it, And millions user in every app.
So, I Think that I should have a try for multi applications in one IceGrid.
But I worried about the two questions:
1. Query pressure problem with IceGridRegistry which is single-point( master-slave )?
2. Publish pressure problem with IceStorm which is also single-point( master-slave )?

Comments

  • benoit
    benoit Rennes, France
    Hi,

    IceGrid replication allows deploying multiple registries to handle the load of many clients. Ice clients also cache endpoints retrieved from IceGrid so unless you disable this caching, the clients shouldn't call too often the IceGrid registry. I don't expect any issues with the IceGrid registry and handling many clients if you use appropriate settings.

    For IceStorm, topic federation can be used to spread the load of many subscribers and deploying multiple replicas can also help with spreading the load of many publishers. See https://doc.zeroc.com/display/Ice36/IceStorm for more information on IceStorm federation and replication.

    Cheers,
    Benoit.
  • Sorry, I must reedit my reply.

    In my mind, The pattern "master-slave" supply the data constainst ability because that only the master supply service at any time. and the slaves only receive data change from master until the master die, One of the slaves become master and supply service.

    But as you mean the master and multiple slaves supply service together at one time?
  • benoit
    benoit Rennes, France
    Hi,

    Yes, with IceGrid master-slave replication clients can use slave registries to resolve endpoints and for most of the "read-only" functionality in fact. The slaves aren't allowed to update the deployment information so you can't for example add/remove IceGrid applications through a slave, you have to use the master for this.

    Cheers,
    Benoit.

  • Hi, benoit.
    In my config file of service, The locator config item is like this: "Ice.Default.Locator=XXGrid/Locator:tcp -h 172.168.10.122 -p 4061 :tcp -h 172.168.10.50 -p 4061", Generally, The 122 is the master and 50 is slave, As you mean, The service code use 122 and 50 both as locator service at any time when service code need address of a indirect proxy, is it?

    Q1: I want to know that what rules to select endpoint of locator in the ice runtime.

    In the above scene, If multiple endpoint of locator in the config file would be used at any time, I may get different result from the "IceGrid::Query" interface in multiple times, Because the data is not syn in time between multiple registries. (although the probablitity is very low, but it is possible)

    So the next question:
    Q2: If the data consistency of query result is important for me, what should I do next?


    In my app design scene, I don't except the icegridregistry's "eventual consistency", I want to use the icegridregistry as a "master-slave" server: master work, slaves syn data only until master die, Because in this "master-slave" mode, I can get same result when a business server is die or some other situation.

    Any advise?

    I don't know that if my express is clear, thank you for your patient.
  • bernard
    bernard Jupiter, FL
    Hi MinYi,
    Q1: I want to know that what rules to select endpoint of locator in the ice runtime.

    The default endpoint selection policy is Random. See https://doc.zeroc.com/display/Ice36/Connection+Establishment for more details.
    Q2: If the data consistency of query result is important for me, what should I do next?

    You should always get consistent results, without any extra work. In particular, if you update a well-known object in the master IceGrid registry, and then query any reachable IceGrid registry replica, you'll see this update.

    Best regards,
    Bernard
  • Thank you for your reply~