1718總結與計劃

2018年已經悄然到來,回望過去一年,收穫不少,感恩不少;將來一年,心裏充滿了期待,不管是工做仍是生活,將會發生很大變化。大年初一的晚上,將本身的所思所想記錄下來,與你們分享,激勵本身18年更努力。html

17年總結

我目前就任於小米,在『小米網智能客服項目』從事開發工做,項目主要包含在線客服、智能機器人、智能數據分析三大塊,另外還包括熱線、郵件、工單等模塊。git

16年3月份,我加入這個團隊,當時就4我的,每一個人負責多個子項目。通過了解,項目初期想作的功能不少,設計的比較大,不少人投入進來,造成了不少個子服務。因此17年上半年以前,我一直在維護項目,解決線上的一些問題,實現業務的一些小需求。另外,當時小米的管理比較扁平化,項目管理和團隊管理也不是很規範,本身也比較鬆散,技術和團隊協做能力提高的都比較少。github

17年下半年,小米發展增速明顯,國內和國外的業績都有了很大提高。管理上也開始重視起來,招了不少項目經理,『小米網智能客服項目』有了產品功能規劃,開發團隊也慢慢擴大,慢慢變得好起來。web

還有一點對我影響很大,咱們團隊的開發負責人,17年中旬加入進來,有10多年的開發、管理經驗,從他身上,在任務規劃、執行力、團隊協做上學到了不少。spring

下面從主要工做、線上問題處理、規劃執行能力、家庭幾個方面總結本身過去的一年。數據庫

主要工做

我主要負責在線客服,使用到的主要技術點:瀏覽器

  • NIO
  • 多線程
  • WebSocket協議
  • 會話狀態管理
  • CAS單點登陸
  • Shiro權限控制

使用到的主要框架和組件:緩存

  • SSM
  • Redis
  • RabbitMQ
  • ZooKeeper
  • Thrift

消息平臺

在線客服最重要的一點是保證用戶和客服可以在線溝通,相似於IM。現有系統缺乏消息確認、重發機制,多終端消息同步也不支持,17年在技術負責人的指導下,重構了『在線實時聊天』模塊,進行了抽象,變爲通用的『消息平臺』:服務器

  • 長鏈接接入層仍是使用netty實現的websocket通道,比以前更通用,擴展其餘協議也很方便,另外可支持多實例部署,隨時重啓;
  • 消息存儲層,爲了方便,使用MySQL+Redis進行存儲,保證了消息的有循序,實現了消息確認和重發機制;

有點遺憾的是,17年下半年規劃需求比較多且比較緊急,人也比較少,沒可以正式上線,18年必定要推動上線。websocket

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月份,個人寶寶就要出生了,我會多花點時間學習如何與她溝通。 老婆會更辛苦,我會多包容她,陪着她。

情情說
相關文章
相關標籤/搜索