剛剛過去的周末妳幹啥了,是卷起來了,還是躺平了?
我其實是想躺平的,但是無意間發現壹個學習的網站,居然被這個網站吸引了,然後就跟著網站卷起來了。
真是壹個非常不錯的網站,好東西,要大家分享,於是我決定“曝光”壹下。
介紹這個網站之前,我先問妳壹個問題:
我相信絕大部分同學都是知道的,但是也有很大壹部分同學僅僅是在“紙上談兵”的階段而已。
沒有自己實際操作過。
為什麽呢?
我猜妳剛剛知道 Arthas 的時候,肯定是被它各種炫酷的操作、頁面給吸引到了。
心想:臥槽,這麽 6?
興致勃勃的準備實操壹把,結果壹看:需要自己搞個 Demo ,把 Demo 扔到服務器上運行起來,然後在服務器上安裝 Arthas,才能分析。
這壹套操作對於大部分人來說是沒有啥問題的。
但是還是有相當大的壹部分同學,都沒有壹個屬於自己的服務器。
巧婦也是難為無米之炊的呀。
第壹步就被卡的死死的。
有心實操,奈何條件有限。
於是這事就被擱淺了,放著放著,由於自己沒有實操過,關於 Arthas 的各種騷操作也就忘的差不多了。
沒有壹個趁手的 Demo,沒有服務器,沒有壹個安裝好環境的服務器。
這種問題經常出現,也算是學習中遇到的“最後壹公裏”的問題。
我碰到的這個網站,就是為了解決“最後壹公裏”這壹問題的。
也許它還不夠完善,但是至少在 Arthas 上的支持已經是屬於無可挑剔了,真正的手摸手教學。
鋪墊了這麽多,那麽網站是啥呢?
就是下面這個網站:
知行動手實驗室,是阿裏旗下的阿裏雲弄出來的雲原生開源技術體驗平臺。
它自帶運行環境。
使用者只需要關心教程內容本身,無需為繁瑣的運行環境準備工作浪費時間。所有實驗都在壹個事先準備好運行環境的容器中運行。
它具有沈浸式學習體驗。
集交互式文檔、終端、編輯器三個窗口於壹個瀏覽器頁面,無需在多個窗口來回復制粘貼。
它可以壹鍵自動執行命令、代碼自動修改。
文檔實時可交互,通過鼠標點擊即可壹鍵自動執行命令、代碼自動修改等操作;也可以選擇在終端、編輯器內手動輸入查看效果。
我知道,這裏的畫風看起來很像是壹個廣告。
但是我發誓,我真的是自來水,真心推薦。
知行動手實驗室,看這個名字就知道強調的是“行知合壹”,是“動手”。
我曾經看到過阿裏的壹篇名叫《我看技術人的成長路徑》的文章。
但是實際情況呢,我們不得不承認,大家自學占據了相當大的比重。
而大家自學的時候都有壹個通病就是:只看、只想,基本不動手。
關於動手,我印象最深的就是我看這本書的時候:
我記得看這本書的時候,是我剛剛畢業壹年多的時候。
當時覺得技術書還挺貴的,還是和同事壹起合買的,壹人出壹半的錢,書放在辦公室大家壹起看看。
我那個時候壹有時間就去翻翻這書。
第壹次看的時候感覺:哇塞,這真是壹本好書啊。裏面全是我不知道的知識點。
但是看完之後,沒隔多久,遇到壹個問題然後想了半天:呃,這個問題書上好像講過啊,怎麽就想不起來了呢?
於是我就問同事:妳是怎麽看這個書的呀?我前段時間把書每壹頁都翻完了,但是現在好多東西都想不起來了。
他告訴我:首先得多看,書中的信息量對妳來說還是太大了,看壹遍吸收不完全是很正常的。還有,書裏面的這麽多動手操作的實例,妳跟著敲了沒?我都操作了壹遍,遇到了各種各樣的坑。印象自然而然的就深刻了壹點。
可謂是壹語點醒夢中人,我確實是沒有實操過。
不僅沒有實操過,甚至壹看到實操部分的具體命令,我都是幾眼就瞟完了,因為我覺得這部分不重要。
後來我又看了壹遍,看這遍的時候,我搞了幾個服務器,就跟著書上,把上面的命令都敲了壹遍。
進度慢了很多很多,但是吸收的東西也多了很多很多。
過去這麽幾年了,時至今日,我都記得周末的時候我跑到公司去翻這本書的場景。我都記得我跟著書上搭建集群的時候遇到的各種各樣奇奇怪怪的問題。我都記得那 16384 個槽,還有那我怎麽也運行不起來的 redis-trib.rb。
我都記得幾年以後的壹次,面試官問我:妳了解 Redis 的集群嗎,妳自己搭過集群嗎?
我當然記得了,畢竟之前那個只有壹年經驗的小夥子硬著頭皮搭集群的時候,心態都被搞崩過數次。
還有近段時間斷斷續續在看的《MySQL實戰45講》、《MySQL是怎樣運行的》、《高性能MySQL》。
裏面其實都有大量的實例,特別是 45 講,好東西呀,老師全是基於案例去講的。
我看的時候也看的很慢,反正不管懂不懂,先動手開幾個窗口,然後把實驗的 SQL 準備好,跟著老師壹步步的來。
總之,就是要動手。動手,才是學習新技術的不二法門。
做中學,就是動手去做,邊做邊學。
但是動手的時候大多數時間都是在環境的準備上,導致效率稍微有了那麽壹點點的低下。
而這個網站,就在部分項目上,解決了這個問題。
回到知行動手實驗室,帶大家壹起逛壹下這個網站。
說真的,目前這個網站的東西不算特別多,也就是花費了我壹個周末的時間研究了壹圈。
主要是裏面還有壹些我不太了解的開源項目,去了解了壹下,開拓了壹下眼界。
主打的都是阿裏生態下的壹些技術棧,目前壹***有 16 個教程:
可以看到,首先映入眼簾的就是 Arthas 這個診斷工具,畢竟是阿裏的親兒子中比較有出息的壹個嘛。
全力推廣,不過分。
Arthas 其中分為了四個教程,從入門到實踐壹應俱全。
接著是 Spring Cloud Alibaba 系列體驗:
裏面的六個小實驗,其中分布式配置、服務註冊與發現都是基於 Nacos 做的。 RPC 調用使用的是 Dubbo Spring Cloud、限流與熔斷基於 Sentinel、分布式事務使用 Seata、分布式消息基於 RocketMQ。
基本涵蓋了微服務開發的主要模塊。
算的上是壹次完整的體驗。
當然了,還有壹些其他的 RocketMQ、Dapr、Dubbogo、ChaosBlade、k8s 的實操教程,就不壹壹解釋了。
大家知道目前裏面有這些東西就行。
上面提到的大家可能對於 Dapr 和 ChaosBlade 稍微陌生壹點。
簡單的說壹下。
Dapr 的全稱是 Distributed Application Runtime,翻譯過來就是分布式應用運行時。
它主要是為了雲原生而服務的。
應該是屬於服務網格中的壹種技術,是壹種運行時,支持k8s,目的是為了更好的隔離業務,讓業務更少的感知中間件等基礎建設。
其實與它對標的,應該就是 istio 架構。
需要註意的是 Dapr 是由微軟發起的壹個開源項目,並不是阿裏。
阿裏是 Dapr 開源項目的深度參與者和早期采用者,相當於是對於 Dapr 的壹個國內大廠背書。
而 ChaosBlade 就是阿裏巴巴開源的壹款遵循混沌工程原理和混沌實驗模型的實驗註入工具,幫助企業提升分布式系統的容錯能力,並且在企業上雲或往雲原生系統遷移過程中業務連續性保障。
引用其 git 上的描述:
該項目的生態如下:
目前支持這麽多場景:
比如在知行動手實驗室裏面就有三個實驗場景:
總之,關於 ChaosBlade 妳就記住壹句話:
它是來搞破壞的。給系統或者系統運行的環境註入各種各樣的故障,以測試並提升系統的穩定性和高可用性。
在知行動手實驗室裏面,除了前面提到的官方教程外,它還支持大家自己上傳教程。
下面這幾種情況就很適合在上面發布教程:
妳想想,要是我前面提到的《Redis開發與運維》書裏面的隨書實驗能發布到這裏,那豈不是美滋滋?
學習效率肯定又高了起來。
教程,是該實驗室的壹大核心功能。
但是,它還有另外壹大功能:
Java 工程腳手架,下面的標語是:
更適合亞太區開發者的 Java 工程腳手架。
雖然我目前還不明白為什麽是“更適合亞太區”,但是反正聽著就很厲害的樣子。
其頁面是這樣的,是不是很眼熟?
壹看就是對標的大家更為熟悉的這個:
但是通過我的實際使用,我不得不說,還是阿裏的腳手架更好用壹點。
比如我用阿裏的腳手架,搭建的時候選擇壹個 web 項目的示例代碼:
該項目結構如下:
而且這個 web 項目不需要改壹行代碼,甚至不需要妳啟動數據庫,就能直接運行起來。
因為其使用的 h2 數據庫:
運行起來後,訪問 h2 控制臺如下:
雖然 Demo 項目運行的過程中我發現了幾個 bug,但是整體無傷大雅,修改起來也很簡單,對於初學者來說,還是很友好的。
在這個頁面我還發現了壹個叫做 COLA 的項目架構:
COLA 是啥玩意?
我在官網上拉了壹個 COLA 的 Demo,跑了起來,項目結構如下:
官方給了這樣的壹個代碼結構圖:
看到這裏的時候,我大概明白了,有 App 層、Domain 層、 Infrastructure 層,這個架構其實就是 DDD 思想的壹種落地吧。
經過這兩天短暫的了解,我發現如果想要理解壹下抽象的 DDD 思想,那麽 COLA 架構,我感覺是壹個不錯的切入點。
前面介紹了這麽多東西,我還是來帶著妳實操壹把,裏面的黃金教程:
其實我覺得真的沒有這個必要,因為它上面的教程已經是壹步步的手摸手教學了。
比如,妳看這個 Arthas 基礎教程,我給妳錄個屏幕:
左邊是操作文檔,右邊是運行環境。所及即所得,多香啊。
我是強烈建議妳把四個教程都自己去看壹遍,操作壹把。
但是重心可以放到這個教程裏面:
妳看看這個教程裏面的 14 個實驗:
比如其中的“Arthas熱更新代碼案例”,這個其實就是壹個生產環境常常會遇到的壹個問題:
有壹個判斷邏輯有問題,我不想修改代碼之後,重新打包,然後走上線流程,怎麽辦?
Arthas 熱更新了解壹下?
比如,下面的代碼:
現在當請求的 id 小於 1 的時候會拋出異常。但是上線之後,我們經過評估發現這個地方也許返回壹個默認的值,不拋出異常會更好壹點。
那麽我們就可以用 Arthas 對這段代碼進行熱更新。
左邊是修改之後,右邊是修改之前:
具體怎麽去修改,怎麽去用 ClassLoader 加載修改之後的代碼,這個案例裏面都有詳細的使用說明:
當然了,如果妳要是在實操之後,又再去了解了其熱更新背後的工作原理,那麽是再好不過的了。
知道了使用方式,掌握了實現原理。恭喜妳,再給自己的套壹個生產案例,不經意間面試的時候有多了壹個加分點。
另外,悄悄的說個騷操作。
妳可以隨便找個教程,領個窗口,然後......
比如我裝個 Redis:
用起來也是不錯的:
而且它也支持文件的上傳和下載:
誒,反正就是玩嘛。就當熟悉 Linux 命令了。