Android开发Android技术知识Android开发经验谈

从零开始仿写一个抖音App——日志和埋点以及后端初步架构

2018-09-17  本文已影响953人  何时夕

本文首发于简书——何时夕,搬运转载请注明出处,否则将追究版权责任。交流qq群:859640274

本项目的 github 地址:MyTikTok

这两周实在是太忙了,第一个需求即将上线加了一周的班,然后第二周又团建了三天导致这次的文章滞后了两周,估计大家都以为我要弃坑了。但是其实我在团建的时候都在赶文章,让大家久等了。本周的文章将会讨论下面几个问题,大家可以按需跳章查看以节省宝贵的时间,本文预计阅读时间10分钟

一、讨论

讨论1:项目会不会使用 kotlin?

讨论2:本系列文章是标题党,蹭抖音的热度

二、日志和埋点

日志在一个项目中起着非常重要的辅助作用,它可以让开发人员方便的定位 bug。它可以在系统上线之后让后台监控 app 的性能以及稳定性。他还可以收集用户的行为数据以方便对用户的需求进行分析。在这一节中我会分析5种不同的日志,并讲解其中几种日志的实现方式。

首先我先列举一下五种不同的 log 吧。

1、debug日志

图1:debug日志.png

2、aop日志

图2:aop日志.png

3、网络请求日志

图3:网络请求日志.png

4、本地文件日志

图4:本地文件日志.png 图5:LocalFileLogger代码1.png
图6:LocalFileLoggerService代码1.png
图7:FileLogger代码1.png
图8:LoggerHandler代码1.png

5、埋点日志

图9:埋点日志.png

三、后端架构的初步设想

虽然本项目的着重点是仿抖音 android 端 app 的开发,但是后台方面也会有所涉及。接下来笔者会介绍一下本项目在后端方面的目标和预期达到的效果。

1、RPC

可能会有客户端的同学对 RPC(远程过程调用) 这个词不怎么了解,我这里就先简单介绍一下。

拿 Java 来说:比如我们有两个服务 A、B 在两个服务器上,此时我们要在 A 上调用 B 的服务获取其上的数据 Foo。那么在 A 中可以写成 Foo f = b.XXXService();。在这里 Foo 是 A、B 两个服务所定义的数据传输结构,b 是 B 服务所抽象出来的对象,其内部实现可以是各种网络数据交互协议,比如说 http 协议。简单来说:RPC就是要像调用本地的函数一样去调远程函数。

现存的 RPC 框架有很多,各个大厂也都开源了自己框架,我这里就介绍和比较一下几个框架,最后结合本项目的需求选择适合的框架。

看了上面的比较我想大家心里已经有了答案,没错我决定使用 grpc 做为本项目后端的 rpc 框架。然后开发的语言是 python 为主,java 为辅助,后面如果有时间的话可能会用 go 实现一个小的服务也说不定。使用这些语言的原因有下面几点:

2.微服务与服务治理

其实本来在这里我有很多东西想说的,但是发现自己现在的能力并不能完全说好这两个东西,怕最后会误导大家,所以我这里就列一下最后本项目需要完成的与这两个目标相关的东西。

四、ubuntu环境初始化

不知道在我的读者中有多少个人用的是 mac。因为我本人就是 mac 和 win 的双系统用户所以我深知。mac 在开发方面的好处。这一节就轻松一点,我演示一下如何将本地 mac 命令行环境初始化到云上的 ubuntu 中。

1、oh my zsh

图10:oh my zsh.png

2、vim 配置

图11:vim.png

3、docker配置

这两周我也抽空学习了一下 docker,我的理解上 docker 就是一个方便打包重用超轻量虚拟机。所以我们后端也会用上这个技术以方便运维。我也是刚学这东西,所以我就贴几个我学习的网址吧!

五、尾巴

本篇文章是从零开始仿写一个抖音App系列文章的第四篇,篇幅比较长能看到这里的同学非常感谢你们对我的认可。从决定写这个系列的文章开始到现在已经两个多月了,我发现这两个月我的成长是非常迅速的,所以接下来我还会坚持这样写下去。

连载文章

上一篇 下一篇

猜你喜欢

热点阅读