前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1718总结与计划

1718总结与计划

作者头像
情情说
修改2018-04-28 13:20:14
7930
修改2018-04-28 13:20:14
举报
文章被收录于专栏:情情说情情说

2018年已经悄然到来,回望过去一年,收获很多,感恩很多。未来一年,内心充满了期待,无论是工作还是生活,将会发生很大变化。大年初一的晚上,将自己的所思所想记录下来,与大家分享,激励自己18年更努力。

17年总结

我目前就职于小米,在『小米网智能客服项目』从事开发工作,项目主要包含在线客服、智能机器人、智能数据分析三大块,另外还包括热线、邮件、工单等模块。

16年3月份,我加入这个团队,当时就4个人,每个人负责多个子项目。经过了解,项目初期想做的功能很多,设计的比较大,很多人投入进来,形成了很多个子服务。所以17年上半年之前,我一直在维护项目,解决线上的一些问题,实现业务的一些小需求。另外,当时小米的管理比较扁平化,项目管理和团队管理也不是很规范,自己也比较松散,技术和团队协作能力提升的都比较少。

17年下半年,小米发展增速明显,国内和国外的业绩都有了很大提升。管理上也开始重视起来,招了很多项目经理,『小米网智能客服项目』有了产品功能规划,开发团队也慢慢扩大,慢慢变得好起来。

还有一点对我影响很大,我们团队的开发负责人,17年中旬加入进来,有10多年的开发、管理经验,从他身上,在任务规划、执行力、团队协作上学到了很多。

下面从主要工作、线上问题处理、规划执行能力、家庭几个方面总结自己过去的一年。

主要工作

我主要负责在线客服,使用到的主要技术点:

  • NIO
  • 多线程
  • WebSocket协议
  • 会话状态管理
  • CAS单点登录
  • Shiro权限控制

使用到的主要框架和组件:

  • SSM
  • Redis
  • RabbitMQ
  • ZooKeeper
  • Thrift
消息平台

在线客服最重要的一点是保证用户和客服能够在线沟通,类似于IM。现有系统缺少消息确认、重发机制,多终端消息同步也不支持,17年在技术负责人的指导下,重构了『在线实时聊天』模块,进行了抽象,变为通用的『消息平台』:

  • 长连接接入层还是使用netty实现的websocket通道,比之前更通用,扩展其他协议也很方便,另外可支持多实例部署,随时重启;
  • 消息存储层,为了方便,使用MySQL+Redis进行存储,保证了消息的有循序,实现了消息确认和重发机制;

有点遗憾的是,17年下半年规划需求比较多且比较紧急,人也比较少,没能够正式上线,18年一定要推进上线。

maven依赖统一管理&工具类封装

前面说到,项目有很多子服务,每个服务maven的配置都很相似,更新维护都要修改所有的服务,不是很方便。经过调研和思考,决定将公共的依赖、版本声明、构建过程、maven插件统一管理,抽象出一个parent pom。

maven本身就支持parent pom,每个子项目只需声明下继承父pom,就可以直接声明需要的依赖,不需要再声明版本,构建过程。

另外,将公司其他组的一些工具类,也声明在父pom中。客服项目特有的一些工具类移到父pom所在项目,并在父pom中声明。

国内和海外代码分支合并

因历史原因,国内和海外代码分支是不同的分支,海外的功能较国内相对较少,而且海外有近1年未更新了。一次,业务提出一个海外需求,该需求在国内分支已经实现。经过确认,海外有的功能,国内都有,而且交互和操作都相同,只是一些基础存储组件不同。最终决定,合并国内和海外分支,方便以后功能扩展,节约开发时间和维护成本。

升级过程熬了2个通宵(不是连续的),过程在此就不详细描述了,简单总结下:

  • 大的变更上线前,一定要做好回滚预案, 升级失败可及时回滚,不影响现有业务;
  • 条件允许,最好有预上线环境,尽量完全模拟线上,因为海外网络结构比较复杂,虽然测试环境测试正常,上线后可能出现各种问题;
  • 上线时,相关人都要在场,有问题时及时协调处理;
推进协作开发规范

相信大部分团队都在使用git进行代码版本控制,但真正用好git,多人协作开发一个项目,需要规定一套工作流规范。

我借鉴网上比较流行的git flow规范,形成了相关规范,对各种场景的使用进行了说明,并做了一次分享,现在已经在项目中试运行,明年会加强推进。

扩展阅读:

线上问题处理

问题处理也是很重要的能力,更能提现一个人的能力,遇到问题时,首先不要排斥,它是提升自己能力的一个机会,问题解决后,要进行总结回顾,下次遇到相似问题时可以快速定位和处理。

17年遇到了不少问题,下面列举2个问题总结(当时总结的)。

