岁月划过生命线(2016 年终总结 -季度之星)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 岁月划过生命线(2016 年终总结)-季度之星标签 : coder年假结束, 明天就要回到杭州, 回到我fighting的战场.

岁月划过生命线(2016 年终总结)

-季度之星

标签 : coder


年假结束, 明天就要回到杭州, 回到我fighting的战场. 回首过去的2016, 放纵了许多, 但也收获了很多: n个项目、n个框架、第一个季度之星、头像第一次登上CSDN以及第一个年度超越预期的KPI一位愿意懂你并能够真正懂你的人

回顾2016, 有两个人不得不感谢: 团队老大-康瑜@康康, 曾经的师兄-周盼@盼爷. 因为康康, 我最终选择了微店, 选择了杭州业务技术部一个温馨的团队, 同时在工作上给予我支持和我鼓励. 因为盼爷的信任和帮助, 可以让我放心、放手去干, 去胜任一份可以从中获取成就感的研发工作.

还好有时常总结的习惯, 2016年2~10月份的内容(如自身提高、项目、开源框架等部分内容)已经在岁月划过生命线(16.02 ~ 10)中提到, 在此就不再赘述.


I. 工作 - 代码

随着独立负责整个动态中心系统的时间愈久, 对项目开发/管理也愈有感觉, 处理线上/线下问题也越来越顺手, 但所做的事情也越来越复杂、越来越零碎.
以前一个业务过来, 总会有师兄将项目按模块划分然后分配下来, 我只需要做好我负责的模块并跟其他同学协调/联调好就可以了. 当师兄转岗和组内一个实习生离职, 整个动态中心系统由内到外, 由上到下全部的责任都压在了自己身上, 不再有人帮你划分模块, 不再有人在旁叮嘱提醒, 任何鸡毛蒜皮的小事(产品经理需要了解下实现原理、运营同学需要开通下权限)、任何线上问题(如线程池满、连接池满、Full GC频繁)都需要你一力承担, 24小时on call等待线上报警、客户投诉.


1. 项目

除了年底接了一个一元夺宝项目, 参与开发抽奖开奖等功能之外, 几乎没再接其他大型的项目. 反而是已经已经接手很长时间的动态中心: 需要不断的重构架构、优化实现才能满足不断增长的用户量、数据量以及新业务的接入. 这段时间遇到了很多比较有意思的问题: 缓存连接池满MQ消费速度过慢导致消息堆积MQ消费速度过快导致MySQL压力过大MySQL压力大/响应缓慢导致线程池满触发任务拒绝策略线程池满导致新请求无法及时响应单台Redis缓存由于数据量大导致响应缓慢必须切换为集群等问题. 由于这些问题只会在线上环境暴露, 因此解决起来非常棘手且紧急, 有时需要连续几天加班/周末不休息地去尝试新的解决方案. 在传统的解决方案解决不了的情况下很多激进的优化方案也会被放到线上测试.

很多优化方案由于公司保密原因在此无法展出, 但有很多的思想借鉴了Java并发编程实战深入理解Java虚拟机以及Java并发编程的艺术等几本书, 感兴趣的同学可以参考下.


2. 框架

