官术网_书友最值得收藏!

前言

為什么要寫這本書

大約四五年前,秉承“代碼未動、監控先行”的理念,我開始在公司的平臺部門做服務質量監控平臺。最開始是使用人工埋點的方式來進行監控信息的上報,業務方的接入成本非常高,上線前需要花半天到一天的時間來進行埋點,苦不堪言。

后來公司大力推行DevOps、容器化、微服務,提高了開發和運維效率,但分布式部署架構帶來的問題也迅速顯現出來,如服務拓撲不清、服務依賴關系復雜、日志散落在各個微服務中,等等。在出現問題時,開發人員不知道如何排查,無法快速定位問題。后來我了解到javaagent + ASM這樣的技術能夠自動注入埋點的代碼,于是花了大概一個月的時間苦學字節碼、ASM相關的知識。ASM官方的英文手冊讀了不下5遍,深知其中的難點。另外,APM這一套性能監控工具需要極高的可靠性和極低的性能損耗,倒逼著我對字節碼的執行原理、高性能Java等有了更深入的研究。

我花了大概3個月的時間從零到一實現了整套無侵入字節碼注入APM系統,對整個后端微服務調用棧進行監控,實現了業務方零埋點、跨進程異構系統的調用鏈路追蹤、性能問題代碼級別定位、業務拓撲實時發現、SLA實時統計等功能。該系統上線運行了幾年,至今未出現問題。

我平時喜歡破解一些軟件,一開始都是通過直接修改類文件的方式來進行的,比較煩瑣。掌握了javaagent、ASM、JVMTI這些工具以后,對軟件破解有了更深入的研究。

后來從平臺部門去業務部門帶領更大的團隊,很早期的時候就引入了Kotlin來進行后端開發。為了避免基礎較差的同事誤解語法糖的意思,我對Kotlin中很多語法背后的實現做了詳細的分析,讓他們在使用的時候更加清楚語法糖的實現原理。

一路走來,覺得越底層的知識越有價值,所以想寫一本這樣的書,讓更多的人能夠對JVM字節碼底層的細節多一些了解,在遇到問題時能自己分析、獨立判斷。

主站蜘蛛池模板: 革吉县| 合肥市| 凌海市| 伊金霍洛旗| 兰州市| 镇江市| 筠连县| 临沧市| 海伦市| 东阿县| 齐河县| 株洲市| 酒泉市| 广宗县| 时尚| 化德县| 卓资县| 清流县| 惠安县| 祁东县| 巩义市| 京山县| 株洲市| 古田县| 海淀区| 赤水市| 武隆县| 凤凰县| 张北县| 都匀市| 石狮市| 新疆| 五莲县| 宁晋县| 大关县| 新邵县| 张掖市| 西平县| 确山县| 读书| 铜川市|