发布时间:2017-07-18 09:48:59 文章来源:互联网
微博 微信 QQ空间
  协议栈优化

  下面我们看一下协议栈的优化。
 
  这里的协议栈主要是指linux内核TCP协议栈。linux内核的协议栈主要问题是相关Socket的方法都是系统调用,需要从用户态切换到内核态,数据从内核空间到用户空间也需要进行额外的内存拷贝操作。业界有一些开源的用户态TCP协议栈www.yinhang123.net,可以解决这两个问题。使用用户态的TCP协议栈需要优化的点是相关的接口和系统自带的Socket接口命名不一致,直接使用涉及到大量代码的修改,我们怎么样做到在不修改代码的情况下用TCP协议栈呢?这里是通过Hook机制,拦截相关Socket系统调用,dlsym符号解析返回自定义的Socket方法。
 
  硬件性能挖掘
 
  下面我们再看一下单机性能优化的最后一个点——对于硬件性能的挖掘。
 
  硬件性能的挖掘,主要是善于利用Intel CPU的指令集。可以拿我们经常使用的CRC32操作来举例。一般的CRC32实现是根据算法定义来执行字节转码操作,而Intel提供了一套SSE4.2的指令集www.yinhang123.net,它里面包含CRC32的方法。我们可以看一下35W次计算两者的耗时对比,直接用Intel的指令集比一般的实现方法快6倍。
 
  小结:性能好,推送才能顶住海量信息的压力,支撑公司内外业务核心,提供强有力的通道支持。
 
  实时方案的构建
 
  对海量设备进行实时推送主要的解决方案是针对推送的场景优化存储结构,同时将单个推送的RPC节点间调用转换成分布式的批量位图运算,优化Android终端长连接,接入集群分多地部署,做最近接入,和APNs的交互使用HTTP/2协议,对无效的token自动做数据清理。

另一视角

换一换