曝光一個網站,我週末就耗在上面了。

這是why的第 107 篇原創文章git

你好呀,我是why。github

剛剛過去的週末你幹啥了,是捲起來了,仍是躺平了?web

我實際上是想躺平的,可是無心間發現一個學習的網站,竟然被這個網站吸引了,而後就跟着網站捲起來了。面試

真是一個很是不錯的網站,好東西,要你們分享,因而我決定「曝光」一下。redis

介紹這個網站以前,我先問你一個問題:spring

Arthas 這個 Java 程序診斷工具,你知道吧?

我相信絕大部分同窗都是知道的,可是也有很大一部分同窗僅僅是在「紙上談兵」的階段而已。數據庫

沒有本身實際操做過。瀏覽器

爲何呢?服務器

我猜你剛剛知道 Arthas 的時候,確定是被它各類炫酷的操做、頁面給吸引到了。架構

心想:臥槽,這麼 6?

.png)

興致勃勃的準備實操一把,結果一看:須要本身搞個 Demo ,把 Demo 扔到服務器上運行起來,而後在服務器上安裝 Arthas,才能分析。

這一套操做對於大部分人來講是沒有啥問題的。

可是仍是有至關大的一部分同窗,都沒有一個屬於本身的服務器。

巧婦也是難爲無米之炊的呀。

第一步就被卡的死死的。

有心實操,奈何條件有限。

因而這事就被擱淺了,放着放着,因爲本身沒有實操過,關於 Arthas 的各類騷操做也就忘的差很少了。

沒有一個趁手的 Demo,沒有服務器,沒有一個安裝好環境的服務器。

這種問題常常出現,也算是學習中遇到的「最後一千米」的問題。

我碰到的這個網站,就是爲了解決「最後一千米」這一問題的。

也許它還不夠完善,可是至少在 Arthas 上的支持已是屬於無可挑剔了,真正的手摸手教學。

鋪墊了這麼多,那麼網站是啥呢?

就是下面這個網站:

https://start.aliyun.com/

知行動手實驗室,是阿里旗下的阿里雲弄出來的雲原生開源技術體驗平臺。

它自帶運行環境。

使用者只須要關心教程內容自己,無需爲繁瑣的運行環境準備工做浪費時間。全部實驗都在一個事先準備好運行環境的容器中運行。

它具備沉浸式學習體驗。

集交互式文檔、終端、編輯器三個窗口於一個瀏覽器頁面,無需在多個窗口來回複製粘貼。

它能夠一鍵自動執行命令、代碼自動修改。

文檔實時可交互,經過鼠標點擊便可一鍵自動執行命令、代碼自動修改等操做;也能夠選擇在終端、編輯器內手動輸入查看效果。

我知道,這裏的畫風看起來很像是一個廣告。

可是我發誓,我真的是自來水,真心推薦。

要動手,多動手

知行動手實驗室,看這個名字就知道強調的是「行知合一」,是「動手」。

我曾經看到過阿里的一篇名叫《我看技術人的成長路徑》的文章。

文章裏面提出了一個 721 原創:

70% 作中學,20% 向他人學習,10% 自學

可是實際狀況呢,咱們不得不認可,你們自學佔據了至關大的比重。

而你們自學的時候都有一個通病就是:只看、只想,基本不動手。

關於動手,我印象最深的就是我看這本書的時候:

我記得看這本書的時候,是我剛剛畢業一年多的時候。

當時以爲技術書還挺貴的,仍是和同事一塊兒合買的,一人出一半的錢,書放在辦公室你們一塊兒看看。

我那個時候一有時間就去翻翻這書。

第一次看的時候感受:哇塞,這真是一本好書啊。裏面全是我不知道的知識點。

可是看完以後,沒隔多久,遇到一個問題而後想了半天:呃,這個問題書上好像講過啊,怎麼就想不起來了呢?

因而我就問同事:你是怎麼看這個書的呀?我前段時間把書每一頁都翻完了,可是如今好多東西都想不起來了。

他告訴我:首先得多看,書中的信息量對你來講仍是太大了,看一遍吸取不徹底是很正常的。還有,書裏面的這麼多動手操做的實例,你跟着敲了沒?我都操做了一遍,遇到了各類各樣的坑。印象天然而然的就深入了一點。

可謂是一語點醒夢中人,我確實是沒有實操過。

不只沒有實操過,甚至一看到實操部分的具體命令,我都是幾眼就瞟完了,由於我以爲這部分不重要。

後來我又看了一遍,看這遍的時候,我搞了幾個服務器,就跟着書上,把上面的命令都敲了一遍。

進度慢了不少不少,可是吸取的東西也多了不少不少。

過去這麼幾年了,時至今日,我都記得週末的時候我跑到公司去翻這本書的場景。我都記得我跟着書上搭建集羣的時候遇到的各類各樣奇奇怪怪的問題。我都記得那 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 上的描述:

