美联(蘑菇街)无线技术分享感想

简介: 美联(蘑菇街)无线技术分享感想

美联客户端无线网关实践

网关的第一个优化的问题:

由于https(需要5次握手)比http(需要3次握手)多了两次握手(建立ssl隧道),所以在弱网环境下,https建立失败的几率会比http请求多很多。怎么具有https的安全性,又具有http的快速性就是无线网管需要解决的问题。

解决方案:

应用启动建立https的ssl隧道,需要证书认证,并保存会话信息到内存中。当认证成功后,ssl隧道断开(它一般是长连接,由于网络原因或超过它的时间,也会断开),再发送https请求都携带会话信息,当网关收到这样的https请求并且核对会话信息正确,不再进行证书认证直接建立通道(采用和http相似的方式建立通道)。

简言之:应用运行期间,首次https请求需要证书认证,以后不需要证书认证。

网关优化的第二个问题:

当一个页面加载时需要发送多个请求才能完成。通常的解决方案有三个:

1. 客户端多次或依次发送多个https请求(会出现加载页面耗时较长,处理逻辑复杂—部分成功部分失败,app弹出小菊花不当问题)。包括使用RACSignal的merge方法来使多个请求都收到响应后才触发页面刷新。

2. 服务器把多个不相关接口合并成一个接口。

解决方案:

对每个https请求进行编号,抽象出聚合层。客户端发送的一个超级请求包括https请求编号列表,请求参数列表。聚合层解析这个请求,向服务端发起多次请求,当收到所有请求后再给客户端这个组合结果。

由于客户端和网关间时外部网络,网络存在延迟和不稳定。网关和后台服务间是再一个局域网内,网络很稳定,无网络延迟。这样能大幅度提高客户端请求的响应速度和客户端处理的复杂度,服务端也免去了设计各种不相关的请求合并接口。

简言之:聚合层。

pp下载地址:https://pan.baidu.com/s/1bpvOlSb

蘑菇街App启动性能优化实践

对应用启动时的数据加载和文件读写进行分类,区分为启动时必须同步加载的数据(这类数据一般要尽量少)和异步加载的数据(本地化数据读取,这样数据可能比较大。一般的数据都可以用这种方式。这种方式又叫懒加载)。尽快的让用户从点击app图标,到看到欢迎页面。

异步加载的数据数据,通过起线程来加载数据和读写文件。为了防止在读本地数据时,用户使用正读写的数据,可以通过单例变量进行标识和防范(相当于加锁和解锁。系统锁其实也需要时间来生效的,并非你上了锁,它无延迟的生效,但是单例变量就可以做到实时生效)。

既然是用起线程的方式加载大数据,就存在非后台运行的app(如:开启后台持续定位的app,在后台仍可以正常运行),用户在加载数据的时间突然按home键,苹果系统有可能永远挂起这个线程,让你无法再继续加载数据。

所以最后对懒加载的数据部分抽象出来一个类,能够识别数据加载过程中禁止读写,数据加载被永远阻塞重新加载,数据加载失败。

viewWillAppear函数并非在页面加载前的处理,而是页面出现时的时机时在刚显示还不能交互时调用该函数,并非页面显示显示之间调用该函数,viewDidAppear函数是页面出现时机是可以刚可以交互时的处理函数。你在这两个函数里设置一个断点调试时就可以发现它的不同。所以欢迎页最好放在viewWillAppear数据里。

简言之:起线程进行懒加载。

pp下载地址:https://pan.baidu.com/s/1boHmCwf

无线配置中心演进历程

对每个功能进行标号,通过正则表达式进行配置中心数据编号的命中处理。

服务器下发配置中心数据更新消息,客户端解析消息,根据解析的消息结果来决定是否向服务器下载数据(配置数据,hotfix数据等)

简言之:通过配置中心管理需要加载的应用模块。

ppt下载地址:https://pan.baidu.com/s/1o8iA9DK

不过分享会的内容要比ppt中的内容多的多,ppt只是概念性的东东。

我的csdn的上传资源空间满了,只能使用百度云盘了。

蘑菇街分享中心地址:

http://mday.mogu.io/?from=timeline&isappinstalled=0#t1.1(这个网址今天进入不进去,不知道什么原因。原来的是可以了。)


目录
相关文章
|
JSON 安全 JavaScript
开源分享|速进!这些开源项目助你玩转世界杯
为了帮助大家找到更好的世界杯打开方式,OpenSCA项目组搜罗了一些与世界杯相关的开源项目。一起来看看吧~
187 0
开源分享|速进!这些开源项目助你玩转世界杯
|
云栖大会 开发者
云栖大会开始啦!参与话题发博文,机械键盘、无线充电器等你拿!快来分享你和云栖大会的故事吧!
云栖大会开始啦!参与话题发博文,机械键盘、无线充电器等你拿!快来分享你和云栖大会的故事吧!
云栖大会开始啦!参与话题发博文,机械键盘、无线充电器等你拿!快来分享你和云栖大会的故事吧!
|
物联网 开发者
投稿IoT征文,抢与技术大牛连线机会!
想要T恤、背包、键盘这些开发者必备装备吗?想跟技术大牛连线吗?参与征文投稿,下一个“天选之子”就是你!
投稿IoT征文,抢与技术大牛连线机会!
|
消息中间件 边缘计算 Cloud Native
议题剧透|欢迎围观 2021 阿里云开发者大会神仙打架现场
数字时代,创新的时代。万千开发者汇聚智慧,启迪梦想,不断推动创新发生。
议题剧透|欢迎围观 2021 阿里云开发者大会神仙打架现场
|
人工智能 移动开发 边缘计算
|
前端开发 ice
淘系技术前端研习社|邀请你宅在家里看直播
新年第一课|你不容错过的前端好课!
788 0
淘系技术前端研习社|邀请你宅在家里看直播
|
分布式计算 Kubernetes 安全
【0810 - 0814直播导视 | PPT 下载】阿里云智能秋招空中宣讲会持续进行中!快来看直播领内推码吧!
本周多场技术讲座等你来pick!并且还有阿里云智能秋招空中宣讲会之研发&算法专场,还等什么,快上车!
1218 0
|
分布式计算 安全 前端开发
【0803 - 0807 直播导视 | PPT 下载】阿里云智能秋招空中宣讲会来啦!快上车!
本周多场技术讲座等你来pick!并且还有阿里云智能秋招空中宣讲会,还等什么,快上车!
550 0
|
算法 程序员 芯片
【聚能聊有奖话题】手机的100种玩法,程序员你是怎么“善待”你的手机的?
生活中,除了手机里现有的各种应用外,我们还可以用手机来做很多事情。比如自己写个APP,带上自己的加密算法,用它来感应自动开门。没人知道你的算法,所以跟市面上卖的比起来,安全性特别高。以后出门钥匙也不用带了。再比如冬天懒得起来关灯,在被窝里直接用手机关灯、关电视、关空调、关门、关……
4317 0
|
监控 机器学习/深度学习 自然语言处理