无线APP日志上报优化实践

简介: 无线时代,APP流量敏感,为了统计APP内用户行为,或者需要收集某些产品数据,往往需要进行日志上报,日志上报往往又非常费流量,有没有一些好的节省流量的优化方法呢,这是本文将要讨论的问题。

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

昨天,和大家讨论了无线APP时代如何进行DNS速度优化【回复“dns”阅读】,今天和大家一起讨论一下无线时代的日志上报流量优化。

缘起:无线时代,APP流量敏感,为了统计APP内用户行为,或者需要收集某些产品数据,往往需要进行日志上报,日志上报往往又非常费流量,有没有一些好的节省流量的优化方法呢,这是本文将要讨论的问题。


一、APP可不可以不进行日志上报,而单纯从服务器日志统计用户的行为和产品数据?

答:不行,有些用户行为是不会与服务器进行交互的(例如TAB的点击),从服务器日志无法完成所有统计。


二、APP通常有一些什么方法来上报日志?

答:常用方法有三种:

1)利用类似于Google Analytics的第三方工具进行上报,优点是无需开发,缺点是不能做个性化统计

2)自己制订私有协议进行上报(例如TCP二进制协议),优点是节省流量,缺点是开发成本高

3)使用HTTP上报,例如通过GET参数传递需要上报的数据,这种方案使用最为广泛。


三、APP上报日志协议细节是怎么样的?

答:一般是在web-server下放置一个空文件,APP通过发起HTTP请求访问这个空文件,通过GET参数传递数据,通过分析access日志来得到想要的数据。GET协议一般又有两种方式,约定格式法 + KV法

1)约定格式法:约定分隔符,约定占位符,约定每个字段的含义,例如:

http://daojia.com/up?bj1939[login]

APP和server约定好,空白文件是up,分隔符是[],第一个字段[bj]是城市,第二个字段[20151021]是日期,第三个字段[1939]是时间,第四个字段[1]是用户id,第五个字段[login]是行为

这个方法的缺点是,扩展性较差,有时候某些字段没有值,也必须在相应的位置保留占位符(因为每个字段是什么含义都是事先约定好的),要想新增统计项,只能在GET后面新增[]

2)KV法:通过自解释的kv方式来上报数据,上面的例子用KV法来上报,则上报形式为:

http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login

这个方法的优点是扩展性好(好太多了),缺点是上报数据量比较大,KEY其实是冗余的字符

笔者强烈建议使用第二种方法来上报数据,后文会简述一些流量的优化方法。


四、APP上报日志,流量很大,主要矛盾是什么?

答:笔者了解到的主要矛盾有:

1)无效的流量较多,HTTP请求内有很多无效数据

2)URL冗余,每次都要上报URL

3)KEY冗余,每次都要上报KEY

4)上报频度高,每当用户进行了一个操作都要日志上报的话,HTTP量还是很大的。


五、有什么优化的方法?

答:针对上述1)-4)的主要矛盾,逐一进行优化:

1)手动构造HTTP请求,尽可能多的去除HTTP中的无效数据,只保留GET /up HTTP/1.1和GET传递的数据

2)使用尽可能短的域名来接收上报的日志,例如s.daojia.cn/a

3)使用尽可能短的KEY来标识数据,例如city=bj可以优化为c=bj,日志收集方注意规范好KEY

4)批量非实时上报,先将数据保存到APP本地存储(例如sqlite中),定时上报,这类优化对于PV类,SUM类,AVG类统计尤为有效,例如,要统计登录按钮的点击次数,三次点击,传统统计可能需要上报三次

http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login

http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login

http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login

优化后,只需要上报一次(注意加了一个count=3的参数)

http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login&count=3


六、非实时上报,数据时效性怎么保证?在什么时机进行日志上报呢?

答:数据的时效性会有一定的影响,但问题不大。为了优化,会在这样的一些时间点进行上报:

1)特殊时间点:APP打开时,APP关闭时等

2)按时间上报:例如每隔10分钟上报一次

3)按数据量上报:例如每收集10条记录才上报一次

一般来说上述三种优化方法会结合进行。

七、还有其他什么优化方案?

答:数据压缩也是一种常见的优化方案。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3天前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。
|
4天前
|
存储 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【5月更文挑战第27天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes已成为现代云原生应用的基石。然而,随着集群规模的不断扩大和复杂性的增加,如何有效监控和管理这些动态变化的服务成为了维护系统稳定性的关键。本文将深入探讨Kubernetes环境下的监控策略和日志管理的最佳实践,旨在为运维人员提供一套系统的解决思路,确保应用性能的最优化和问题的快速定位。
|
2天前
|
运维 Prometheus 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第29天】 在微服务架构日益盛行的今天,容器化技术已成为现代应用部署的标准。其中,Kubernetes 作为容器编排的事实标准,其集群的稳定性和性能监控变得至关重要。本文将深入探讨 Kubernetes 集群的监控策略和日志管理的最佳实践,旨在为运维工程师提供一套高效、可靠的集群监控解决方案。通过引入 Prometheus 和 Grafana 工具进行数据收集与可视化,以及 Fluentd 和 Elasticsearch 配合 Kibana 实现日志聚合与分析,本文将带领读者构建起一个全面的 Kubernetes 监控系统,确保系统的高可用性和故障快速响应。
|
3天前
|
域名解析 缓存 监控
【域名解析 DNS 专栏】DNS 查询日志分析:洞察网络行为与优化建议
【5月更文挑战第28天】DNS查询日志分析对于理解和优化网络行为至关重要。通过日志,可洞察用户访问偏好、流量分布,进而进行缓存优化、负载均衡和安全检测。简单Python代码示例展示了如何读取和分析日志。根据分析结果,可针对性设置优化策略,提升网络性能、稳定性和安全性。不断探索新的分析方法,充分挖掘DNS查询日志的价值,以驱动网络持续优化。
|
6天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【5月更文挑战第25天】在现代微服务架构中,容器编排工具如Kubernetes已成为部署、管理和扩展应用程序的关键。随着其广泛应用,对集群的监控和日志管理的需求也日益增长。本文将探讨如何利用Prometheus和Fluentd等开源工具实现对Kubernetes集群的有效监控和日志收集,旨在为运维工程师提供一套可行的解决方案,以保障集群的稳定性和提高故障排查效率。
|
8天前
|
开发工具 iOS开发
如何导出iPhone手机中app共享文件夹的文件与闪退日志的收集
如何导出iPhone手机中app共享文件夹的文件与闪退日志的收集
13 1
|
16天前
|
数据库
编程日记02:个人站优化数据库和日志
编程日记02:个人站优化数据库和日志
20 0
|
16天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
263 6
|
16天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
16天前
|
运维 Prometheus 监控
Kubernetes 集群的监控与日志管理实践
【4月更文挑战第8天】在微服务架构日益普及的背景下,容器化技术成为支撑快速迭代和部署的关键。其中,Kubernetes 作为容器编排的事实标准,承载着服务的稳定性和扩展性。然而,随着集群规模的扩大,如何有效监控和管理集群状态、确保服务的高可用性成为一个挑战。本文将深入探讨 Kubernetes 集群的监控和日志管理策略,从系统资源利用到服务健康检查,再到日志的收集与分析,提供一个全面的运维视角,帮助运维人员构建一个健壮、可观察的 Kubernetes 环境。
26 0
http://www.vxiaotou.com