跨平台微信网络开源Mars

「弱网络环境下的网络连接质量」,「如何保证长链接通畅」,「如何解决移动wap网关影响 」,「如何针对不同平台不同版本的网络API差异性适配」,「如何充分利用网络带宽 」等等只有移动网络下才特有的问题,移动互联网开始的时候,插线的互联网已经很稳定了。

  Mars 是一个结合移动 App 所设计的基于 socket 层的解决方案,在网络调优方面有更好的可控性,对于 HTTP 完整协议的支持,已经考虑后续版本会加入。

 移动端IM网络层跨平台组件库Mars- https://github.com/Tencent/mars

 Android、iOS、OS X 平台的 demo(微信开源Mars的Demo源码-https://github.com/52im/mars/tree/master/samples

 -- 微信Mars解决了如下问题:
1.提供长连、短连两种网络通道;
2.常规的网络能力,例如 DNS 防劫持、动态 IP 下发、就近接入、容灾恢复等;
3.贴合移动互联网的网络层解决方案;

4.贴合移动终端的平台特性:前后台、活跃态、休眠、省电、省流量等。

   -- Mars在容灾设计上,Mars 不仅使用了服务器容灾方案,也设计了客户端的本地容灾。当部分服务器出灾时,目前微信可以做到,15min 内把95%以上的用户转移到可用服务器上。Mars 的网络模块是基于 socket 层的网络解决方案.这个库提供了网络的方方面面,包括日志,socket,长连接,短连接,网络诊断,网络连通性等.

  -- Mars它主要包括以下几个部分:
XLOG:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能;
SDT:网络诊断模块;
STN:信令传输网络模块,负责终端与服务器的小数据信令通道。包含了微信终端在移动网络上的大量优化经验与成果,经历了微信海量用户的考验;
COMM:基础库,包括socket、线程、消息队列、协程等基础工具;

  Mars STN作为信令传输模块,与目前常用的网络组件如AFNetworking(用于iOS平台)、Retrofit、OkHttp(用于Android平台)相比,STN是跨平台的,基于Socket层的信令网络,主要用于小数据传输。STN中还包含了很多其他方面的实用设计,包括自定义DNS、容灾设计、负载考量、APP的前后台考量、休眠机制考量、省电机制等等。

  微信中使用到的网络服务,大体分为两种类型:信令网络、数据网络。其中STN负责信令网络,CDN组件则负责数据网络。但由于CDN涉及到腾讯内部的CDN服务,因此在Mars的开源列表中并没有包含CDN部分。

  基础组件最初就定位为:跨平台、跨业务的基础组件。跨平台的基础组件已经包含了网络组件、日志组件在内的多个组件。

猜你喜欢

转载自blog.csdn.net/shareus/article/details/80200910