https://github.com/chaosblade...

該項目的生態以下:

目前支持這麼多場景:

好比在知行動手實驗室裏面就有三個實驗場景:

總之,關於 ChaosBlade 你就記住一句話:

它是來搞破壞的。給系統或者系統運行的環境注入各類各樣的故障,以測試並提高系統的穩定性和高可用性。

在知行動手實驗室裏面,除了前面提到的官方教程外,它還支持你們本身上傳教程。

下面這幾種狀況就很適合在上面發佈教程:

  • 開源、開發者社區在知行發佈開源項目入門教程,幫助你的社區用戶更好的上手
  • 技術書籍做者在知行發佈你的隨書實驗,彌補技術書籍只能閱讀、沒法實操的缺陷
  • 培訓機構在知行發佈的課程先關的教程,配合已有的課程視頻,你的學員能夠在知行動手實操

你想一想,要是我前面提到的《Redis開發與運維》書裏面的隨書實驗能發佈到這裏,那豈不是美滋滋?

學習效率確定又高了起來。

教程,是該實驗室的一大核心功能。

可是,它還有另一大功能:

Java 工程腳手架,下面的標語是:

更適合亞太區開發者的 Java 工程腳手架。

雖然我目前還不明白爲何是「更適合亞太區」,可是反正聽着就很厲害的樣子。

其頁面是這樣的,是否是很眼熟?

一看就是對標的你們更爲熟悉的這個:

https://start.spring.io/

可是經過個人實際使用,我不得不說,仍是阿里的腳手架更好用一點。

好比我用阿里的腳手架,搭建的時候選擇一個 web 項目的示例代碼:

該項目結構以下:

並且這個 web 項目不須要改一行代碼,甚至不須要你啓動數據庫,就能直接運行起來。

由於其使用的 h2 數據庫:

運行起來後,訪問 h2 控制檯以下:

雖然 Demo 項目運行的過程當中我發現了幾個 bug,可是總體無傷大雅,修改起來也很簡單,對於初學者來講,仍是很友好的。

在這個頁面我還發現了一個叫作 COLA 的項目架構:

COLA 是啥玩意?

https://github.com/alibaba/COLA/

我在官網上拉了一個 COLA 的 Demo,跑了起來,項目結構以下:

官方給了這樣的一個代碼結構圖:

看到這裏的時候,我大概明白了,有 App 層、Domain 層、 Infrastructure 層,這個架構其實就是 DDD 思想的一種落地吧。

通過這兩天短暫的瞭解,我發現若是想要理解一下抽象的 DDD 思想,那麼 COLA 架構,我感受是一個不錯的切入點。

Arthas 教程

前面介紹了這麼多東西,我仍是來帶着你實操一把,裏面的黃金教程:

其實我以爲真的沒有這個必要,由於它上面的教程已是一步步的手摸手教學了。

好比,你看這個 Arthas 基礎教程,我給你錄個屏幕:

左邊是操做文檔,右邊是運行環境。所及即所得,多香啊。

我是強烈建議你把四個教程都本身去看一遍,操做一把。

可是重心能夠放到這個教程裏面:

你看看這個教程裏面的 14 個實驗:

都是實戰性的手摸手教學,別人環境、場景、工具都給你準備好了,你只要須要關注於怎麼使用這個工具就好了。

好比其中的「Arthas熱更新代碼案例」,這個其實就是一個生產環境經常會遇到的一個問題:

有一個判斷邏輯有問題,我不想修改代碼以後,從新打包,而後走上線流程,怎麼辦?

Arthas 熱更新瞭解一下?

好比,下面的代碼:

@GetMapping(value={"/user/{id}"})
public User findUserById(@PathVariable Integer id) {
    logger.info("id: {}", (Object)id);
    if (id != null && id < 1) {
        throw new IllegalArgumentException("id < 1");
    }
    return new User(id.intValue(), "name" + id);
}

如今當請求的 id 小於 1 的時候會拋出異常。可是上線以後,咱們通過評估發現這個地方也許返回一個默認的值,不拋出異常會更好一點。

那麼咱們就能夠用 Arthas 對這段代碼進行熱更新。

左邊是修改以後,右邊是修改以前:

具體怎麼去修改,怎麼去用 ClassLoader 加載修改以後的代碼,這個案例裏面都有詳細的使用說明:

固然了,若是你要是在實操以後,又再去了解了其熱更新背後的工做原理,那麼是再好不過的了。

知道了使用方式,掌握了實現原理。恭喜你,再給本身的套一個生產案例,不經意間面試的時候有多了一個加分點。

另外,悄悄的說個騷操做。

你能夠隨便找個教程,領個窗口,而後......

好比我裝個 Redis:

用起來也是不錯的:

並且它也支持文件的上傳和下載:

誒,反正就是玩嘛。就當熟悉 Linux 命令了。

相關文章
相關標籤/搜索