
获得徽章 0
赞了这篇文章
赞了这篇沸点
初六咯,来一个够“6”的项目迎合一下今天这个日子吧~Redis.io 官方推荐的 C# 语言 redis 客户端库——csredis,它支持 redis 2.8-5.0 版本的所有命令,且包含哨兵、集群等功能。该项目从 2016 年开始持续迭代更新,实现了低门槛、高性能和分区等高级玩法。同时项目作者也在 GitHub 上开源了很多有趣、实用的 C# 项目。这个精神值得我们学习,一起为开源社区贡献自己的一份力量吧。
hellogithub.com
展开
评论
5
赞了这篇文章
赞了这篇沸点
赞了这篇沸点
赞了这篇沸点
赞了这篇沸点
架构高可用移动网络连接
大多数的网络连接都会向DNS服务器解析域名 会消耗一个往返(RTT)的时间
但DNS解析是有隐患的 比如耗时 不稳定 解析失败 劫持等情况
1)解决耗时和稳定性
阿里云腾讯云等维护自身的HttpDns 当http请求时 根据请求的地理位置返回IP地址列表
同时会进行测试 按照速度进行排序 并且下发了缓存有效时间TTL 客户端可以在这个有效期内使用缓存在本地的IP地址列表
过期后再去请求新的 (保证了速度最优的地址选择)
规模小点的项目可以使用更加轻量的方案:内置IP列表
IP列表内嵌APP 首先对IP列表逐个测速 根据结果动态改变权重(优先级) 然后提供给网络连接
2)刷新机制
选择最优的IP地址是针对单个网络链路而言 但如果网络切换了 从WIFI到4G到3G或者A WIFI到B WIFI
整条网络链路都会变换,需要及时的刷新机制保障
1.TTL过期刷新
2.广播监听网络变化 变化后触发IP列表异步刷新测速 及时替换
3.服务器下发 用来减缓某台服务器的压力
缓存的具体形式KV (网络类型+网络标识):(IP地址) 可以同时使用磁盘和内存缓存
3)容错兜底
如果APP打开后HTTPDNS没有完成 或被拦截了怎么办
准备多个策略进行优先级
1.HTTPDNS
2.本地DNS
3.动态下发IP列表
4.硬编码IP列表
4)弱网优化
弱网情况下连接很难成功建立
串行连接 先连接IP 超时换下一个
并行连接 多个IP同时连接哪个先通用哪个
实际使用可以综合两种连接 可以分多组进行连接 连接失败 从这组下一个进行连接 当其中一个连接建立成功 则停止其他连接请求
5)自主诊断
获取用户手机网络链路 存储数据上报
在Android中可以开启后台线程 执行ping命令
或者通过编译C开源库iputils 进行traceroute模拟
大多数的网络连接都会向DNS服务器解析域名 会消耗一个往返(RTT)的时间
但DNS解析是有隐患的 比如耗时 不稳定 解析失败 劫持等情况
1)解决耗时和稳定性
阿里云腾讯云等维护自身的HttpDns 当http请求时 根据请求的地理位置返回IP地址列表
同时会进行测试 按照速度进行排序 并且下发了缓存有效时间TTL 客户端可以在这个有效期内使用缓存在本地的IP地址列表
过期后再去请求新的 (保证了速度最优的地址选择)
规模小点的项目可以使用更加轻量的方案:内置IP列表
IP列表内嵌APP 首先对IP列表逐个测速 根据结果动态改变权重(优先级) 然后提供给网络连接
2)刷新机制
选择最优的IP地址是针对单个网络链路而言 但如果网络切换了 从WIFI到4G到3G或者A WIFI到B WIFI
整条网络链路都会变换,需要及时的刷新机制保障
1.TTL过期刷新
2.广播监听网络变化 变化后触发IP列表异步刷新测速 及时替换
3.服务器下发 用来减缓某台服务器的压力
缓存的具体形式KV (网络类型+网络标识):(IP地址) 可以同时使用磁盘和内存缓存
3)容错兜底
如果APP打开后HTTPDNS没有完成 或被拦截了怎么办
准备多个策略进行优先级
1.HTTPDNS
2.本地DNS
3.动态下发IP列表
4.硬编码IP列表
4)弱网优化
弱网情况下连接很难成功建立
串行连接 先连接IP 超时换下一个
并行连接 多个IP同时连接哪个先通用哪个
实际使用可以综合两种连接 可以分多组进行连接 连接失败 从这组下一个进行连接 当其中一个连接建立成功 则停止其他连接请求
5)自主诊断
获取用户手机网络链路 存储数据上报
在Android中可以开启后台线程 执行ping命令
或者通过编译C开源库iputils 进行traceroute模拟
展开
2
1
赞了这篇文章
赞了这篇文章
赞了这篇文章