> On Nov 2, 2017, at 2:37 PM, Aashish Sharma <asha...@lbl.gov> wrote:
> 
> 
> 
> Now, while Justins' multiple data nodes idea has specticular merits, I am not 
> much fan of it. Reason being having multiple data-notes results in same sets 
> of problems

It does not have the same problems.. It may have different problems that I 
haven't thought of yet, but it doesn't have the same problems.

> syncronization,

What synchronization problems?

> latencies

Adding multiple data nodes will reduce the load on each node and lower overall 
latencies.

> mess of data2worker, worker2data events etc etc


you're projecting the current mess of worker2manager_events and 
manager2worker_events onto what I am trying to replace them with.

Having
    worker2manager_events
and
    @if ( Cluster::is_enabled() && Cluster::local_node_type() != 
Cluster::MANAGER )

all over the place exists because bro doesn't have higher level methods for 
distributing data and events across the cluster.  I am not proposing replacing 
that with

    worker2datanode_events
and
    @if ( Cluster::is_enabled() && Cluster::local_node_type() != 
Cluster::DATANODE )

I'm proposing getting rid of that sort of thing entirely.  No '@if cluster'. no 
'redef worker2manager_events'. All gone.

> I'd love to keep things rather simple.  Cooked data goes to one (or more) 
> datanodes (datastores). Just replicate for relibaility rather then pick and 
> choose what goes where. 

Then clusters will just change from having an overloaded manager process that 
is falling under the load to 2 data nodes that are both failing.  This is just 
renaming the current bottlenecks and is not a solution.

I implemented a multi data node cluster back in March on top of 
topic/mfischer/broker-integration .  Porting my scan.bro from the 
manager2worker_events stuff to sending events directly to one of N datanodes 
was:

Remove:

    redef Cluster::worker2manager_events ...
    @if (Cluster ...
    event Scan::scan_attempt(scanner, attempt);

Add:
    
    local args = Broker::event_args(Scan::scan_attempt, scanner, attempt);
    Cluster::send_event_hashed(scanner, args);

Other than having that wrapped in a single function, it doesn't get any easier 
than that.

— 
Justin Azoff


_______________________________________________
bro-dev mailing list
bro-dev@bro.org
http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev

Reply via email to