
获得徽章 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模拟展开21 - 推荐一个十分牛逼的图标库 Ikonate,上面的所有图标完全开源,皆可商用!
该图标库还支持自定义图标,你可以随意设置图标的边框、大小、风格、颜色等属性。在无障碍浏览和性能方面该库也做了充足的优化。
官网:www.ikonate.com
GitHub:github.com
展开评论112