Golang实践经验和教训( 二 )

http://

Golang实践经验和教训


当使用复杂的分布式系统时 , 可能会遇到并发处理的需求 。 我们知道golang的协程是处理并发的利器之一 , 加上Golang为静态类型和编译型使得其在企业中使用越来越广泛 。 Mode.net公司系统每天要处理实时 , 快速和灵活的以毫秒为单位动态路由数据包的全球专用网络和数据 , 需要高度并发的系统 , 而他们的动态路由就是使用Golang来构建的 , 本文我们介绍Mode.net在Golang构建分布式动态路由系统时的经验教训 。

并发探测链接指标

Mode.net的路由系统称为HALO , 是Hop-by-Hop Adaptive Link-State Optimal Routing(逐跳自适应链路状态最佳路由)的前缀字母简称 。 动态路由算法部分依赖于链路度量来计算路由表 。 这些指标由位于每个PoP(存活节点)上的独立组件收集 。 PoP是代表网络中单个路由实体的机器 , 它们通过链接连接并分布在形成Mode网络的多个位置 。 组件使用网络数据包探测临近的主机 , 这些邻居将回复数据包给探测 。 链路等待的时间值回复包中得到 。 由于每个PoP都会有一个以上的邻居 , 因此这种探测任务的本质是并发的 , 需要实时测量每个邻居链路的延迟 。 为了计算此指标 , 无法使用顺序处理 , 必须尽快处理每个探针 。

推荐阅读