除了曾在岁月划过生命线(16.02 ~ 10)一文中提到过的Cacher原cache-annotation)、TouchScriptEngine三个框架在16年的最后一个季度都有非常大的升级改动外, 还将常用的业务/功能组件抽取/集合成一个类Guava的通用类库组件jbox、基于JMX开发了一款VM监控工具-VMX, 不过由于后来在网上找到了Apache Sirona, 他能够提供功能更强大、界面更简洁、配置更简单的监控方案, 因此也就没有再继续推VMX.

  • Cacher(原cache-annotation)
    最新版的Cacher借鉴了spring-cache很多特性: 基于SpEL表达式的条件缓存、多缓存产品管理、常量key缓存、统一key前缀…, 同时3.1版本的cacher默认支持从in-heap-cache到off-heap-cache到off-process-cache到disk-cache一直到cluster-cache的九款缓存实现, 真正做到拆箱可用.

    上图ICache实现为微店内部版本, 开源版本可能会有部分出入.
    project: https://github.com/feiqing/Cacher

  • Touch
    最新版的Touch除了删除了基于web.xml的配置、开始支持基于classpath:touch.xmlhttp://www.vdian.net/touch.xsd的配置、支持属性映射修改等功能外, 没有其他大方面的功能性改进. 而是致力于在保持配置简洁、对原代码低侵入的同时提升Touch的性能以及降低对原系统应用的影响.

    project: https://github.com/feiqing/Touch

  • ScriptEngine
    最新版的ScriptEngine不再依赖一个统一的后台, 而是开发了一款Idea插件, 可以在IDE内书写JavaScript、Groovy、Java代码直接发送到线上执行并拿到返回结果, 由于没有了统一后台的权限校验, 因此在数据传输的过程中添加了加解密规则、使用Zookeeper提供服务自动注册/发现, 在提升易用性的同时提升安全性.

    project: https://github.com/feiqing/ScriptEngine

  • jbox
    定制的线程池(扩展ExecutersThreadPool接口)、性能监控工具(Trace、RT、QPS)、对象字节大小SizeOf, 反射工具(List转Map、List属性抽取)、flood AB简易测试框架、通用调用框架等.

    project: https://github.com/feiqing/jbox

最后公司年会又一次在三亚举办, high了几天…


II. 非工作 - Body-Building

由于工作的压力这段时间的读书和body-building时间被压榨殆尽, 但也利用周末和年假空闲读了几部经典, 并稍事锻炼.


1. 读书

  • JVM
    我一直主张每位开发同学都要了解一些系统底层知识, 如JVM 、计算机系统原理… 哪怕不像撒迦(莫枢)那样可以深入到HotSpot VM内部代码实现, 但如果能够了解其底层实现原理(如内存分配、GC原理、JMM对程并发的优化等), 则可以让我们写出对VM更加友好的代码(提供更高性能).
    这方面我推荐深入理解计算机系统(未读完(⊙﹏⊙))、深入理解Java虚拟机:JVM高级特性与最佳实践两部书以及并发编程网InfoQImportNew等网站的文章/视频, 以及自己亲手做实验验证、总结. 经过两个多月的努力, JVM方面终于得以入门, 结合线上Server的配置以及曾经遇到过的问题组织了团队内部的分享, 并总结出博客发表出来, 收到了不错的反馈. 详见我的博客JVM分类.

年会无聊时又发现一部VM相关书籍Java性能优化权威指南. 这部书将着眼点放了性能调优方面, 介绍了很多性能监控、分析、调优方法, 虽然也有JVM相关内容, 但行文方式与深入理解Java虚拟机有很大不同, 可以结合一起阅读.

  • Effective Java
    了解JVM可以写出对VM更友好的代码, 而了解与Java语言深度结合的实践经验则不光可以写出更高性能的代码, 还可以使其更易于阅读、易于扩展, 而Effective Java则将Java语言的最佳实践经验总结并展现在我们眼前(作者是Java Collections Framework作者, Google 首席Java架构师, 详见你应当知道的Java牛人 v2.0). 虽然以前断断续续读过其中部分章节, 但一直未能从头至尾的吸收其精华, 因此就利用闲暇时间和年假假期好好的精度了一遍. 其中大部分章节(如类和接口泛型通用程序设计异常等)讲解精彩绝伦, 但也有部分章节拖沓冗长、过于追求理论上的完美, 但瑕不掩瑜, 仍是非常值得一读.

不过本书的中文版翻译实在拙劣, 错字连篇, 让我误以为亚马逊开始卖盗版书, 甚至几位中文译者是不是存心毁了这本书? 但翻阅原著, 发现原文行文也确实有些蹩脚难懂.


2. 锻炼

