阿里巴巴技术输出
一、阿里巴巴Java開發(fā)手冊
經(jīng)過最近幾年的發(fā)展,阿里巴巴形成了良好的技術(shù)體系,阿里巴巴許多技術(shù)輸出影響著越來越多的程序開發(fā)者。有許多工具類的軟件、性能驗證、開發(fā)規(guī)范等等。
如果一個項目比較小那么有許多東西是可以不考慮的,而且,涉及的開發(fā)人員也不會太多,但是如果是一個大型的項目,且開發(fā)人員很多時,各個模塊組合成一個大型系統(tǒng)時,就會有許許多多的因素在影響整個項目。所以,阿里巴巴制定了涵蓋編程規(guī)約、異常日志、單元測試、安全規(guī)約、MySQL數(shù)據(jù)庫、工程規(guī)約、設(shè)計規(guī)約等7大維度的開發(fā)規(guī)范——《阿里巴巴Java開發(fā)手冊》。
經(jīng)過幾年的不斷完善,并經(jīng)歷了多次大規(guī)模一線實戰(zhàn)檢驗,現(xiàn)在已經(jīng)更新到1.4.0版本。(2018年6月更新)
下載地址如下:
鏈接:https://pan.baidu.com/s/1UPag-tGn_zKsTssvG0zkVA
提取碼:zyf1
解壓密碼:123
或者GitHub上的地址:(包含開發(fā)規(guī)約插件)
https://github.com/alibaba/p3c.git
主要的更新節(jié)點如下:
2016年3月,由阿里研發(fā)效能事業(yè)部云效高級技術(shù)專家孤盡首次發(fā)布在ATA(阿里內(nèi)部技術(shù)同學(xué)華山論劍處);
2017年2月,首次對外公開;
2017年9月,正式版發(fā)布。
2017年10月,在杭州云棲大會《研發(fā)效能峰會》發(fā)布;
2018年6月,新增16條設(shè)計規(guī)約!
2018年10月,升級為一本書進(jìn)行出版:《碼出高效:Java 開發(fā)手冊》在杭州云棲大會《開發(fā)者生態(tài)峰會》上正式發(fā)布,并宣布將所有收益捐贈于技術(shù)公益項目“83行代碼計劃”。
關(guān)于這份文檔,還有官方的小視頻:三位普通工程師與《手冊》的故事,有時間的話,可以看一下:http://cloud.video.taobao.com/play/u/2865628743/p/1/e/6/t/1/50293814709.mp4
在阿里云網(wǎng)站上提供線上體驗:
https://code.aliyun.com/
該線上工具提供的功能非常豐富,具體可以自己嘗試一下:
當(dāng)然,使用云效也可體驗:https://www.aliyun.com/product/yunxiao
在如下網(wǎng)址上還提供了視頻教程,推薦看一下:
http://click.aliyun.com/m/1000019586/
IDEA插件與Eclipse插件使用指南可以參考如下鏈接:
http://click.aliyun.com/m/1000019587/
掃描插件詳情介紹鏈接:
http://click.aliyun.com/m/1000019588/
在阿里云大學(xué)上有編碼規(guī)范考試認(rèn)證:(需要花錢認(rèn)證考試的,兩次機(jī)會,而且有在線學(xué)習(xí)的,有興趣的可以看一下,會辦法電子證書的)
http://click.aliyun.com/m/1000019590/
阿里巴巴Java開發(fā)規(guī)約挑戰(zhàn)賽:
http://click.aliyun.com/m/1000019591/
挑戰(zhàn)賽說明:
答題開始即開始計時,中途不可暫停,如超時則自動提交
1、考試共 (5) 道題,總分100分,及格分?jǐn)?shù)60分
2、考試需在(10分鐘)內(nèi)交卷,過程中無法暫停,請?zhí)崆鞍才藕脮r間;如未及時交卷,則本次考試作廢
以上鏈接大部分出自阿里云,有時間可以經(jīng)常關(guān)注一下這個網(wǎng)站,會對自己編碼水平的提高會有比較大的幫助。
二、Java 線上診斷工具 Arthas
在以下幾個場景中如何解決:
? 這個類從哪個 jar 包加載的?為什么會報各種類相關(guān)的 Exception?
? 我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
? 遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
? 線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
? 是否有一個全局視角來查看系統(tǒng)的運(yùn)行狀況?
? 有什么辦法可以監(jiān)控到 JVM 的實時運(yùn)行狀態(tài)?
利用Arthas再好不過了,采用命令行交互模式,同時提供豐富的 Tab 自動補(bǔ)全功能,無需重啟,動態(tài)跟蹤Java代碼,實時監(jiān)控JVM狀態(tài),進(jìn)一步方便進(jìn)行問題的定位和診斷。
使用教程:
基礎(chǔ)教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics
Github: https://github.com/alibaba/arthas
文檔: https://alibaba.github.io/arthas/
進(jìn)階教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
對于以上提供的教程都是中文版的,編寫風(fēng)格很好,而且簡單易懂,值得推薦。
值得一提的是,在啟動時可以指定被暴露的target-ip、telnet-port、http-port,在不指定以上參數(shù)時,是不能直接遠(yuǎn)程連接的。默認(rèn)啟動的方式,只能本地監(jiān)控。而且,這里的target-ip指的是服務(wù)所在的IP地址,這個地址是暴露給別人用的。
在arthas的遠(yuǎn)程監(jiān)控中如果遇到“Connection refuse”錯誤,要先確認(rèn)這個端口是否被防火墻屏蔽。在防火墻沒有屏蔽這個端口的情況下,還有一個可能是target-ip參數(shù)指定錯誤。它需要被指定為外能訪問的本機(jī)ip,不指定或者指定為127.0.0.1都有可能導(dǎo)致“Connection refuse”錯誤。
幾個比較好說明博客地址:
https://my.oschina.net/Rayn/blog/2054773
https://www.cnblogs.com/theRhyme/p/10659265.html
https://blog.csdn.net/lsy0903/article/details/94184008#Dashboard_76
三、數(shù)據(jù)庫連接池 Druid
相信許多公司都已經(jīng)在使用了該連接池了,Druid 是 Java 語言下的數(shù)據(jù)庫連接池,它能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。
使用教程:https://github.com/alibaba/druid/wiki/常見問題
獲取方式:(開源) http://central.maven.org/maven2/com/alibaba/druid/
具體的使用和注意事項會在另外的博客上寫明。
四、應(yīng)用實時監(jiān)控工具 ARMS
在以下場景下的解決方案——ARMS(目前收費)
? 晚上 10 點收到 37 條報警信息,你卻無從下手?
? 當(dāng)我們發(fā)現(xiàn)問題的時候,客戶/業(yè)務(wù)方已經(jīng)發(fā)起投訴?
? 每個月花幾十萬買服務(wù)器,卻無法保障用戶體驗?
提供前端、應(yīng)用、自定義監(jiān)控 3 類監(jiān)控選項,可快速構(gòu)建實時的應(yīng)用性能和業(yè)務(wù)監(jiān)控能力。
使用教程:
前端監(jiān)控接入:https://help.aliyun.com/document_detail/106086.html
應(yīng)用監(jiān)控接入:https://help.aliyun.com/document_detail/63796.html
自定義監(jiān)控:https://help.aliyun.com/document_detail/47474.html
由于目前是收費的,本人暫時沒有研究過,只看過別人在使用過。不過只要是分布式微服務(wù)系統(tǒng)架構(gòu),都會有自己的實時監(jiān)控系統(tǒng)(往往公司自行開發(fā))。
五、性能測試工具 PTS
對于后端開發(fā)、測試人員用的比較多的。PTS 可以模擬大量用戶訪問業(yè)務(wù)的場景,任務(wù)隨時發(fā)起,免去搭建和維護(hù)成本,支持 JMeter 腳本轉(zhuǎn)化為 PTS 壓測,同樣支持原生 JMeter 引擎進(jìn)行壓測。
但是,該工具是收費的(6個月628元)。
使用教程: https://help.aliyun.com/document_detail/70290.html
本人沒有仔細(xì)研究過,只看過別人使用。當(dāng)然,對于一個項目公司而言,肯定會有一套自己的測試系統(tǒng)。(如果選用PTS這點費用肯定也不算什么)
官網(wǎng)地址:https://www.aliyun.com/product/pts,官網(wǎng)上提供了資料已經(jīng)很全了。
六、云效開發(fā)者工具 KT
KT 可以簡化在 Kubernetes 下進(jìn)行聯(lián)調(diào)測試的復(fù)雜度,提高基于 Kubernetes 的研發(fā)效率。
使用教程: https://yq.aliyun.com/articles/690519
該工具是免費的,很值得使用和研究的工具。
工具地址:https://yq.aliyun.com/download/3393
七、架構(gòu)可視化工具 AHAS
現(xiàn)在的開發(fā)基本上都是基于微服務(wù)化了,在以下場景中如何清晰的了解架構(gòu)情況呢:
? 服務(wù)化改造過程中,想精確的了解資源實例的構(gòu)成和交互情況,實現(xiàn)架構(gòu)的可視化?
? 想引入真實的故障場景和演練模型?
? 低門檻獲得流控、降級功能?
AHAS為 K8s 等容器環(huán)境提供了架構(gòu)可視化的功能,同時,具有故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本的提升應(yīng)用可用性。
目前大部分公司都是基于Spring全家桶二次開發(fā)的自己微服務(wù)分布式框架,可能會開發(fā)自己的流量控制、降級功能,可以參考以下這個工具。(該工具是免費的)
使用教程: https://help.aliyun.com/document_detail/90323.html
獲取方式:https://www.aliyun.com/product/ahas
八、數(shù)據(jù)處理工具 EasyExcel
在以前的一個項目中要操作Excel,當(dāng)時還是使用了jxl技術(shù),雖然也可以完成大部分功能,但是從性能角度看,利用poi技術(shù)可能會好點(數(shù)據(jù)量較大時較為明顯,本人沒有實際做過對比,只是從網(wǎng)上看到的)。阿里出的EasyExcel 是一個用來對 Java 進(jìn)行解析、生成 Excel 的框架,它重寫了 poi 對 07 版 Excel 的解析,原本一個 3M 的 Excel 用 POI sax 需要 100M 左右內(nèi)存,EasyExcel 可降低到 KB 級別,并且再大的 excel 也不會出現(xiàn)內(nèi)存溢出的情況。03 版依賴 POI 的 sax 模式。在上層做了模型轉(zhuǎn)換的封裝,讓使用者更加簡單方便。
使用教程: https://github.com/alibaba/easyexcel/blob/master/quickstart.md
獲取方式(免費開源): https://github.com/alibaba/easyexcel
我簡單試了下,性能還是不錯的,以后操作Excel首選。
附:幾個總結(jié)比較好的網(wǎng)站
最具權(quán)威的網(wǎng)站:
https://yq.aliyun.com/opensource?spm=5176.8279002.minheadermenu.12
https://www.cnblogs.com/lidabo/p/9087760.html
https://www.oschina.net/project/alibaba/
總結(jié)
- 上一篇: JSON数据转EXCEL
- 下一篇: 注塑模介绍、设计中文语音多媒体教学光盘