Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3861
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2018-08-02 15:22
个人简介

在一线互联网公司就职,对技术工作充满热爱,希望一生走技术的道路。

文章分类
文章存档

2018年(4)

我的朋友
最近访客

分类: C/C++

2018-08-02 15:31:36

| 导语 糖大夫血糖仪是腾讯第一款医疗智能硬件设备,目前已经有几十万的设备用户,随着用户量越来越大,之前php的后台服务性能越来越不能满足需求,本章内容主要讲解原系统瓶颈及优化方案实现,也是对之前工作项的总结。

糖大夫血糖仪是腾讯第一款医疗智能硬件设备,目前已经有几十万的设备用户,随着用户量越来越大,之前php的后台服务性能越来越不能满足业务要求,先看一下原来的系统架构。

上图描述了系统整体架构,所有的逻辑层代码都是php同步方式完成,业务功能无区分的全部集中在php-fpm管理的cgi进程中,当业务请求大的时候核心业务没有任何资源优势,但是大家都知道血糖仪最主要的功能就是测血糖,也就是说我们最核心,业务关联最多,访问量最大的请求就是血糖上报。而实际情况也是血糖上报响应速度确实很慢,个别场景已经影响到正常上报。

接手时的各种现象:

1.在业务峰值来临是php-fpm管理进程会通过增加进程数来提高承载能力,而机器资源不足,配置不合理导致进程被重启经常导致告警,服务中断,数据丢失等。

2.出厂注册速度慢,周期长,厂方等不及就并行发货,未注册成功设备流出现象偶有发生。

3.血糖接口响应慢导致设备超时重复上报,重试上报带来了服务端更大的压力,恶性循环,血糖上报,设备绑定等核心业务无法保证稳定。客服经常接到的客户投诉,需要研发配合排查及修补数据。

着手改造优化:

1.分离- 独立的功能模块独立出来,不全部融合到一起。

设备出厂前都需要批量在微信公众号注册并且生成各自的加密key,是自身内部的需求而且往往是自己给自己创造了峰值。

2.核心功能独立部署,资源优先照顾。

血糖上报模块独立taf化重构,易维护性提高,php->c++性能提升,资源独立申请优先保证核心业务稳定。

3.大表拆分,提高数据层速度,同步改异步,提速,削峰。

日志流水表,血糖表分表做分库分表,化解了数据激增带来的数据层压力。接口内逻辑众多,原来所有业务处理完再返回,响应慢。优化上报后入任务队列直接返回,由消费线程保证任务原子性异步处理,提高响应速度,同时也有缓冲削峰的效果。

达到的效果:

1.抽离带来的压力减少,稳定性提高,同时独立模块标准化部署带来了维护的便捷,监控告警、问题定位都更加快速高效。

2.血糖模块核心资源优先保证,核心数据稳定性提高,异步化改造带来了承载能力的提升及快速响应。

3.后端数据层的拆分为以后数据增长提供保障,不必担心业务增长带来的系统压力。

从现象上来看:

1.服务自动重启基本避免,再也不会半夜收到告警了。

2.发货的设备没走完出厂流程的现象杜绝了,改造后未有非法设备的客户投诉。

3.客户投诉减少,经常配合客户排查问题及修补数据的现象减少,基本可以专心开发需求了。

总结:

没有最好,只有更好,系统优化之路永无止境。时间和精力有限,能做的事情不多,以上只是本人在前段时间的部分工作内容简单总结,逻辑细节不做赘述,希望写的清晰易懂。希望跟各路大牛探讨系统优化方案,学习成功经验,如果有哪些优化方法能够被各位采纳,荣幸之至。

阅读(447) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~