由于天气渐冷、工作渐忙, 坚持了8个月的跑步没有再继续下去, 虽然也办了健身卡, 但也只去跑了几次步就没有坚持下去了. 不过每周陪室友去学游泳倒让放下许久的游泳又坚持了下来, 放松的同时也趁机也学会了自由泳. 年会在三亚一起游泳时也让同事惊讶于一年前还什么都不会的我最近一年来的进步(~ ̄▽ ̄)~.
另外我还竞选了团队“体育委员”一职, 虽然自己的羽毛球球技一直以来未曾进步, 但在工作的间隙组织团队与其他部门同学联谊打球, 推动团队body-building, 大家在一起抛开工作说说笑笑, 也让团队气氛更加融洽.

早晨起来称一下体重, 由于几个月来的辛(hao)苦(chi)工(lan)作(zuo), 已经从74kg涨到了79kg, 因此在新年目标中又增加了一项: 体重从79降到72.


III. 季度之星

微店每个季度会从不同的方向(技术、运营、产品、客服、行政….)评选出一批优秀员工予以奖励 -是为季度之星. 虽然是一名毕业不久的应届生, 但对这一隆重奖项也觊觎良久, 但也从想过这么快就能够得到. 当得知自己获奖的一刻, 意外 & 激动 溢于言表, 感谢团队成员和公司的肯定.


IV. 规划 - 未来(2017.01 ~ 2017.04)

其实我是来给书做广告的 ╮(╯_╰)╭ …
现在以及未来的5个月初步计划要完成下列内容的学习(1~3 必须完成, 4~6视情况而定):

1. Java基础

  • Effective Java
  • 深入理解Java虚拟机(复习)
  • Java多线程编程的艺术(Java并发编程实战)
  • Java性能优化权威指南(HotSpot实战)

2. 分布式 & NoSQL

  • Zookeeper: 从Paxos到ZooKeeper.
  • 大型网站系统与Java中间件实践.
  • 分布式消息队列MQ: RabbitMQ实战(RocketMQ的实践 & 设计理念).
  • Redis设计与实现

3. Spring实战 & 原理

  • Spring实战
  • Spring揭秘

附: 人文

  • 文明之光(第2册: 从牛顿到航天)
  • 彷徨之刃(当法律无力逞凶, 人们该去往何处?)

*4. 算法

  • 算法之道
  • 算法(第4版)
  • 算法设计与分析基础(第3版)

*5. 存储: MySQL & 分布式

  • MySQL技术内幕 - SQL编程
  • MySQL技术内幕 - InnoDB存储引擎(MySQL调优)
  • 大规模分布式存储系统:原理解析与架构实战(OB存储核心)

*6. 大数据

  • Hadoop(MR/HDFS): Hadoop基础教程(Hadoop权威指南)
  • HBase: HBase权威指南
  • Hive: Hive编程指南

*附. 其他

  • 原理: TCP/IP、操作系统、计算机系统
  • 搜索引擎、机器学习入门
  • 脚本语言: Node.js、Python、Groovy

给时光以生命, 而不是给生命以时光.


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
数据采集 JavaScript 数据安全/隐私保护
“五一”出游堪比春运
python如何爬取马蜂窝数据
|
数据可视化 前端开发
带走你的新年愿望,共同开启热力新年
新春送礼,这是技术人开启新年的方式。
带走你的新年愿望,共同开启热力新年
|
安全 物联网 iOS开发
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
2020年春运火车票今天开售;果冻有家,关注年轻人租房子的隐藏需求
443 0
|
安全 物联网
水滴已成立三大检查组;果冻有家,关注年轻人租房子的隐藏需求
水滴已成立三大检查组;果冻有家,关注年轻人租房子的隐藏需求
537 0
学生时代的最后一个新年,请一定要做这五件事
再过一天就要过年了,虽说如今年味越来越淡了,但是毕竟还是一年一度家人团圆的日子,学生党可以说是新春大军里最轻松自在的一群人了,既不用担心春运买不到票,又不用担心七大姑八大姨催婚打探薪水,和长辈们吃个饭还能顺几个红包,何不快哉。