tlv帧头设置避免冲突: 参考:https://blog.csdn.net/yxp200401/article/details/8809053
帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。
websocket 参考:http://www.52im.net/thread-338-1-1.html
https://juejin.im/post/5c6234426fb9a049e7029555
80端口
websocket是否存在分包的问题,如何实现的。当前的tlv是否支持分包
基于TCP连接,首先要进行三次握手,发送http请求,要加入特定的字段,
websocket直连ip----后端如何进行负载均衡,高并发。
websocket的tcp/ip 参考:https://zhuanlan.zhihu.com/p/27021102
长连接与Http短连接、Keep-Alive
网络优化
网络优化考虑网络请求的几个环节:DNS解析获取ip地址------> 网络通道中传输(网络信号很弱,如底下车库,封闭空间电梯等)---> 请求返回速度
他人理解:DNS解析 -> 建立TCP连接 -> 数据传输 参考:https://xiaozhuanlan.com/topic/6982074351
dns解析:httpdns方案,后面提到的域名收编,ip直连。
参考:https://tech.meituan.com/2017/03/17/shark-sdk.html
域名合并,针对域名层级过多问题,三级域名 -----(美团方案笔记)
背景:
随着开发规模逐渐扩大,各业务团队出于独立性和稳定性的考虑,纷纷申请了自己的三级域名。App中的API域名越来越多。如下所示: search.api.dianping.com ad.api.dianping.com tuangou.api.dianping.com waimai.api.dianping.com movie.api.dianping.com …
App中域名多了之后,将面临下面几个问题: * HTTP请求需要跟不同服务器建立连接。增加了网络的并发连接数量。 * 每条域名都需要经过DNS服务来解析服务器IP。
如果想将所有的三级域名都合并为一个域名,又会面临巨大的项目推进难题。因为不同业务团队当初正是出于独立性和稳定性的考虑才把域名进行拆分,现在再想把域名合并起来,势必会遭遇巨大的阻力。
过多的域名会导致过多的dns解析,增加被劫持的概率
和不利于链接复用
方案:第一步:域名收编------服务端恢复(潜在要求有一个强大的统一的网络入口平台,类似于bfe)
第二步:域名变少合并为一个后,对此进行优化,考虑略过dns阶段,通过ip直连方式即客户端架设自己的DNS服务:跑马方式,对多个ip进行测速,选择耗时较少的ip。
根据前面的了解,最佳ip可能会受到链接网络类型的影响,如4g,wifi。需再次确认。
那么local dns 服务和httpdns相比呢?如何选择?
前者是针对主域名,大量请求关联在同一域名上的特定方案,此方案大量进行会消耗性能,每次ip列表更新后,甚至网络情况发生变化时,都要进行重新测速。
httpdns是针对大量域名的一个通用方案。
延伸
在遇到这样一个专项中:
- 了解业内一些良好的处理方案,从中看到一些可能出现的问题,从哪些角度考虑解决这些问题,形成最终的解决方案:前期接入方案,考虑快速迭代,成本因素;后期优化对哪些问题进行了优化。
2.站在已有的基础上,对自己现有的业务场景进行分析,综合考虑,权衡形成一期方案。
参考专栏:http://xiaozhuanlan.com/AndroidArch?subscribe_notification=true
网友评论