Hi,
I too have added some comments to the document.
Thanks
Gary


On 11/13/2012 12:06 PM, Salvatore Orlando wrote:
Hi Yong,

I added some more comments on the google document.
I don't think this design is bad. Still, I believe we can smooth some details in order to keep the efficiency improvement that you are achieving with a lesser impact on the plugin.

I also have some more comments inline.

Thanks,
Salvatore

On 12 November 2012 23:50, gong yong sheng <[email protected] <mailto:[email protected]>> wrote:

    Hi salv-orlando and markmcclain,

    There is no email back for a long time since I sent out the spec,
    So I had not paid attention to the spec for a while.


I do apologise for that. However, as you know, when this happens it's not because we're deliberately ignoring the work.

    I have replied mark's comments.

    I have to say, this design is of high efficiency.


I agree that the goal will be to increase efficiency of the interface between the plugin and the agent.

    1. l3 agent does not bug server many times within a sync cycle.


Agreed, but I suspect we'll be paying an undesired price in terms of scalability of the server side component. I have some comments on the google document and a suggestion for an alternative, which I'm pretty sure you've already considered. So it's up to you telling me why the alternative would be worse than the solution you're proposing :)

    2. We use adjustable periodical time to sync data so that even if
    administrator operates routers' data in a frequent manner,
    the system's behaviour can be expected. There is no notification
    and data exchange between l3 agent and quantum server for every
    router operation. This will create latency between router update
    and putting into operation. Of course, we can modify the algorithm
    so that
    l3 agent will sync data after each router and its related data
    modified. ( including created, deleted, updated)


I found interesting that you are seeing periodic sync as a better approach compared to notifications. I agree the period of synchronization is tuneable, and expert deployers will be able to analyse their traffic pattern and find the optimal sync period. Still, notifications is a widely and successfully used mechanism in a wide set of apps. So I'm curious to hear why you think they might not be as good as periodic syn in our case.


      interface

    the interface between quantum server and l3 agent is simple:
    l3 agent -> quantum server:
    sync_routers(host, synctype)
    synctype is full sync and incremental sync.
    first time is full sync and then we will use incremental sync for
    normal operations.
    If sync
    quantum server -> l3 agent
    router_deleted(router_id)


Are you explicitly using notifications for delete events in order to avoid the need for soft deletes? From what I gather the sync mechanism is not able to cope with object deletions. Soft deletes are actually my biggest concern. Is this the only kind of notification you're looking at?


      Data structure on server side:


        mapper for l3 agents' sync object:

    quantum server keeps a mapper for sync objects of agents:
    sync object is just keeping last sync time

    to deal with quantum server restart:
    quantum server will start full sync for coming sync to re build
    the cache.


I don't understand this bit. Will the quantum server a notification to all agents inviting them to do a full sync?

    to deal with l3 agent restarts:
    l3 agent will use full sync to replace the sync object on the
    server side.


This is pretty much clear.


        big router concept

    on server side, we have a concept of a big router: include
    router,  its gateway port, its interfaces and related floating ips.

    one sync will sync all of these data by one shot from server to l3
    agent.

    with multi-host and multi-l3 agents coming, we will be able to
    distribute the big routers among l3 agents. so don't worry about
    the data size in one sync.


Indeed. But why worry about maintaining the last sync state for a lot of agents? I know your answer would be that it's just a data structure which maps an agent id to a timestamp, and it's a good argument. But we'll also have increased state because of the added fields, and increased computation logic as you'll need to scan all objects for veryfing whether more have been created/updated since last sync, and the number of those object can grow quite a lot.


      patches are:

    Add created_at and updated_at datetime columns.
    <https://review.openstack.org/#/c/15476/> I think adding
    created_at and updated_at are agreed by many core members, even if
    we don't agree the sync way.
    l3 agent rpc. (WORKINPROGRESS)
    <https://review.openstack.org/#/c/15619/> It is sync algorithm by now.

    Thanks
    Yong Sheng Gong



    --
    Mailing list: https://launchpad.net/~quantum-core
    <https://launchpad.net/%7Equantum-core>
    Post to     : [email protected]
    <mailto:[email protected]>
    Unsubscribe : https://launchpad.net/~quantum-core
    <https://launchpad.net/%7Equantum-core>
    More help   : https://help.launchpad.net/ListHelp





-- 
Mailing list: https://launchpad.net/~quantum-core
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~quantum-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to