测试环境-客服端无法访问
  • 问题描述
    • 浏览器访问测试环境客服端时,直接提示502错误,后台服务不可用;
  • 排查过程
    • 查看resin服务器日志和程序日志,未发现异常;
    • 查看cpu指标,未发现异常;
    • 查看jvm内存使用情况、垃圾回收情况,未发现异常;
    • 查看jvm栈,发现有好多线程在同一处等待数据库资源,可能数据库资源已被耗尽;
    • 重点关注“线程等待的代码”,打开数据库连接池日志,在本地尝试复现;
    • 同事在本地复现,发现调用snaker(一个开源的工作流框架)的一些方法时,占用很多连接, 用完后并没有释放;
    • 同事通过review代码,发现,在Service类加上Spring事务管理器后,问题解决;
    • 通过查看snaker源码,snaker在处理工作流时,旨在最后一次操作还回连接,如果未开启事务管理, 会获取多个连接,但仅释放最后一次连接,导致连接泄漏;
  • 总结
    • 排查问题时,不应太着急,理清思路,一步步进行排查;
    • 珍视排查问题的机会,从中会学到很多;
海外正式环境-ip白名单问题
  • 问题处理过程
    • 2018/02/04,发现时常有提示【ip禁止访问】的问题,当时觉得可能自己的网络不稳定,没有在意;
    • 2018/02/05,业务开始反馈多个客服出现【ip禁止访问】的问题,我和同事开始介入排查;
    • 尝试重启服务解决这个问题,但无效;
    • 临时关闭ip白名单功能,让业务可以正常使用;
    • 2018/02/06上午,我尝试开启ip白名单功能,但还是出现【ip禁止访问的问题】;但发现服务端打印的访问者(我的内网机器)ip和我真实的不同;(curl cip.cc)
    • 把发现的情况告诉运维,运维开始排查;
    • 2018/02/06下午,4点半左右,运维定位到问题:信息部将某个域名公网IP转发到专线出口,说是为了解决国内到新加坡走国际链路慢的问题;
    • 5点半左右,我添加对应的网段到ip白名单中,开启ip白名单功能;
    • 后续观察,问题解决;
  • 总结
    • 不放过一个异常的现象,也不排斥和害怕处理这些问题;
      • 明确:线上问题处理能力是很重要的能力;
      • 整体上分析问题出现的可能原因;
    • 如果线上一直运行正常,突然某个功能不可用,就要考虑外部的一些因素了,尤其是网络;
规划执行能力

从团队负责人身上,获益最大的就是规划执行能力,让我做事有条不紊,有始有终,更充实、更有效。

下面分享下我们团队和我的规划执行过程

  • 每月初进行月度总结和规划;
  • 每周四下午填写周报,我会详细总结上周计划完成情况、下周计划;(特别重要,会特别认真填写)
  • 每周五进行进行周会;
  • 每周五,我会把下周主要工作同步到outlook日历中,细分每一天的任务;
  • 协作过程
    • 接到需求后,产品先进行分析,给出产品文档和初步的原型设计;
    • 开发阅读和理解产品文档,记录下疑问;
    • 产品和开发一起参加需求确认人,对一些细节和疑问进行讨论,确定最终的需求和原型;
  • 其他
    • 团队任务使用teambition进行管理,可查看团队所有任务;
    • 重点任务,每天下班前会进行沟通,确保任务按计划执行;

我严格执行了上面的过程,获益良多。

家庭

篇幅原因,就不多说了,总结两点:

  • 老婆辛苦了,怀了小宝宝,我没能好好照顾你,感谢你的包容;
  • 感谢丈母娘,专门辞去工作照顾你的女儿,辛苦了;
18年计划
技术学习

我会深入学习以下相关技术:

  • 即时通讯
  • NIO
  • 消息系统
  • 分布式缓存
  • spring boot
  • 数据分析
管理能力

18年,我将带个小组,多花精力在管理上,阅读相关数据,向身边优秀的人多学习,加强小组、部门间的协作沟通。

家庭

3月份,我的宝宝就要出生了,我会多花点时间学习如何与她沟通。 老婆会更辛苦,我会多包容她,陪着她。

欢迎扫描下方二维码,关注我的个人微信公众号,查看更多文章 ~

公众号:情情说
公众号:情情说
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 17年总结
    • 主要工作
      • 消息平台
      • maven依赖统一管理&工具类封装
      • 国内和海外代码分支合并
      • 推进协作开发规范
    • 线上问题处理
      • 测试环境-客服端无法访问
      • 海外正式环境-ip白名单问题
    • 规划执行能力
      • 家庭
      • 18年计划
        • 技术学习
          • 管理能力
            • 家庭
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档