3. 流程设计
大家好,我是程序喵。
在程序开发过程中,流程架构设计是非常重要的一步。
在编写代码之前,我们最好对系统的整体结构进行规划和设计。
对整体结构进行设计,我们可以将系统分解为模块,每个模块负责特定的功能,再定义好各个模块交互的方式,这样可以使系统的整体结构更加清晰和可理解。
这样设计后,团队也可以更好地协同工作,各自负责不同的模块,开发协作效率也会大幅提高。
在设计整体的结构时,有助于我们梳理开发思路,如果我们自己还没想清楚就开始写代码,那效率肯定会大打折扣。
埋点SDK需要提供的能力
开发之前,首先要梳理需求,咱的这个项目需求很明确,就是把用户想要上报的信息上传到服务端去。但这里涉及到几个关键点:
- 如何保证数据不丢失,上报失败是否需要重试?正在上报过程中,程序如果突然退出,下次启动进程时,是否有必要重新拿出数据上传?为了满足此需求,我们可能需要先把要上传的数据通过数据库方式持久化到文件中,上报成功后再删除。
- 每次上报埋点,需要携带上其他信息,这样方便开发者定位问题,统计数据。比如:
- 程序的版本号
- 程序的版本名称
- 系统版本号
- 用户名
- 设备ID,可以用于标记唯一的设备
- 进程周期ID,用于标记唯一的进程生命周期
- 需要支持多实例。一个应用APP内,不一定只一个部门有埋点上报,可能同时一个进程有好多个模块都需要上报埋点,每个模块可能对应公司内单独一个部门,所以需要支持多实例。每个实例可以上报到不同的地方,上传不同的配置信息。
为了满足上面的几个需求,我们可以梳理出整体的流程:
- 创建不同的实例,每个实例使用不同的工作目录
- 创建工作目录,每个实例产生的数据库文件和日志文件需要保存到单独的工作目录中
- 进程系统等信息的获取与生成
- 获取系统相关信息,系统版本、用户名等
- device_id保存到注册表中,以便下次获取的是相同的device_id,设备ID需要确保唯一
- 生成life_cycle_id,每个进程有唯一的ID
- 配置用户相关信息
- 解析json后,填充到内存中,这些相关信息 + 系统信息用于组装数据,然后上报
- 启动上报功能
- 启动网络模块
- 打开数据库,获取数据库handle
- 打开定时器,每隔5s执行一个操作
- 从数据库中按照优先级排序,取出10条数据,填充到内存中,解密后上报到后端
- 上报成功后,从数据库中删除相关数据
- 上报 title + data + priority
- 连同系统信息 + 配置信息,组装成一条数据,加密(数据库中的数据需要加密,否则到线上被用户看到容易泄漏隐私)
- 塞入数据库
整体流程图如下:

这样梳理后,我们的整体流程其实就会比较清晰,后面我们就可以正式开始写代码阶段了,周四见。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
作者分享
分享最近遇到的C符号冲突问题的排查过程
7
【C++埋点SDK实战】加餐-如何在简历中体现本项目
6
#ifndef vs #pragma once
12
如何准备C++面试?
23
http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/
推荐大家阅读这篇文章《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=怎样花两年时间去面试一个人》,我倒建议大家可以花两年时间成为那个优秀候选人,阅读优质书籍,开源自己的优质代码,写有足够深度的博客,让别人无需看你的简历就知道你是那个合适的人。
32
