我一直在使用UDPAppender将日志发送到logstash.我希望能够通过DNS实现logstash服务器的故障转移.
隐式地,UDPAppender不检测远程UDP端口是否可用,但即使它确实如此,当我使用remoteAddress的DNS名称对其进行配置时,它在初始化期间被解析为IP地址并记录为IP地址.该RemoteAddresss财产.我知道RemotingAppender,但这似乎不像logstash,因为logstash TCP输入没有实现.NET远程协议,看起来它会遇到通过DNS解析远程IP地址的相同问题仅在初始化步骤.
我正在考虑实现我自己的appender,通过ping包装UDPAppender或通过DNS名称处理重新连接来复制RemotingAppender.这样的事情是否已经存在?
我正在浏览这个问题和一些类似的问题:
很多地方我都读到这样的答案:
我想知道为什么Skip和Take不是数组的恒定时间操作?
反过来,如果它们是常量时间操作,那么Skip和Take方法(最后没有调用ToArray())是否具有相同的运行时间而没有执行Array.Copy的开销,而且空间效率更高?
作为使用策略模式的项目的一部分,我正在尝试编写一个函数,它创建一个函数,每次应用时返回无限序列的下一个值.目前我正在使用这个狡猾的GetNext函数:
let GetNext<'T> (enumerator:System.Collections.Generic.IEnumerator<'T>) =
let n = enumerator.MoveNext()
enumerator.Current
let FunctionFactory<'T> =
let s = 0.0 |> Seq.unfold (fun i -> Some(i, if 0.0 = i then 1.0 else 0.0))
let enumerator = s.GetEnumerator()
(fun (ignoredParam:'T) -> GetNext enumerator )
Run Code Online (Sandbox Code Playgroud)
我希望FunctionFactory看起来像这样:
let FunctionFactory<'T> =
let s = 0.0 |> Seq.unfold (fun i -> Some(i, if 0.0 = i then 1.0 else 0.0))
(fun (ignoredParam:'T) -> Seq.next s )
Run Code Online (Sandbox Code Playgroud)
该ignoredParam在穿过相同的策略模式和依赖于它提供上下文其他功能中使用.由于这看起来很糟糕,我真的有两个问题.为什么没有Seq.next?实现各种可以注入这样的策略框架的序列表达式的正确/优雅方法是什么? …