I don't get it. Why are they supposed to be dropped only because the 
logging service is down?

Making a service between P and the logger is an interesting way to go
>
Another service which could be down then as well? Why not a Queue? 

Am Donnerstag, 14. Februar 2019 10:05:40 UTC+1 schrieb Michel Levieux:
>
> Hello everyone, thx for all your interesting answers!
>
> I think the fact that when the logger's down, the requests have to be 
> dropped (not queued, maybe I was not clear enough about that in my first 
> message) restrains our possibilities. Making a service between P and the 
> logger is an interesting way to go. For the moment we have made something 
> quite simple with atomic and some goroutines cooperating to know if the 
> connection is still correct, or to try reconnect when it's not, but I think 
> we will come back on that later.
>
> Le mer. 13 févr. 2019 à 14:54, Dany Xu <xuletter0...@gmail.com 
> <javascript:>> a écrit :
>
>> As discuss above, i think the answer is decoupling the P and logger, 
>> storing the logs when the logger is down.The push and pull pattern would be 
>> better.The p sends all logs and the logger pulls all logs.Just keep a 
>> bigger storage for un-consumed logs.Queue may be is a better way but using 
>> a single storage.
>>
>> 在 2019年2月12日星期二 UTC+8上午12:34:46,Michel Levieux写道:
>>>
>>> Hi guys. I need a little help here.
>>>
>>> I work in a digital marketing company, where we have a program that 
>>> receives a lot of requests every second (counted in thousands) and logs its 
>>> behaviour via a logger that runs on another server. We are currently trying 
>>> to implement a connection-retry system between this program and its logging 
>>> API. What we want is :
>>>
>>> - We have a main program - let's call it P
>>> - P sends logs to the logger in multiple goroutines.
>>> - Sometimes we might need to shut down the logger (for maintenance or 
>>> anything)
>>> - We want P to keep running when the logger's down
>>> - Once the logger's up again, P must Dial it back automatically and 
>>> repair the *bufio.Writer associated with it
>>>
>>> Would you guys know a way not to check each single Read/Write if the 
>>> logger's up?
>>>
>>> Up to here we have thought of using atomic, mutexes and context for 
>>> synchronization, but the issues we face are the following:
>>>
>>> - mutexes create "pending" requests, since there's no way to check if a 
>>> mutex is locked or not
>>> - we're not really sure about the right way to use context for this 
>>> specific case
>>> - we'd like to avoid using atomics as much as possible, notably about 
>>> this quote from the docs : "*Except for special, low-level 
>>> applications, synchronization is better done with channels or the 
>>> facilities of the sync package*"
>>>
>>> In the end, what we're looking for is to reach a minimal checking 
>>> frequency (is connection up? do something, else do nothing), the ideal 
>>> being not to have to check anything.
>>>
>>> Have you guys already faced such problematics in the past? What 
>>> solutions have you come up with?
>>>
>>> Many thx in advance for your help!
>>>
>> -- 
>> 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...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to