Hi,

I've been facing this question for a while and never managed to find the 
"right" answer. Hopefully this forum will be able to enlighten me a little 
bit.

Given a very simple pattern: Consume some data, transform it, store it 
(ETL). The storing part is slow(er) and needs to be fanned out.

The question: What's the best (correct? idiomatic?) way to implement that 
in Go?

A) From "main", buffer the incoming data and launch a goroutine and pass it 
the data to store. Similar to how you could implement a web server handling 
an incoming connection in Go.

OR

B) From "main", create N channels and spin up N goroutines to send down 
data to workers. Round-robin writes to the N channels.
B1) Do you buffer the data in "main" or after the channel, in the goroutine?

I understand that (A) can spin out of control and launch too many 
goroutines and (B) can run into a bottle neck. Each of these problems can 
be easily addressed. I'm more interested in hearing what you think is the 
"right" way to solve this problem?

Thanks

David

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/6ba8cf62-8711-4c39-bf6c-f255727385ffn%40googlegroups.com.

Reply via email to