【智簡聯接,萬物互聯】華為云·云享專家董昕:Serverless和微服務下, IoT的變革蓄勢待發
1110
2025-03-31
前言
開發產品永遠都是既痛苦,又開心的事情。一方面因為不了解用戶真實需求、害怕閉門造車、擔心技術無法實現而痛苦;另一方面,卻會因為取得小小成就、獲得用戶認可、不斷幫助用戶解決問題而開心,從而繼續堅持下去。Crawlab 就是這樣讓我既痛苦又開心的開源項目。它從去年 3 月份提交第一次 commit,到最近,已經在 Github 上積攢了 5k Star,成長為了最受歡迎的開源爬蟲管理平臺。其中,Crawlab 多次上榜到 Github Trending,不斷被全球的開發者所認識了解;同時,也被碼云 Gitee、開源中國所收錄,讓更多國內開發者所熟知。社區也不斷完善,微信群成員已接近 1.2k,每天都有人在上面各種咨詢問題和交流經驗。同時 Github 上也有很多熱心用戶在上面提出各種 Issue,幫助我們優化產品。
從最開始的 Flask + Celery 架構,到如今用 Golang 自研開發調度引擎,經歷了很多次大大小小的迭代。產品不斷成熟的同時,也在不斷發展。相信不久將衍生出更多實用的功能,包括用戶們提出的各種很好的反饋建議。
下圖是 Crawlab 的 Github 累計 Star 趨勢圖,可以看出 Crawlab 已達到 5k Star 的過程中經歷了兩次大的增長以及不斷的小規模增長。
本文的目的主要是記錄一下自己和小伙伴們一起努力的里程碑。去年 8 月份的時候(8 個月前),我寫了一篇文章, 《如何打造一個上千Star的Github項目》,探討了如何獲取 Github 的關注度,打造受人歡迎的產品。
項目簡介
Crawlab 是基于 Golang 的分布式爬蟲管理平臺,支持多種編程語言以及多種爬蟲框架。對爬蟲管理平臺不了解的同學,可以參考這篇文章,《如何快速搭建實用的爬蟲管理平臺》,里面有對爬蟲管理平臺詳細的介紹。
查看演示 Demo
項目自 2019 年 4 月份上線以來受到爬蟲愛好者們和開發者們的好評,超過一半的使用者表示已經在用 Crawlab 作為公司的爬蟲管理平臺。經過近數月的迭代,我們陸續上線了 定時任務、數據分析、可配置爬蟲、SDK、消息通知、Scrapy 支持、Git 同步 等功能,將 Crawlab 打造得更加實用,更加全面,能夠真正幫助用戶解決爬蟲管理困難的問題。
Crawlab 主要解決的是大量爬蟲管理困難的問題,例如需要監控上百個網站的參雜 scrapy 和 selenium 的項目不容易做到同時管理,而且命令行管理的成本非常高,還容易出錯。Crawlab 支持任何語言和任何框架,配合任務調度、任務監控,很容易做到對成規模的爬蟲項目進行有效監控管理。
Crawlab 可以很容易的將開發者的爬蟲集成進來。配合 CLI 工具,您可以將任何爬蟲項目上傳到 Crawlab,并被同步到所有的節點上,形成分布式架構。另外,Crawlab 自帶的 SDK 讓您可以非常輕松的將抓取到數據可視化到 Crawlab 界面中。您可以在界面上查看、下載抓取到的任務結果(如下圖)。
項目發展
Crawlab 到如今已經有 1 年了,在 Github 上的 Star 數量已過半萬,但這還不能說明任何問題。之前有網友指出,Github 上的 Star 數并不能說明問題,其實在淘寶上也可以買到 Star... 另一個有趣的事實是,很多在 Github 上成千上完 Star 數的作品,竟然是 Markdown 項目。什么是 Markdown 項目?也就是這個項目中沒有多少可執行的代碼文件,絕大多數是寫滿技術知識的 Markdown 文件,可以是面試題,可以是知識整理,也可以是唐詩宋詞,等等。這些 Markdown 項目的盛行,反映了開發者們的知識焦慮。其實,有時候,專心使用一個項目,多閱讀理解一下源碼,甚至自己動手碼幾行代碼,也是能不斷提高自己的。我是一個野生程序員,不喜歡底層原理和理論推導,喜歡拿起鍵盤,埋頭開(fu)發(zhi)產(zhan)品(tie)。因此,我喜歡在產品中找到用戶的痛點,并用技術的方式加以解決。
下圖是 Crawlab 項目的發展歷程。
可以看到,項目初期是用 Flask + Celery 來完成分布式調度邏輯的,這其實是無奈之舉。因為當時我最熟悉的語言是 Python,不會 Java、不會 Golang、不會 C++,因此選擇了當時上手最快的 Python 作為主力編程語言,為后來的更換框架埋下伏筆。
積攢了首批用戶之后,他們提出了各種各樣的意見和反饋。其中有用 Docker 來部署的建議,這成為了后來部署 Crawlab 的首選。還有人提出可配置爬蟲的概念(當時不是這個名字,可配置爬蟲是我取的名字),我也用 Python 把它實現了出來。
但非常令人惱火的是,在 v0.2.x 版本的時候,定時任務經常出各種各樣的 Bug:有時會重復執行兩次或多次;有時會不按時間執行;有時甚至壓根漏掉執行。更讓人擔憂的是,當爬蟲的數量增加的時候,后端的壓力開始加大,每次返回結果需要耗費 1 秒甚至幾秒的時間。連我自己使用起來都很難受。于是,我開始從根本上思考,是不是 Python 這一套架構根本滿足不了我們的需求。
而恰巧我當時在掘金小冊上購買了關于 Golang 學習的課程,自然而然的想到應該用 Golang 來重構 Crawlab 的后端應用。因此,在邊學邊練的情況下,我將 Crawlab 從 Python 版本重構為了 Golang 版本,并發布為了 v0.3 版本。重構后的 Crawlab 像是升了好幾級一樣,不管是從性能還是穩定性上輕輕松松碾壓 Python 版本。Bug 不再多了,響應也不再延遲了,并發數也高了。更好的一點是,Golang 是靜態類型語言,可以非常方便的規避一些因為類型產生的低級錯誤(成本是需要更多的代碼量)。我覺得用 Golang 重構 Crawlab 是這個項目中最成功的決定。
相比于 Golang 重構帶來的受歡迎效應,我覺得 v0.4.x 相對來說就沒那么直接了。很多 v0.4.x 的迭代功能都是根據用戶的反饋來的,包括消息通知、權限管理、界面安裝依賴、Scrapy 支持等等。這些功能都是針對許多需要在企業中應用爬蟲管理平臺的用戶開發的。現在我不知道有多少企業在真正使用 Crawlab,但我相信隨著 Crawlab 的不斷完善,跟多的中小企業、甚至是大型企業可以開箱即用的將 Crawlab 部署使用起來,進一步推廣給其他有需求的用戶。
項目經驗
Crawlab 帶來的經驗教訓非常多。很多人都在問我,是什么讓你堅持了這么久來開發一個免費產品呢?又有很多人也在問我為什么不開發商業版呢?這些問題我覺得都是自然而然的,也是理所當然的。就我來看,要做好一個開源項目,光光是有這個 idea 是不行的,當然靠此賺錢的這種思想更會將項目帶往歧途。以下幾點,是我覺得打造一個受歡迎的開源項目的要素。
很多人開發產品都是閉門造車,企圖一廂情愿的讓用戶愛上他們的產品。這對于技術人員來說是一個陷阱,我們需要時刻警惕不要陷入敝帚自珍的境地無法自拔。怎么來了解用戶需求呢?一個很有效的方法就是用戶調研。
在 《如何打造一個上千Star的Github項目》 中,我提到有兩種用戶調研的方式。一種是直接詢問。我經常在微信群中詢問用戶關于 Crawlab 的使用情況,是否有什么可以提升的,哪些地方使用比較困難,有什么 Bug,之類的問題。很多時候,我都能夠獲得相應的反饋,有時而且是比較重要的反饋。另一種方式是問卷調查。這種方式比較客觀,可以定量的獲取用戶的使用狀況,這對我們了解用戶使用情況是非常有幫助的。例如,我會定期利用問卷星設計調查問卷并投放到微信群里,通常能收到幾十上百個答案。這個樣本對調查來說已經足夠,而且問卷星可以幫助分析各個問題的數據分布情況,能夠一目了然看到使用和需求情況。
其實這一部分就是營銷和運營。當產品推出時,應該第一時間讓用戶知道并試用你的產品。因為這樣才能即時獲得用戶反饋,才有機會不斷完善你的產品。推廣的渠道多種多樣。第一,可以是寫文章,每次發布的時候,我會在掘金、SF、V2ex、開源中國等平臺上寫發布文章,介紹新的功能,以及產品規劃等等,讓更多的用戶了解并試用 Crawlab。第二,需要做SEO,Crawlab 的文檔網站被推到了百度索引,讓百度能夠不斷收錄 Crawlab 的頁面,并根據其內部的算法將品牌詞例如 “Crawlab”、“爬蟲管理平臺” 排到前幾位。第三,打造 Demo 平臺,這是用戶能夠試用產品的最簡單的方式,用戶會第一眼看到你的產品,根據外觀、功能來決定是否要進一步安裝、使用,實踐證明,這是非常有效的手段。
總結
爬蟲管理平臺 Crawlab 到如今已經進入第二年。Crawlab 是一個后起之秀,相比于前輩 Gerapy、SpiderKeeper、ScrapydWeb 來說,更加年輕,也更加靈活和實用。因此才會有這么多人來嘗試使用 Crawlab。打造開源產品是個需要長期經營的事業,那種一夜沖天的 “暴發戶” 不是人人都能夠創造的。因此,需要保持耐心以及匠人精神。所謂匠人精神,不是將產品打造得多完美,而是將產品打造得更接地氣,更加使用友好,更能讓用戶滿意,更能解決用戶的問題,這才算是匠人精神。所以,我們不能閉門造車,一味的追求技術上的完美,而忽略了用戶真正的問題。Crawlab 在解決用戶的問題上,還有很長的道路需要走。但我們不擔心,因為我們現在有強大的開發組,不斷成長的社區,和不斷給出反饋意見的用戶。相信第二年,Crawlab 會解決更多用戶的問題,讓爬蟲變得簡單,迎來第二個 5k Star。
參考
Github: https://github.com/crawlab-team/crawlab
Demo: https://crawlab.cn/demo
GitHub
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。