天天看點

歲月劃過生命線(2016 年終總結 -季度之星) 歲月劃過生命線(2016 年終總結)

歲月劃過生命線(2016 年終總結)

-季度之星

标簽 : coder

年假結束, 明天就要回到杭州, 回到我fighting的戰場. 回首過去的2016, 放縱了許多, 但也收獲了很多: n個項目、n個架構、第一個季度之星、頭像第一次登上CSDN以及第一個年度超越預期的KPI、一位願意懂你并能夠真正懂你的人…

歲月劃過生命線(2016 年終總結 -季度之星) 歲月劃過生命線(2016 年終總結)
回顧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)、Touch、ScriptEngine三個架構在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的九款緩存實作, 真正做到拆箱可用.

    歲月劃過生命線(2016 年終總結 -季度之星) 歲月劃過生命線(2016 年終總結)
    上圖

    ICache

    實作為微店内部版本, 開源版本可能會有部分出入.

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

  • Touch

    最新版的Touch除了删除了基于web.xml的配置、開始支援基于classpath:touch.xml、http://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

    定制的線程池(擴充

    Executers

    ThreadPool

    接口)、性能監控工具(Trace、RT、QPS)、對象位元組大小SizeOf, 反射工具(List轉Map、List屬性抽取)、flood AB簡易測試架構、通用調用架構等.
    project: https://github.com/feiqing/jbox
最後公司年會又一次在三亞舉辦, high了幾天…
歲月劃過生命線(2016 年終總結 -季度之星) 歲月劃過生命線(2016 年終總結)

II. 非工作 - Body-Building

由于工作的壓力這段時間的讀書和body-building時間被壓榨殆盡, 但也利用周末和年假空閑讀了幾部經典, 并稍事鍛煉.

1. 讀書

  • JVM

    我一直主張每位開發同學都要了解一些系統底層知識, 如JVM 、計算機系統原理… 哪怕不像撒迦(莫樞)那樣可以深入到HotSpot VM内部代碼實作, 但如果能夠了解其底層實作原理(如記憶體配置設定、GC原理、JMM對程并發的優化等), 則可以讓我們寫出對VM更加友好的代碼(提供更高性能).

    這方面我推薦深入了解計算機系統(未讀完(⊙﹏⊙))、深入了解Java虛拟機:JVM進階特性與最佳實踐兩部書以及并發程式設計網、InfoQ、ImportNew等網站的文章/視訊, 以及自己親手做實驗驗證、總結. 經過兩個多月的努力, 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. 季度之星

微店每個季度會從不同的方向(技術、營運、産品、客服、行政….)評選出一批優秀員工予以獎勵 -是為季度之星. 雖然是一名畢業不久的應屆生, 但對這一隆重獎項也觊觎良久, 但也從想過這麼快就能夠得到. 當得知自己獲獎的一刻, 意外 & 激動 溢于言表, 感謝團隊成員和公司的肯定.

歲月劃過生命線(2016 年終總結 -季度之星) 歲月劃過生命線(2016 年終總結)

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
給時光以生命, 而不是給生命以時光.
  • by 攻城師@翡青
    • Email: [email protected]
    • 部落格: 攻城師-翡青 - http://blog.csdn.net/zjf280441589
    • 微網誌: 攻城師-翡青 - http://weibo.com/u/3319050953

繼續閱讀