夜夜干视频,国产女A喷水,色橹橹爽爽爽 http://www.fjzmyy.cn TDengine | 高性能、分布式、支持SQL的時序數(shù)據(jù)庫 | 濤思數(shù)據(jù) Fri, 22 Nov 2024 08:51:42 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 http://www.fjzmyy.cn/wp-content/uploads/2025/07/favicon.ico 人物 – TDengine | 濤思數(shù)據(jù) http://www.fjzmyy.cn 32 32 時代“黑利”下,陶建輝談創(chuàng)業(yè)的制勝之道 | 空格酒談演講內(nèi)容分享 http://www.fjzmyy.cn/figure/27444.html Fri, 22 Nov 2024 08:51:39 +0000 http://www.fjzmyy.cn/?p=27444 在充滿不確定性的商業(yè)世界中,“黑天鵝”事件層出不窮。從全球疫情到復(fù)雜的國際局勢,再到科技領(lǐng)域的快速迭代,挑戰(zhàn)接踵而至。對于創(chuàng)業(yè)者來說,如何在這個充滿變數(shù)和“黑利”的時代中識別機(jī)遇,已然成為決定成敗的關(guān)鍵。

上周日,濤思數(shù)據(jù)創(chuàng)始人陶建輝亮相——空格酒談第二十一期——也是當(dāng)下最流行的“學(xué)術(shù)酒吧”模式,在輕松愜意的氛圍中帶來了一場深刻且發(fā)人深省的分享。他結(jié)合自身多年的創(chuàng)業(yè)經(jīng)驗(yàn),深入探討了在當(dāng)今時代,創(chuàng)業(yè)者如何培養(yǎng)認(rèn)知韌性,識別潛在機(jī)會,超越個人局限,實(shí)現(xiàn)事業(yè)突破。

時代“黑利”下,陶建輝談創(chuàng)業(yè)的制勝之道 | 空格酒談演講內(nèi)容分享 - TDengine Database 時序數(shù)據(jù)庫

為了讓更多沒有到達(dá)現(xiàn)場的小伙伴們也能受益,我們在本篇文章中把這次演講的精華內(nèi)容進(jìn)行了匯總,并希望這份梳理能夠?yàn)槟闾峁┮恍┯袃r值的思考與啟發(fā)。

創(chuàng)業(yè)的初衷:技術(shù)改變世界的執(zhí)念

談及為何投身創(chuàng)業(yè),陶建輝坦言,他最大的驅(qū)動力源于對技術(shù)改變世界的執(zhí)著追求。他不愿在職業(yè)經(jīng)理人的道路上安穩(wěn)度日,也不想過上“20年后才會體驗(yàn)”的一成不變的生活。相比成為大公司里的一顆螺絲釘,他更希望在創(chuàng)業(yè)的“小池塘”中成為主導(dǎo)者,這不僅讓他有機(jī)會快速提升技能,也能全面鍛煉自己的能力。因此,他選擇將自己的想法轉(zhuǎn)化為產(chǎn)品,用技術(shù)為社會創(chuàng)造真正的價值。

然而,創(chuàng)業(yè)并非詩與遠(yuǎn)方,而是九死一生的修行。他自己也知道,大部分公司很難熬過三年,尤其是那些拿到 B 輪、C 輪融資的企業(yè),稍有不慎便可能“折戟沉沙”。正因如此,他始終保持“戰(zhàn)時狀態(tài)”,確保在每個關(guān)鍵節(jié)點(diǎn)都能作出迅速而準(zhǔn)確的判斷。

陶建輝認(rèn)為,技術(shù)創(chuàng)業(yè)既有優(yōu)勢,也有挑戰(zhàn)。創(chuàng)業(yè)初期的成本相對較低,很容易將想法轉(zhuǎn)化為產(chǎn)品。在中國這個廣闊的市場中,機(jī)會很多,關(guān)鍵在于推出真正有競爭力的產(chǎn)品。然而,當(dāng)真正踏上創(chuàng)業(yè)之路后,你可能會發(fā)現(xiàn),產(chǎn)品往往只是自己想象中的理想化產(chǎn)物,市場并沒有實(shí)際需求。自以為可以超越同行,結(jié)果卻發(fā)現(xiàn)能力和資源都遠(yuǎn)遠(yuǎn)不夠。

因此,創(chuàng)業(yè)的關(guān)鍵在于找準(zhǔn)方向。選擇那些未來 5 到 10 年內(nèi)有望實(shí)現(xiàn)幾十倍增長的行業(yè),聚焦于能為社會創(chuàng)造價值的產(chǎn)品和服務(wù)。同時,創(chuàng)新必不可少,而行業(yè)選擇也不能過熱或過冷,必須保持適度的平衡。此外,找到認(rèn)可項目的投資人支持同樣至關(guān)重要,這將為創(chuàng)業(yè)提供更堅實(shí)的后盾。

創(chuàng)新:創(chuàng)業(yè)成功的核心驅(qū)動力

創(chuàng)業(yè)成功的關(guān)鍵在于創(chuàng)新。陶建輝指出:“新產(chǎn)品要想成功,必須比市場上的主流產(chǎn)品強(qiáng)五倍以上?!边@不僅要求技術(shù)層面的突破,更要關(guān)注產(chǎn)品的易用性、功能性和穩(wěn)定性。

以 TDengine 為例,其創(chuàng)新點(diǎn)體現(xiàn)在多個維度:

  • 性能:查詢速度快 10 倍以上,存儲成本僅為傳統(tǒng)方案的 1/5。
  • 架構(gòu):基于高可用、分布式設(shè)計,支持 10 億數(shù)據(jù)采集點(diǎn)的水平擴(kuò)展,徹底解決了時序數(shù)據(jù)領(lǐng)域的“高基數(shù)”問題。
  • 零代碼平臺:TDengine 支持 MQTT、OPC、Kafka 等多種數(shù)據(jù)源,無需編寫代碼即可實(shí)現(xiàn)數(shù)據(jù)的 ETL(提取、轉(zhuǎn)換、加載)流程,大幅降低了用戶的技術(shù)門檻和運(yùn)維成本。
  • 全棧時序數(shù)據(jù)處理平臺:除核心的時序數(shù)據(jù)庫之外,TDengine 還具備緩存、數(shù)據(jù)訂閱、流計算處理能力。采用標(biāo)準(zhǔn) SQL 做查詢和流式計算,支持各種編程語言,沒有學(xué)習(xí)成本,可立即上手。

在底層技術(shù)創(chuàng)新方面,TDengine 引入了獨(dú)特的數(shù)據(jù)模型設(shè)計——一個數(shù)據(jù)采集點(diǎn)一張表;在存儲層面,采用結(jié)構(gòu)化存儲方式,將標(biāo)簽數(shù)據(jù)與時序數(shù)據(jù)分離,進(jìn)一步提升了數(shù)據(jù)查詢與處理的效率。此外,通過“超級表”概念,將同類設(shè)備的數(shù)據(jù)集合起來,極大地方便了聚合操作,為用戶帶來了更加高效的數(shù)據(jù)處理體驗(yàn)。

這些創(chuàng)新不僅提高了產(chǎn)品的市場競爭力,也為用戶帶來了實(shí)實(shí)在在的價值。

此外,陶建輝認(rèn)為,從創(chuàng)新中提煉出宣傳點(diǎn)非常重要,無法傳播的創(chuàng)新是沒有商業(yè)價值的。創(chuàng)新的核心在于為產(chǎn)品找到獨(dú)特的賣點(diǎn),而宣傳的關(guān)鍵則是將這些創(chuàng)新點(diǎn)放大,讓更多人知曉和認(rèn)可。提煉宣傳點(diǎn)時,需要遵循幾個原則:亮點(diǎn)不宜超過三個;表達(dá)方式必須簡單、易記,確保人人都能理解;同時,持續(xù)傳播,反復(fù)強(qiáng)調(diào),才能讓創(chuàng)新真正深入人心并轉(zhuǎn)化為商業(yè)價值。

跨界思維:創(chuàng)新的源泉

陶建輝深信,跨界是創(chuàng)新的源泉。他分享了自身多個跨界創(chuàng)新的成功案例:

  • 和信:將通信技術(shù)應(yīng)用于互聯(lián)網(wǎng)消息服務(wù)。
  • 快樂媽咪:將宇宙大尺度結(jié)構(gòu)分析的方法用于胎心計算。
  • TDengine:將消息隊列技術(shù)運(yùn)用于時序數(shù)據(jù)處理。

對這三次創(chuàng)業(yè)歷程感興趣的小伙伴,可以跳轉(zhuǎn)閱讀《從宇宙大尺度結(jié)構(gòu)到胎心監(jiān)測,從手機(jī)消息推送到物聯(lián)網(wǎng)大數(shù)據(jù)處理 – 跨界是創(chuàng)新的主要源泉》,進(jìn)行更深層次的了解。陶建輝強(qiáng)調(diào):“跨界的關(guān)鍵在于與不同領(lǐng)域的人交流,洞察事物背后的本質(zhì)。”在創(chuàng)辦濤思數(shù)據(jù)之前,他曾走訪 20 多家物聯(lián)網(wǎng)、工控、IT運(yùn)維相關(guān)企業(yè),深入了解各行業(yè)的需求與痛點(diǎn)。創(chuàng)業(yè)后,他也利用空閑時間積極與公司內(nèi)部的銷售、市場、運(yùn)營、產(chǎn)品團(tuán)隊交流,不斷吸取多維度的經(jīng)驗(yàn)。要具備真正的跨界思維,還需要善于總結(jié)、抽象與歸納,從而挖掘事物背后的核心邏輯。正是這種跨界視角,推動他在創(chuàng)業(yè)過程中不斷突破自我,打造出更具競爭力的產(chǎn)品。

開源戰(zhàn)略、堅持與團(tuán)隊

開源是濤思數(shù)據(jù)的重要戰(zhàn)略。陶建輝表示,TDengine 核心代碼全部開源,這一舉措讓產(chǎn)品快速進(jìn)入全球市場。截至 2024 年 10 月,TDengine 的全球安裝實(shí)例已超過 62 萬,用戶遍布 60 多個國家,GitHub star 數(shù)量達(dá)到 23k+,多次登頂 GitHub 全球趨勢排行榜。

他認(rèn)為,如果不將最具競爭力的代碼開源,產(chǎn)品很難在市場上脫穎而出。如今的市場上替代品眾多,如果無法為用戶帶來真正的價值,即使產(chǎn)品免費(fèi)提供,用戶也未必會使用,更別提形成忠實(shí)的用戶群體。而將最具競爭力的代碼開源,不僅可以快速吸引開發(fā)者的關(guān)注和支持,還能有效狙擊競爭對手,占據(jù)市場先機(jī)。開源不僅是一種技術(shù)策略,更是一種構(gòu)建生態(tài)、贏得用戶信任的長遠(yuǎn)之計。

通過開源,TDengine 快速獲得市場反饋,并實(shí)現(xiàn)了產(chǎn)品的持續(xù)迭代。此外,開源還幫助公司與云廠商建立合作,成功拓展國際市場。

“創(chuàng)業(yè)是一場永不停歇的修行,”陶建輝說道。他以自己的創(chuàng)業(yè)經(jīng)歷為例,強(qiáng)調(diào)堅持的重要性。創(chuàng)業(yè)的成敗往往就在一念之間,這一點(diǎn)他體會頗深——2010 年,和信幾乎關(guān)門;2014 年,快樂媽咪團(tuán)隊僅剩 5 人。然而,他始終堅持走下去。如何做到堅持?陶建輝總結(jié)道,關(guān)鍵在于專注于創(chuàng)造價值,抵住外界的誘惑,對未來充滿信心,并有耐心坐冷板凳,等待機(jī)會的到來。這些品質(zhì),正是他在創(chuàng)業(yè)道路上披荊斬棘、不懈前行的力量源泉。除此之外,他也深知團(tuán)隊對于創(chuàng)業(yè)成功的意義。他認(rèn)為,一個優(yōu)秀的團(tuán)隊必須對未來充滿信心,愿意為了集體利益而奉獻(xiàn)?!懊總€人都應(yīng)該成為播種機(jī),將正能量傳播出去?!?/p>

時代“黑利”下,陶建輝談創(chuàng)業(yè)的制勝之道 | 空格酒談演講內(nèi)容分享 - TDengine Database 時序數(shù)據(jù)庫

]]>
譚雪峰:不碼“磚頭”,碼代碼 http://www.fjzmyy.cn/figure/24433.html Tue, 18 Jun 2024 09:25:38 +0000 http://www.fjzmyy.cn/?p=24433 在前段時間我們舉辦的“TDengine Open Day”第一季技術(shù)沙龍中,TDengine 應(yīng)用研發(fā)高級工程師譚雪峰進(jìn)行的“開源之路:程序員的成長與探索”主題分享獲得了眾多參會者的好評。譚雪峰從自身獨(dú)特的職業(yè)發(fā)展經(jīng)歷出發(fā),分享了自己在開源領(lǐng)域的種種收獲以及在進(jìn)行職業(yè)轉(zhuǎn)換過程中面臨的挑戰(zhàn)及應(yīng)對。本篇文章基于此次演講整理而成,給到有需要的開發(fā)者參考。

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

從土木工程到軟件開發(fā),開源是我的“老師”

我并不是科班出身,大學(xué)學(xué)的是土木工程專業(yè),最后轉(zhuǎn)來轉(zhuǎn)去,就成為了一名開發(fā)者,過程中所有的編程知識我都是自學(xué)的。從土木工程到軟件開發(fā),這一轉(zhuǎn)變幾句話可能就概括完了,但我在其中付出的精力和努力不是能簡單用文字概括的,現(xiàn)在想想,幸好堅持了下來,最終也結(jié)出了一個不錯的成果。

最開始就是因?yàn)閷τ螒虻臒釔?,引發(fā)了我對游戲逆向工程的興趣。我開始使用工具如金山游俠、Cheat Engine(CE)、OllyDbg(OD)、IDA 等,來探索游戲的內(nèi)部工作原理。這一過程讓我熟悉了匯編語言和偽 C 代碼,進(jìn)而激發(fā)了我對底層編程的興趣。通過參與 Capture The Flag(CTF)比賽,我進(jìn)一步鍛煉了我的技術(shù)能力,并在解決復(fù)雜問題中找到了樂趣。

之后,我從逆向工程轉(zhuǎn)向了更廣泛的編程領(lǐng)域,開始自學(xué) JavaScript、Python、PHP、Lua 和 Go 等語言。在剛開始工作時由于編程知識的基礎(chǔ)不足,工作上還是非常困難的,我就邊實(shí)踐邊學(xué)習(xí)。

這一路上,我的知識幾乎都是通過網(wǎng)絡(luò)學(xué)習(xí)來的——通過百度和谷歌,我能夠搜索到幾乎任何我需要的學(xué)習(xí)資源;同時,技術(shù)社區(qū)如 CSDN 和 Stack Overflow 成為了我解決編程難題和學(xué)習(xí)新技能的寶貴平臺。這些資源對我?guī)椭薮?,讓我能在編程的世界里越走越遠(yuǎn)。

還有一個很重要的學(xué)習(xí)途徑就是參與開源項目。剛開始我就是在 GitHub 上學(xué)習(xí)別人寫的開源代碼,等有了成長之后就不單是學(xué)習(xí)了,我自己也開始貢獻(xiàn)代碼,成為了一名 Contributor。

我參與的第一個開源項目是關(guān)于尋路算法的優(yōu)化,在從 ActionScript 到 TypeScript 的轉(zhuǎn)換過程中,我發(fā)現(xiàn)了一些算法的 Bug,并開始嘗試修復(fù),最終成功修正了源算法的狄洛尼三角網(wǎng)生成錯誤以及包圍盒調(diào)用錯誤。這是我第一次向開源社區(qū)貢獻(xiàn)代碼,感覺自己真的是從使用工具到改進(jìn)工具的一個轉(zhuǎn)變。

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

之后我印象比較深刻的一個項目是關(guān)于 H265 視頻流。在某次工作中,我在一個項目中需要處理 H265 格式的視頻流,要優(yōu)化延遲時間。我花了一些時間進(jìn)行改進(jìn),后端取到 H265 裸流進(jìn)行處理之后用 Websocket 實(shí)時推送 Web 端,然后在 Web 端我將 ffmpeg 編譯成 webassembly,之后在瀏覽器里用 Worker 實(shí)現(xiàn)多線程軟解,最終通過 Canvas 進(jìn)行實(shí)時監(jiān)控,并成功實(shí)現(xiàn)了毫秒級延遲。這個項目讓我學(xué)到了很多關(guān)于視頻處理和瀏覽器性能優(yōu)化的知識。后來,我把這個前端解決方案開源了,希望能幫助到其他面臨相同挑戰(zhàn)的開發(fā)者。

最具戲劇化的一次開源經(jīng)歷就是參與 TDengine HiveMQ 挑戰(zhàn)賽,這次經(jīng)歷也讓我與 TDengine 真正連接在了一起。在這場比賽中,我最終以第一名的成績獲得了“優(yōu)勝獎”,結(jié)果還是很不錯的。這也是我第一次參與開源社區(qū)活動,感覺能展示自己還能回饋社區(qū),這正是我想做的事情。接著我就收到了濤思數(shù)據(jù)拋出的“橄欖枝”,最后很幸運(yùn)地成為其中一員,目前我主要負(fù)責(zé) TDengine 的應(yīng)用研發(fā)和一些周邊生態(tài)建設(shè)。

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

其實(shí)在這之前我就在研究 TDengine 了,我之前所在領(lǐng)域是工業(yè)物聯(lián)網(wǎng),對各種時序數(shù)據(jù)庫(Time Series Database)都需要了解一些,國產(chǎn)的時序數(shù)據(jù)庫數(shù)量比較少,其中開源的就更少了,在這些開源數(shù)據(jù)庫里面 TDengine 性能又是其中非常高的,當(dāng)時要將TDengine 引入到平臺里面,就認(rèn)識了濤思數(shù)據(jù)的人。后來因?yàn)橐恍╅_發(fā)任務(wù)我開始研究 TDengine 的源碼,為了能在 Windows 上應(yīng)用便用 GCC 編譯做了一些修改,這也是我首次參與大型開源項目。

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

通過這些經(jīng)歷,我從一個簡單使用工具的程序員,變成了能夠自己“造輪子”的開發(fā)者?,F(xiàn)在,我不僅能解決問題,還能創(chuàng)造工具幫助他人解決問題。這就是開源給我的最大禮物—成長和自由。

開源讓用戶、項目、開發(fā)者多方共贏

發(fā)展至今,開源社區(qū)已經(jīng)演變?yōu)橐粋€日益壯大的全球性多元化舞臺,開發(fā)者可以在社區(qū)中分享經(jīng)驗(yàn)、解決問題、合作開發(fā),共同推動項目的發(fā)展。越來越多的企業(yè)意識到開源的重要性,積極支持開源項目,并且在自己的產(chǎn)品和服務(wù)中采用開源技術(shù)。許多大型企業(yè)也積極參與到開源項目中,貢獻(xiàn)代碼、資源和經(jīng)驗(yàn),推動了開源社區(qū)的發(fā)展和創(chuàng)新。

譚雪峰:不碼“磚頭”,碼代碼 - TDengine Database 時序數(shù)據(jù)庫

上圖是 GitHub 2023 年年度報告,從其中我們可以看到,2023 全年一共有 4.2 億個項目、2.84 億個公共倉庫、6.5 萬個公開的生成式 AI 項目、總共做出了 45 億次貢獻(xiàn)??梢婇_源項目數(shù)量不斷增長,涵蓋了各個領(lǐng)域,包括操作系統(tǒng)、編程語言、框架、工具、應(yīng)用程序等。

開源產(chǎn)品無疑是當(dāng)今技術(shù)發(fā)展的一大趨勢。通過開源,產(chǎn)品可以吸收來自不同使用者的廣泛反饋,不合理之處可以通過提交問題(issue)來指出,而社區(qū)的開發(fā)者則能貢獻(xiàn)自己的代碼改進(jìn)。這種模式促使使用者、開發(fā)團(tuán)隊和社區(qū)三者之間形成協(xié)作,共同豐富和完善項目內(nèi)容,確保了項目的持續(xù)健康發(fā)展,而不是閉門造車式地過早終結(jié)。

以 TDengine 為例,不同于許多時序數(shù)據(jù)庫采用的是單機(jī)版免費(fèi)而集群版收費(fèi)的模式,TDengine 提供的集群版同樣是開源的。這不僅使得開發(fā)者能夠深入學(xué)習(xí)數(shù)據(jù)庫集群的解決方案,還為使用者提供了更優(yōu)質(zhì)的集群版時序數(shù)據(jù)庫選擇,實(shí)現(xiàn)了多方共贏的局面。

當(dāng)下的“開源盛景”無疑也為每個開發(fā)者提供了很大的機(jī)會。開源讓開發(fā)者展現(xiàn)自己的同時還能幫助到其他人,分享越多得到的就越多,你可能覺得自己掌握的知識很簡單,但也有很多人還不懂,他們得到了你的幫助也會誠心的去感謝你。以我自身參與開源的經(jīng)歷來說,我認(rèn)為通過開源項目主要能讓我們獲得以下四個維度的能力提升。

提升代碼質(zhì)量

我們可以選擇一些優(yōu)質(zhì)的開源項目,多看多學(xué)習(xí)這些開源代碼。但想要成長還需要多寫,不光要寫代碼還要把優(yōu)化的過程寫出來,最簡單的辦法就是寫完一段代碼之后半個月再去看,如果覺得當(dāng)時的寫的非常 low 那就說明有成長了。最好就是自己寫東西開源出來,幫助別人的同時與開源項目一起成長。

而且開源代碼還會促使開發(fā)者保持高標(biāo)準(zhǔn),因?yàn)橹雷约旱拇a將被公開展示,我們便會更加注重代碼的整潔和清晰。Linus’s Law 曾說過一句經(jīng)典名言“Given enough eyeballs, all bugs are shallow”,這句話的意思是如果有足夠多的人檢查代碼,那么所有的 Bug 都將無處藏身。

技術(shù)視野拓展

當(dāng)一項新技術(shù)開始引起關(guān)注時,開源項目往往是最早采用和實(shí)驗(yàn)這些技術(shù)的平臺之一。參與這些項目不僅可以使程序員在早期階段就接觸并掌握這些前沿技術(shù),還能深入了解其背后的原理和實(shí)際應(yīng)用場景。這種直接的實(shí)踐經(jīng)驗(yàn)不僅能夠提升個人的技術(shù)能力,還有助于幫助我們形成對未來技術(shù)趨勢的敏銳洞察,在不斷變化的職業(yè)市場中保持競爭優(yōu)勢。

建立個人品牌

隨著開源技術(shù)的深入和廣泛應(yīng)用,開源社區(qū)的影響力日益增強(qiáng),越來越多的企業(yè)開始認(rèn)識到開源項目中隱藏的人才價值。企業(yè)不僅在技術(shù)創(chuàng)新上依賴這些開源解決方案,同時也傾向于招募那些在開源社區(qū)中積極貢獻(xiàn)的程序員。那些在開源社區(qū)中有所貢獻(xiàn)的程序員,往往更容易獲得企業(yè)的青睞,從而獲得更好的職業(yè)發(fā)展機(jī)會。

但相應(yīng)地,擁有“Contributor”的頭銜不僅是一種榮譽(yù),更是一種責(zé)任。作為開源社區(qū)的一員,我們需要從內(nèi)心深處發(fā)揮回饋社區(qū)的責(zé)任感。開源項目的成功不僅僅依賴于代碼的質(zhì)量,更重要的是依賴于社區(qū)成員的積極參與和持續(xù)貢獻(xiàn)。這包括對項目的負(fù)責(zé),關(guān)注并推動項目的長期發(fā)展,維護(hù)社區(qū)的健康生態(tài),以及確保軟件的高質(zhì)量和穩(wěn)定性,為用戶提供卓越的使用體驗(yàn)。通過這種全面的投入,我們不僅提升個人技術(shù)水平,還為整個開源生態(tài)系統(tǒng)的繁榮做出貢獻(xiàn)。

程序員與工程師

在軟件開發(fā)中,程序員和工程師雖共同致力于軟件的創(chuàng)建與完善,但他們的角色和職責(zé)各有側(cè)重。程序員主要專注于編寫、測試和維護(hù)代碼,解決特定的技術(shù)問題。他們是代碼實(shí)現(xiàn)和邏輯的專家,通過精確的編程確保軟件功能的實(shí)現(xiàn)。

而軟件工程師的職責(zé)更為廣泛,不僅包括編程,還涵蓋項目的整體規(guī)劃、設(shè)計、測試、部署與維護(hù)。工程師需要在整個軟件開發(fā)周期中進(jìn)行綜合考慮和資源協(xié)調(diào),以確保項目的順利執(zhí)行和質(zhì)量標(biāo)準(zhǔn)的達(dá)成。

因此,每位工程師都應(yīng)具備扎實(shí)的編程能力,而成為一名合格的程序員僅是邁向全面軟件工程師之路的起點(diǎn)。通過積極參與開源,程序員可以逐步擴(kuò)展自身的技術(shù)和管理視野,最終成長為能夠在更廣泛領(lǐng)域內(nèi)作出影響的軟件工程師。

]]>
從研發(fā)轉(zhuǎn)銷售,90后聯(lián)合創(chuàng)始人分享從 0 到 1 開拓市場的秘訣 http://www.fjzmyy.cn/figure/22730.html Tue, 26 Dec 2023 09:56:32 +0000 http://www.fjzmyy.cn/?p=22730

小 T 導(dǎo)讀:在去年濤思數(shù)據(jù)舉辦的 TDengine 開發(fā)者大會上,侯江燚以聯(lián)合創(chuàng)始人的身份登臺演講,將自己對于開源商業(yè)化的獨(dú)特觀點(diǎn)娓娓道來,贏得陣陣掌聲。今年是他加入濤思數(shù)據(jù)的第五年,從放棄讀博選擇成為一名研發(fā),到辭去國外安逸穩(wěn)定的工作,再到回國后在大廠和創(chuàng)業(yè)企業(yè)間做出就業(yè)抉擇……數(shù)載光陰后回顧來時路,他也有很多感慨和收獲?!俺枀^(qū)鳳凰人才”“胡潤 U30 中國創(chuàng)業(yè)領(lǐng)袖”“36Under36 創(chuàng)業(yè)者”……如今的侯江燚身上疊加了眾多光環(huán),但這些榮譽(yù)并沒有拖慢他前行的腳步,反而讓他更加堅定地追求自己的目標(biāo)。通過這篇文章,我們一起來了解一下這位 90 后聯(lián)合創(chuàng)始人的職場成長指南,希望能給到讀者一些思考。

放棄攻讀物理學(xué)博士,轉(zhuǎn)投計算機(jī)開啟另一番際遇

1、你是大學(xué)和研究生都學(xué)的物理專業(yè)嗎?為什么畢業(yè)之后會決定從事研發(fā)工作?什么時期打下的做研發(fā)的基礎(chǔ)知識?

本科我學(xué)的專業(yè)是地球物理學(xué)(Geophysics),研究生是巖石物理(Rock Physics)。地球科學(xué)是個很有意思的基礎(chǔ)學(xué)科,主要是通過比較有限的可觀測物理量(比如地震波、巖石物理形態(tài)及地球化學(xué)性狀等)去推測一些時空上無法觸達(dá)的區(qū)域的特性(比如地球壽命推算、46億年前的狀態(tài)、生命起源、地球內(nèi)部圈層的結(jié)構(gòu)等等)。正因?yàn)榭捎^測的量很有限,不少地球科學(xué)推斷想找到直接證據(jù)很難,就像地球動力學(xué)需要大量實(shí)驗(yàn)和計算機(jī)仿真模擬去側(cè)面驗(yàn)證一些結(jié)論。后者本質(zhì)是基于一定的假設(shè)建立某個地球物理問題的數(shù)學(xué)模型,然后通過計算機(jī)去從理論層面進(jìn)行模擬和計算,推算不同條件下,模型產(chǎn)生的響應(yīng)。這個工作牽涉了大量的編程工作。我也在這種工作中逐步開始深入了解一些計算機(jī)編程知識的,加深了興趣,反而放棄了讀博,轉(zhuǎn)投計算機(jī)領(lǐng)域。

2、為什么會決定出國留學(xué)?又為什么決定要回國就業(yè)了?

中國科大每年有 30% 左右的同學(xué)出國深造,我當(dāng)時沒想太多,也有點(diǎn)隨大流,就想出去看看,畢竟國外的基礎(chǔ)科學(xué)還是相當(dāng)發(fā)達(dá)的。后面我放棄讀博轉(zhuǎn)投計算機(jī)領(lǐng)域后就開始參加工作了,最初在美國工作時,我加入了一家排名 Top 2 的 ERP 公司做 Java 開發(fā),公司管理和培訓(xùn)機(jī)制很完善,一開始花了些時間,步入正軌后,每天都是朝九晚五的工作。除了完成額定工作內(nèi)容外,我還搗騰一些自己感興趣的技術(shù)。雖然比較愜意,但看著朋友圈的國內(nèi)同學(xué)朋友已經(jīng)開始做的風(fēng)生水起,不禁有一些壓力,擔(dān)心自己是不是在最寶貴的年華過得太安逸了。跟一些從國外回到國內(nèi)的朋友和前輩聊聊后,才發(fā)現(xiàn)國內(nèi)現(xiàn)在發(fā)展實(shí)在太快了,我自己也看到互聯(lián)網(wǎng)領(lǐng)域很多商業(yè)模式在國內(nèi)的復(fù)制得到了巨大的成功,就萌生了回國試試水的想法。

3、據(jù)我所知,你是碩士畢業(yè)一年之后決定回國發(fā)展,隨即就入職濤思數(shù)據(jù)了。以你的學(xué)歷背景加持,完全可以進(jìn)國內(nèi)大廠就業(yè),為什么會做出這樣一個決定?

我是 2018 年回來的,一開始回來,我沒著急馬上加入某個公司,而是先四處探索了下,想看看當(dāng)時比較熱的 AI、區(qū)塊鏈等幾個行業(yè)的機(jī)會,試水了幾個大廠的面試后也拿到了一些 offer。這期間恰好洪澤(濤思數(shù)據(jù)聯(lián)合創(chuàng)始人之一)和我聯(lián)系,說起自己在創(chuàng)業(yè)公司的事。我們本科是同班同學(xué),正好他也剛回國不久,作為我們這一級的郭獎獲得者,聽聽他的建議保證沒壞處。后來洪澤向 Jeff(濤思數(shù)據(jù)創(chuàng)始人陶建輝)推薦了我,線上聊了一次,那是我第一次知道時序數(shù)據(jù)庫(Time Series Database)。之后 Jeff 給我看了 TDengine 的技術(shù)白皮書和測試報告,專業(yè)程度非常之高,我就意識到這個團(tuán)隊做的事確實(shí)不簡單。最后也是在一次與 Jeff 的見面長談中,被他完全說服。作為一個連續(xù)創(chuàng)業(yè)者,他的幾點(diǎn)看法我到現(xiàn)在都印象深刻:

1)創(chuàng)業(yè)賽道選擇非常重要,最好進(jìn)入一個正要進(jìn)入火熱期的賽道,而不是已經(jīng)非常熱的,否則競爭壓力極大、生存空間非常有限。這個也打消了我加入 AI、區(qū)塊鏈公司的一些想法。

2)國內(nèi)的工業(yè)信息化、智能化浪潮是大背景下,做 ToB 軟件的互聯(lián)網(wǎng)公司,客戶粘性相比 ToC 的高得多,發(fā)展會更加穩(wěn)健。

而分布式時序數(shù)據(jù)庫作為 ToB 的基礎(chǔ)軟件,這個品類的產(chǎn)品在國際上也是剛剛誕生幾年,又是物聯(lián)網(wǎng)和工業(yè)互聯(lián)網(wǎng)的剛需產(chǎn)品,各方面綜合考慮后我就決定加入濤思,在這個賽道跑一下試試。

從研發(fā)轉(zhuǎn)銷售,從 0 到 1 開拓市場

1、你之前是做研發(fā)的,加入濤思后卻轉(zhuǎn)做市場銷售了,在接受這個工作設(shè)定的過程中你的心路歷程是如何的?

為公司坦然接受,并當(dāng)作人生的一個新挑戰(zhàn)。當(dāng)時 TDengine 剛剛產(chǎn)品化,急需推廣并拿到一些種子客戶驗(yàn)證時序數(shù)據(jù)庫市場的存在性。Jeff 也引入了不少資歷深厚的銷售牛人,但結(jié)果都不盡人意。由于時序數(shù)據(jù)庫在國內(nèi)是個新概念,直接使用者又都是開發(fā)人員,傳統(tǒng)資源型銷售可以敲開門,但落單推進(jìn)缺乏技術(shù)上的有力支撐,客戶不相信這個僅由 6 個人開發(fā)的軟件能解決他們的海量數(shù)據(jù)難題。最初的三個種子客戶,反而是 Jeff 自己憑借深厚的技術(shù)功底打動客戶搞定的。從那之后,我們就意識到,TDengine 這個產(chǎn)品從 0 到 1 市場開拓工作,必須由技術(shù)背景的人來做。這個人選當(dāng)時有兩個,我是其中之一,就坦然接受了。受國外工作學(xué)習(xí)經(jīng)歷的影響,我一直堅信定義個人能力的并不是工作內(nèi)容而是工作成果。因此我從沒有對工作內(nèi)容特別挑剔,但對自己做事情的結(jié)果額外關(guān)注,這也是我對公司的各種工作都樂意參與一些的原因。

2、在剛開始加入濤思數(shù)據(jù)時,沒有任何資源、零經(jīng)驗(yàn)的你是怎么一步步上手銷售工作的?遇到的困難主要有哪些?如何克服的?

確實(shí),一開始非常艱難,我完全沒做過銷售,不知道該如何入手。不過逐漸我意識到,抓住主要矛盾很關(guān)鍵。那個時候剛好是 2019 年末,TDengine 剛剛開源不久,又在 GitHub 上連續(xù)多天排名全球趨勢榜第一名,贏得了不少開發(fā)者社區(qū)的名聲,這也讓我能借力觸達(dá)一些客戶。正如上個問題所說,當(dāng)時 TDengine 是從 0 到 1 去做客戶拓展的階段。資源反而沒那么重要,能敲開門的資源已經(jīng)足夠好,反而是要憑借我本身對產(chǎn)品和技術(shù)的理解,對客戶需求與痛點(diǎn)的敏銳洞察,手把手幫助客戶解決他們的問題。因此前期我到客戶現(xiàn)場駐場培訓(xùn) TDengine 底層設(shè)計原理、使用方式,現(xiàn)場編寫代碼支撐客戶 PoC 測試,到后面給客戶設(shè)計最適合他們的商務(wù)合作策略。這么一步一步把 TDengine 的早期客戶攢起來。

3、對于 TDengine 雙開源的決策,你是怎么看待的?你覺得這是否會影響到 TDengine 的營收?

TDengine 是 open-core 的商業(yè)模式。這個在國內(nèi)還不算太多,但在國外已經(jīng)非常流行,并且像紅帽、MongoDB 等公司都驗(yàn)證了這是個可以成功的模式,核心思路與 ToC 互聯(lián)網(wǎng)流量生意沒有區(qū)別。我對此模式也比較自信,開源是現(xiàn)在 ToB 基礎(chǔ)軟件企業(yè)尤其是創(chuàng)業(yè)公司想要有所突破的不二選擇。至于營收,短期內(nèi)看,可能會有不少人覺得開源了代碼就少了很多付費(fèi)的客戶。其實(shí)并不是這樣,沒有哪個軟件可以做到壟斷,因此一個由于項目成本限制而無法付費(fèi)的客戶,不會因?yàn)殚]源就去采購。這種情況下,要么閉源失去這個客戶,要么開源留下這個客戶,并且讓其與我們產(chǎn)品一起成長,這顯然是個更聰明的選擇。

4、加入濤思數(shù)據(jù)至今,有哪些讓你覺得非常自豪的工作成果?你覺得自己最大的成長是什么?

堅持下來就是讓我最自豪的“成果”。在我加入前濤思只有 5 個人,我是第 6 位。大家一起在一間辦公室辦公,我也曾在公司的清潔間改造的“商務(wù)辦公室”接待過客戶。創(chuàng)業(yè)公司工作的強(qiáng)度真的很大,我在濤思每天的工作都安排得非常滿,做的事情也非常雜;個人必須不斷學(xué)習(xí)去適應(yīng)公司不斷上新臺階后對個人能力的要求。有時回到家,我會累的一句話也說不出來。但這種必須全力以赴的工作狀態(tài),是能逼出最好的自己的。現(xiàn)在濤思規(guī)模已經(jīng)近百人,產(chǎn)品打出了一些名氣,已經(jīng)發(fā)展了全球 40萬+ 的用戶,上百家商業(yè)合作伙伴,也算是折騰出了一些“動靜”,對此我很自豪。

只有讓客戶成功,才能真正把商業(yè)化做好

1、作為一名銷售,你應(yīng)該對于數(shù)據(jù)庫行業(yè)非常了解,你覺得 TDengine 在數(shù)據(jù)庫領(lǐng)域里的綜合優(yōu)勢是什么?

TDengine 的設(shè)計是由 Jeff 操刀的,其實(shí)有很濃重的個人色彩在產(chǎn)品風(fēng)格中。Jeff 的風(fēng)格想必大家也都比較熟悉了:一針見血,直截了當(dāng);產(chǎn)品設(shè)計上,高速、高效、簡單易用也是 TDengine 最大的三個特色。TDengne 是專門為時間序列數(shù)據(jù)設(shè)計的數(shù)據(jù)庫,雖然犧牲了部分通用性,但換取了極高的讀寫性能、壓縮比和易用性。同時,TDengine 本身在使用上做的非常簡單直白,一個設(shè)備一張表,這個數(shù)據(jù)模型設(shè)計思路也是簡明扼要的對應(yīng)著物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、IT運(yùn)維等領(lǐng)域中每個數(shù)據(jù)源產(chǎn)生一個時間序列數(shù)據(jù)流的場景。TDengine 要解決的問題就是海量時序數(shù)據(jù)的存儲、查詢和分析,目標(biāo)和解決方案都非常明確。因此 TDengine 并不應(yīng)該拿來與 Oracle、MySQL等關(guān)系型數(shù)據(jù)庫直接對比應(yīng)用場景,就像沒人拿菜刀和砍刀對比一樣。

2、作為濤思數(shù)據(jù)的第六號員工,你也是一路陪著 TDengine 成長起來的,你怎么評價 TDengine 這一路走來的發(fā)展?

團(tuán)隊擴(kuò)展上,濤思一直堅持精英建隊文化,招募的都是很厲害的人,這也是一路堅持走下來的重要原因之一。工作方式上,我們也一再強(qiáng)調(diào)從客戶需求出發(fā),追求卓越,尤其是在產(chǎn)品研發(fā)和服務(wù)客戶方面。TDengine 產(chǎn)品化最開始遇到很多挫折,我們不斷跌進(jìn)新的坑里,爬出來,又跌進(jìn)去。但我們始終堅持通過一絲不茍的服務(wù)態(tài)度和行業(yè)頂級的技術(shù)能力,與客戶建立信任、一同成長。我們有一個種子客戶,2018 年 TDengine 剛剛產(chǎn)品化時就開始使用,有一次撞到了個嚴(yán)重 bug——生產(chǎn)環(huán)境搞壞了數(shù)據(jù)文件,我們核心幾位研發(fā)連夜不休息地幫客戶開發(fā)一個文件掃描恢復(fù)工具,緊急修復(fù),恢復(fù)生產(chǎn),最終解決問題。這家公司的 CTO 后來又跳槽了兩家公司,都毫不猶豫地把 TDengine 納入到新公司的解決方案。我認(rèn)為這種信任是種“戰(zhàn)壕里的信任”,濤思就是這么一路走過來的。

3、對于 TDengine 的未來,你有哪些暢想?

TDengine 現(xiàn)在已經(jīng)支持了很多用戶,為了服務(wù)好大家,我們組建了多種用戶服務(wù)團(tuán)隊去進(jìn)一步深入支持用戶,了解需求,并引導(dǎo)產(chǎn)品發(fā)展。同時,TDengine 的核心研發(fā)團(tuán)隊也在不斷解決整個時序數(shù)據(jù)庫行業(yè)世界性的難題,比如去年發(fā)布的 TDengine 3.0,就解決了單集群 100 億時間線存儲的問題等。目前公司成立商業(yè)化部門,我也在負(fù)責(zé)其中相關(guān)工作,我最關(guān)注的還是如何讓我們的客戶更成功,TDengine 如何能解決客戶更多、更難的問題。只有解決問題、創(chuàng)造價值,我們才有可能真正把商業(yè)化做好。我非常希望未來 TDengine 能夠成為時序數(shù)據(jù)庫領(lǐng)域的標(biāo)配,以后提到物聯(lián)網(wǎng)數(shù)據(jù)、時序數(shù)據(jù)就會想到 TDengine ,就像大家提到數(shù)據(jù)庫就會想到 Oracle 一樣。

]]>
從實(shí)時數(shù)據(jù)庫轉(zhuǎn)戰(zhàn)時序數(shù)據(jù)庫,他陪伴 TDengine 從 1.0 走到 3.0 http://www.fjzmyy.cn/figure/21834.html Mon, 09 Oct 2023 09:50:00 +0000 http://www.fjzmyy.cn/?p=21834 關(guān)于采訪嘉賓

在關(guān)勝亮的學(xué)生時代,“神童”這個稱號如影隨形,很多人初聽時會覺得這個稱謂略顯夸張,有些人還會認(rèn)為這是不是就是一種調(diào)侃,但是如果你聽說過他的經(jīng)歷,就會理解這一稱號的意義所在了。

受到教師母親的影響,關(guān)勝亮從記事起就“長”在了教室后排,提前開啟了啟蒙教育,這也使得他在四周歲直接就讀了一年級。盡管所在村莊的教育條件非常有限,他仍然憑借著優(yōu)異的成績,在 16 周歲就進(jìn)入了中國科學(xué)技術(shù)大學(xué)化學(xué)物理系,并拿到學(xué)校和政府合計 13000 元的助學(xué)獎金。要知道,2001 年時科大和清北差距并不大,在關(guān)勝亮所在的吉林省被并稱為“三?!薄8幸饬x的是,他的求學(xué)故事給家鄉(xiāng)燃起了一把希望之火,讓教育觀念薄弱的村里人發(fā)現(xiàn)“原來上學(xué)也是孩子可以選擇的出路”。

進(jìn)入大學(xué)后,彼時還是大一新生的關(guān)勝亮通過旁聽招聘會,分析出了日后理科學(xué)生的工作出路,無非就是留校、研究所、出國幾類,當(dāng)時科大理科相關(guān)專業(yè)能夠獲得全額獎學(xué)金并出國的比例大約為 20% ~ 30%,似乎也是一個不錯的選擇,但在接觸 C 語言和數(shù)據(jù)結(jié)構(gòu)的課程后,他發(fā)現(xiàn)自己更喜歡坐在電腦旁邊寫點(diǎn)程序。就這樣,關(guān)勝亮確定了自己的未來發(fā)展方向,并成功從化學(xué)物理系轉(zhuǎn)到了新開設(shè)的軟件工程系,開啟了自己的“程序員”生涯。

與濤思結(jié)緣,始于一個“無奈之舉”

對于關(guān)勝亮來說,當(dāng)初選擇數(shù)據(jù)庫這個就業(yè)方向,其實(shí)純粹就是一個“無奈之舉”。

“我研究生就讀于中科院計算所,專業(yè)是虛擬現(xiàn)實(shí),本來最對口的方向是一直火到現(xiàn)在的游戲行業(yè),為了一紙戶口,我進(jìn)入了一家做實(shí)時數(shù)據(jù)庫的企業(yè),它和時序數(shù)據(jù)庫(Time Series Database)還不一樣,只能存儲當(dāng)前時間的數(shù)據(jù),歷史數(shù)據(jù)是存儲在其他系統(tǒng)的。就這樣我一直做了很多年的實(shí)時數(shù)據(jù)庫,一度覺得實(shí)時數(shù)據(jù)庫是明日黃花了?!?/p>

雖然這在當(dāng)時看起來并不是一個最佳選擇,但人生也沒有絕對正確的選擇,機(jī)會總是留給善于思考且有所準(zhǔn)備的人,關(guān)勝亮深諳這個道理?!斑x擇賽道,其實(shí)是在考慮如何生產(chǎn)出一個能賣錢的產(chǎn)品,要相信硬核技術(shù)永遠(yuǎn)都不會過時,只有技術(shù)才能帶來新的元素。因此,與其選擇賽道不如沉淀自己,找到自己的核心競爭力在哪里,看準(zhǔn)時機(jī)將創(chuàng)業(yè)風(fēng)口與自身專長相結(jié)合,技術(shù)才是第一生產(chǎn)力?!?/p>

2017 年,從 360 過渡到只有幾個人的創(chuàng)業(yè)公司濤思數(shù)據(jù),他沒有過多猶豫,在發(fā)現(xiàn)自己在時序數(shù)據(jù)、分布式方面的技術(shù)儲備,以及在監(jiān)控領(lǐng)域的業(yè)務(wù)儲備,正好與這個產(chǎn)品完全匹配后,他欣然選擇了加入?!拔蚁牒?Jeff(TDengine 創(chuàng)始人與核心研發(fā)陶建輝) 一起,開發(fā)出一個行業(yè)領(lǐng)先的數(shù)據(jù)庫產(chǎn)品,重新點(diǎn)亮我的職業(yè)生涯,讓我十余年的知識積累能夠發(fā)揮出更大的作用?!?/p>

到現(xiàn)在,關(guān)勝亮加入濤思也有了 6 年時間,而在這 6 年時間中,他也確實(shí)將自己的所學(xué)毫無保留地傾注在了 TDengine 這款產(chǎn)品之中。

“在濤思數(shù)據(jù),我就是一塊磚,哪里需要哪里搬。我組織開發(fā)了 TDengine 從 1.0 到 2.0 再到 3.0 的所有迭代版本,哪個模塊缺人手,我就會補(bǔ)充到哪里,不但做架構(gòu)、管理,也寫了很多代碼。打開 Github 倉庫,查看 TDengine 的貢獻(xiàn)者(https://github.com/taosdata/TDengine/graphs/contributors),可以看到我是排在第一位的?!?/p>

從實(shí)時數(shù)據(jù)庫轉(zhuǎn)戰(zhàn)時序數(shù)據(jù)庫,他陪伴 TDengine 從 1.0 走到 3.0 - TDengine Database 時序數(shù)據(jù)庫

可以說,職業(yè)生涯到現(xiàn)在為止,專注于 TDengine 的產(chǎn)品研發(fā)就是讓關(guān)勝亮最有成就感的事情了。讓他欣慰的是,在濤思人的共同努力下,TDengine 已經(jīng)發(fā)展成為了國內(nèi)頂級的時序數(shù)據(jù)庫產(chǎn)品,在國際上也有了一定的影響力,同時也得到了廣大開發(fā)者的認(rèn)可——GitHub 上已經(jīng)發(fā)展了兩萬多的 star(https://github.com/taosdata/TDengine)。

在 IT 技術(shù)不斷發(fā)展的今天,用戶要想實(shí)現(xiàn)一種功能,一定會有很多的待選方案,但想要在一定性能條件下去實(shí)現(xiàn),選擇就不多了。TDengine 之所以硬核,就在于超高性能的數(shù)據(jù)處理能力。“回想 TDengine 1.x 的版本,產(chǎn)品的穩(wěn)定性還達(dá)不到很高的標(biāo)準(zhǔn),但我們的首批種子客戶依然堅定的選擇了 TDengine,一方面是對國產(chǎn)自研軟件的支持,另一方面就是市面上沒有可用的替代品?!?/p>

這也直觀地說明,物聯(lián)網(wǎng)領(lǐng)域確實(shí)需要一個能夠真正解決問題的時序數(shù)據(jù)存儲引擎。而隨著 TDengine 的發(fā)展,關(guān)勝亮在 6 年前做出的選擇也已經(jīng)“開花結(jié)果”。

與 TDengine 同行,技術(shù)更新與海外市場兩手抓

作為一個基礎(chǔ)軟件,尤其是國產(chǎn)基礎(chǔ)軟件,發(fā)展難度是顯而易見的,也因此,從選擇加入 TDengine 的那一刻開始,關(guān)勝亮就做好了長期扎根打持久戰(zhàn)的準(zhǔn)備。

“數(shù)據(jù)庫產(chǎn)品一定要靠豐富的應(yīng)用場景,通過時間的沉淀和場景的打磨才能發(fā)展起來。好的數(shù)據(jù)庫是用出來的,不是靠幾個代碼高手設(shè)計出來的,決定數(shù)據(jù)庫企業(yè)未來的是有效用戶和應(yīng)用場景,我們要做的就是在真實(shí)的場景中解決用戶的痛點(diǎn)問題?!?/p>

從這一點(diǎn)出發(fā),TDengine 開啟了核心代碼完全開源的發(fā)展模式,獲得了數(shù)以千計的真實(shí)用戶場景,如關(guān)勝亮一般的 TDengine 技術(shù)人員在這些案例的基礎(chǔ)上總結(jié)提煉,抽象出用戶的真正需求,不斷調(diào)整迭代產(chǎn)品,不受定制開發(fā)等短期利益誘惑,始終保證著將核心研發(fā)力量投入在產(chǎn)品的主線發(fā)展方向上。

“開源軟件想要獲得長期發(fā)展,成為一個企業(yè)敢用的產(chǎn)品,背后一定需要一個強(qiáng)力的組織支撐,用以保證軟件的架構(gòu)穩(wěn)定,保證代碼質(zhì)量和測試覆蓋,保證軟件缺陷可以穩(wěn)定且及時的得到處理,越是功能強(qiáng)大、架構(gòu)復(fù)雜的 2B 軟件越是如此?!?/p>

借助開源的力量,TDengine 發(fā)展了大量的用戶,為便于和用戶交流溝通,濤思數(shù)據(jù)目前已運(yùn)營了 20 多個用戶群,各個用戶群日常都非常活躍。以 TDengine 3.0 為例,一經(jīng)發(fā)布,每天就有 5~600 人安裝試用 TDengine,不到兩周的時間已經(jīng)收集了 100 個優(yōu)化建議,進(jìn)一步推動著產(chǎn)品的快速迭代。

“有的競品攻擊我們,說 TDengine 迭代速度太快,產(chǎn)品怎么可能穩(wěn)定。這種說法非常有意思,產(chǎn)品穩(wěn)定與否,是和質(zhì)量體系有關(guān)的,和迭代速度關(guān)系不大。沒有用戶的使用,不要說大版本的迭代,小版本的迭代都成了無源之水。在國內(nèi)競品把目光瞄準(zhǔn) TDengine 時,TDengine 已經(jīng)把目光瞄準(zhǔn)了全球?!?/p>

從聯(lián)合創(chuàng)始人的身份出發(fā),關(guān)勝亮表示 TDengine 接下來的發(fā)展道路也已經(jīng)非常清晰了?!癟Dengine 在國內(nèi)時序數(shù)據(jù)庫領(lǐng)域已經(jīng)有了一定的江湖地位,但是海外市場的拓展還很有限。隨著 TDengine 3.0 穩(wěn)定性和易用性逐步增加,我對海外市場非常有信心,中國 IT 產(chǎn)業(yè)約占全球市場的 20%,海外市場具備更大的發(fā)展空間。在 IoT 領(lǐng)域,TDengine 已經(jīng)解決了基礎(chǔ)的數(shù)據(jù)讀寫的問題,下一步就是引入時序數(shù)據(jù)分析,在更廣闊的領(lǐng)域推動技術(shù)的發(fā)展。

再起航:繼續(xù)“六”下去

發(fā)展 6 年,TDengine 也已經(jīng)沉淀了幾十萬行代碼了,在產(chǎn)品架構(gòu)設(shè)計和演進(jìn)上,關(guān)勝亮也有著“經(jīng)驗(yàn)之談”。“在做開發(fā)之前,一定要考慮是在做一個產(chǎn)品,還是在做一個項目。作為項目,你可以選擇一些主流的開源產(chǎn)品,不要過度設(shè)計,讓項目可以快速上線;但作為一個產(chǎn)品,關(guān)鍵部分還是要以自研為主,控制核心代碼,讓迭代升級快速有效。”

他以 TDengine 為例進(jìn)行了說明,“一個設(shè)備一張表的數(shù)據(jù)模型,作為其最核心的創(chuàng)新點(diǎn),在三個大版本迭代時都沒有變化;但是在工程實(shí)現(xiàn)方面,其元數(shù)據(jù)管理模塊,從 1.0 的集中式管理,到 2.0 的半分布式管理,再到 3.0 的全分布式管理,完全是業(yè)務(wù)需求驅(qū)動的。集中式管理可以處理百萬時間線,半分布式管理可以處理千萬時間線,而全分布式則可以處理上億的時間線,徹底解決了業(yè)界困擾的高基數(shù)問題。

從他的陳述中我們可以看到,TDengine 從 1.0、2.0 到 3.0 的演進(jìn),不是簡單的數(shù)字堆積,每個版本都是真真正正的質(zhì)的提升。它的成功不只是技術(shù)實(shí)現(xiàn)細(xì)節(jié),更在于研發(fā)人員對時序數(shù)據(jù)特點(diǎn)的抽象融合,對于物聯(lián)網(wǎng)業(yè)務(wù)的深度理解。

行文至此,關(guān)勝亮與 TDengine 的第一個六年故事就告一段落了,而他們的下一個六年也已經(jīng)起航。對于關(guān)勝亮來說,他的終極目標(biāo)就是讓 TDengine 成為時序數(shù)據(jù)領(lǐng)域的事實(shí)標(biāo)準(zhǔn),成為全球第一的時序數(shù)據(jù)庫,而他也將為此繼續(xù)奮斗在產(chǎn)品第一線。

]]>
如何成為一名合格的 DBA?看看“老油條”們怎么說 http://www.fjzmyy.cn/tdengine-engineering/13032.html Wed, 03 Aug 2022 09:18:00 +0000 http://www.fjzmyy.cn/?p=13032

小 T 導(dǎo)讀:作為薪水較為可觀的 IT 職業(yè)之一,DBA 貌似是一個門檻低、活還少的技術(shù)崗位,只要接受過相應(yīng)的系統(tǒng)性訓(xùn)練,應(yīng)該就可以成功入門。但想要真正勝任這個崗位,實(shí)際卻并不容易。DBA 的工作到底是怎樣的?它的前景如何?想做好 DBA 又需要具備哪些能力?我們采訪了兩位有豐富工作經(jīng)驗(yàn)的 DBA 和運(yùn)維工程師,下面一起看一看他們的感悟吧。

DBA 的一天是怎樣的?

分享人:濤思數(shù)據(jù)交付工程師 董延瓊

(注:本章節(jié) DBA 特指運(yùn)維 DBA)

本人不僅是一個在 IT 行業(yè)摸爬滾打(混吃等死)、兢兢業(yè)業(yè)(得過且過)十多年的從業(yè)者,也是一個有著近十年豐富工作經(jīng)驗(yàn)的 DBA(老油條)。在剛進(jìn)職場的五年里,我在一家中字頭下面的三產(chǎn)做運(yùn)維,主機(jī)、數(shù)據(jù)庫都有接觸,后來被朋友“坑”去創(chuàng)業(yè)公司玩了三年 MySQL,再后來繼續(xù)給國字頭做了三年數(shù)據(jù)庫(Oracle)運(yùn)維,現(xiàn)在的職場身份是時序數(shù)據(jù)庫(Time Series Database)TDengine 團(tuán)隊的交付工程師。

鄭重聲明:那種一杯茶一包煙,一張表導(dǎo)一天的快樂日子,我根本就沒經(jīng)歷過。

TDengine Database

關(guān)于運(yùn)維 DBA 的工作,其實(shí)和中醫(yī)治病的理念有點(diǎn)像,在此引用一下魏文侯問扁鵲三兄弟醫(yī)術(shù)的故事,很有意思。對話是這樣的:

魏文候問扁鵲:“你們兄弟三人,哪一位醫(yī)術(shù)最精呢?”

扁鵲回答說:“大哥醫(yī)術(shù)最精,二哥次之,我最差?!?/p>

魏文候又問:“那為什么我沒有聽說過他們呢?”

扁鵲解釋說:“大哥于病視神,在疾病還未形成時就將其除掉了,大家都沒怎么見過他治病,所以他的名聲傳不出家門;二哥治病,是在疾病剛剛萌芽時就治愈它了,大家都只見到他治一些不嚴(yán)重的小病,所以他的名聲也不出于鄰里之間;而我通常是等病發(fā)展到一定程度才發(fā)現(xiàn),通過針刺血脈、投湯藥、割皮解肌來治病。大家都認(rèn)為我擅長治療各種疑難雜癥,因此聞名于諸侯之間?!?/p>

現(xiàn)在估計很多 DBA 都會有類似的想法。理想的工作就是每天處理一下小問題,調(diào)調(diào)優(yōu),防患于未然,爭取將大問題都掐死在搖籃里,剩余時間就是看看資料,提升一下自己,平平淡淡地“混過”每一天。但很不幸的是,如果真的抱著這樣的想法,那么你離被裁也就不遠(yuǎn)了,因?yàn)槟阍诶习逖劾锞褪莻€無所事事,混跡在職場中打醬油的“老油條”。

其實(shí)我們換位思考一下也就能理解了,如果你是老板,一個員工整天沒啥正事,除了聊天打屁,就是上網(wǎng)看書,系統(tǒng)一年也沒有出現(xiàn)過啥大問題,身為老板的你是不是也感覺這人力成本花的有點(diǎn)冤。

而與之相反的另一種情況是,你的員工每天忙忙碌碌,加班處理問題,好幾次重大問題都及時有效地解決了,避免造成更重大的損失。你是不是感覺這招人的錢花的還比較值,甚至年終還想發(fā)點(diǎn)錢鼓勵他再接再厲。

轉(zhuǎn)到價值觀積極的一面,如果你是個積極上進(jìn)(年少無知)的 DBA,每天應(yīng)該怎么安排自己的工作呢?

其實(shí)和運(yùn)維相關(guān)的工作,性質(zhì)都差不多,不管是運(yùn)維 DBA、主機(jī)工程師或網(wǎng)絡(luò)管理員。說到運(yùn)維,就一定要說一下墨菲定律(Murphy’s Law),放在運(yùn)維領(lǐng)域簡直太有用了。

墨菲定律主要包括以下四方面:

  • 任何事都沒有表面看起來那么簡單
  • 所有的事都會比你預(yù)計的時間長
  • 會出錯的事總會出錯
  • 如果你擔(dān)心某種情況發(fā)生,那么它就更有可能發(fā)生

對應(yīng)到運(yùn)維領(lǐng)域就是:

  • 簡單的小問題,可能是某個喪心病狂的程序員的大 Bug,一旦忽視,就可能把你盡心維護(hù)的數(shù)據(jù)庫搞崩;
  • 備份恢復(fù)的時間,永遠(yuǎn)都超過你所估計的時間;
  • 高危操作通常都會出事(普通操作一樣有風(fēng)險);
  • 如果你擔(dān)心庫掛了沒有備份恢復(fù),那么備份大概率不能用。

相應(yīng)的應(yīng)對措施則是:

  • 刨根求底,每個小問題都搞清楚,不放棄任何隱患;
  • 把計劃時間乘以 10,能多長就多長(把泡茶、抽煙、上廁所也算在內(nèi));
  • 提前做好預(yù)案的預(yù)案,提前為某個操作失敗想辦法;
  • 每天檢查備份,條件運(yùn)行多備幾份,反正存儲不花自己的錢。

將以上四點(diǎn)貫徹到底,你就擁有了無比充實(shí)(累死累活)的運(yùn)維 DBA 的一天。當(dāng)然事情也不是絕對,以上大部分內(nèi)容都是在討論傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,如 Oracle、MySQL、PostgreSQL 等,對于其它的諸如 InfluxDB、TDengine、TiDB 等新興數(shù)據(jù)庫就又另當(dāng)別論了。

以 TDengine 為例(當(dāng)然這種安裝包不到 100 MB 的 Database 通常是不配擁有專屬 DBA 的):

  • 安裝步驟不到三步
  • 運(yùn)維命令不超過 50 個
  • 參數(shù)不到 100 個

DBA 除了升級、重啟,貌似就沒啥工作可干了。

DBA 的發(fā)展已經(jīng)沒前途了嗎?

分享人:濤思數(shù)據(jù)交付工程師 董延瓊

如果篤定地說數(shù)據(jù)庫 DBA 沒有前途,那可能有些武斷了。但某些 DBA 的前途確實(shí)渺茫了,比如 DB2 和 Sybase 的 DBA 們。可能有的小伙伴不太了解這兩個產(chǎn)品,要知道,DB2 當(dāng)年的風(fēng)頭還在 Oracle 之上。不禁要緬懷一句,“舞榭歌臺,風(fēng)流總被,雨打風(fēng)吹去”。

至于數(shù)據(jù)庫 DBA 這個新興的小鮮肉,說不定哪天也會被掃進(jìn)歷史的垃圾堆。但還不是現(xiàn)在。

我們隨便打開一個招聘網(wǎng)站,輸入 DBA 就可以看到招聘的職位,薪資范圍在 15~60K 之間,看起來還是蠻誘人的。

TDengine Database

從涉及的數(shù)據(jù)庫產(chǎn)品來看,主要以 Oracle、MySQL、PostgreSQL 為主。僅從招聘信息來看,數(shù)據(jù)庫 DBA 的“錢途”還是有的。但在這個“盛世”下,有人還在擔(dān)心數(shù)據(jù)庫 DBA 的未來發(fā)展,不過也是有跡可循的。

2018 年,Oracle 推出了全球首款,也是唯一一款自治數(shù)據(jù)倉庫——Oracle Autonomous Database Warehouse ,它可以用更低的成本為客戶提供更高的性能、可用性和安全性,帶來現(xiàn)代化的云端體驗(yàn),為全面迎接自治時代成功奠基。

“自治(Autonomous)”是云技術(shù)的一個跨越,它不僅可以在無需人工干預(yù)的情況下,對業(yè)務(wù)運(yùn)行的設(shè)施進(jìn)行自動更新、調(diào)整和修復(fù),還能幫助企業(yè)節(jié)約管理成本、快速部署項目并顯著降低風(fēng)險,為企業(yè)客戶帶來全新的上云體驗(yàn)。這意味著 Oracle 已經(jīng)開始搶它自己 DBA 的飯碗了。

不止是 Oracle 這種老牌數(shù)據(jù)庫廠商,新的數(shù)據(jù)庫廠商其實(shí)也在進(jìn)行運(yùn)維革命了。新興的時序數(shù)據(jù)庫 TDengine 在其官網(wǎng)首頁中描述產(chǎn)品的特性時,提到了零管理:安裝、集群幾秒搞定,無任何依賴,不用分庫分表,系統(tǒng)運(yùn)行狀態(tài)監(jiān)測能與 Grafana 或其他運(yùn)維工具無縫集成。不論技術(shù)上如何實(shí)現(xiàn),至少在理論上,已經(jīng)致力于盡力減少運(yùn)維工作了。

TDengine Database

我記得之前上 MBA 時,老師組織過一場討論,論題是 AI 會不會取代大部分人類工作。我當(dāng)時的觀點(diǎn)很明確,會的,因?yàn)檫@就是我們研究 AI 的目的。

最開始入職 IT 行業(yè)時,搞定一個系統(tǒng)上線是個非常復(fù)雜的工作,需要先將服務(wù)器上架,再安裝相應(yīng)的操作系統(tǒng),還要配置網(wǎng)絡(luò)、連接存儲,隨便搞搞就要一周的時間。發(fā)展到現(xiàn)在,阿里云從下單到開通不到十分鐘,整個過程中的主機(jī)工程師、網(wǎng)絡(luò)工程師、存儲工程師等古早職業(yè)都消失了。

要知道,阿里云不止有云主機(jī),還有云數(shù)據(jù)庫,你不需要再關(guān)心底層架構(gòu),只有付錢就可以了,甚至不需要進(jìn)行維護(hù),最多關(guān)心一下磁盤是否夠用,DBA 的工作就這樣被極大地簡化了。如果從這個角度來看,數(shù)據(jù)庫 DBA 的前途確實(shí)堪憂了。

那么已經(jīng)是 DBA 的同學(xué),或是剛成為 DBA 的同學(xué)應(yīng)該怎么辦呢?不論任何職業(yè),只要不想被淘汰,那就必須讓自己做的工作成為不可取代的那部分。

那 DBA 有哪些工作是很難取代的呢?我們先來梳理一下 DBA 的工作內(nèi)容

  1. 業(yè)務(wù)建模:根據(jù)業(yè)務(wù)場景,設(shè)計庫和表結(jié)構(gòu)
  2. SQL 優(yōu)化:對業(yè)務(wù) SQL 進(jìn)行優(yōu)化,提升效率
  3. 安裝部署:部署數(shù)據(jù)庫產(chǎn)品
  4. 系統(tǒng)調(diào)優(yōu):調(diào)整數(shù)據(jù)庫參數(shù),優(yōu)化性能
  5. 應(yīng)急處理:處理緊急問題,如數(shù)據(jù)庫故障、數(shù)據(jù)誤刪除
  6. 備份恢復(fù):不需解釋

對于以上工作內(nèi)容,第 3、4 項在云環(huán)境里已經(jīng)沒什么意義了;而第 2 項,對于擁有高級解析器的數(shù)據(jù)庫產(chǎn)品,如 Oracle 來說,也沒什么必要了;第 6 項完全看實(shí)際需要,簡單的備份恢復(fù)自動化就可以完成,更定制化的則需要人工干預(yù)。

那么現(xiàn)在來看,就只剩下了第 1、5 項工作必須要人工來完成了。每個系統(tǒng)所對應(yīng)的業(yè)務(wù)場景都是獨(dú)一無二的,并不存在一個“包打天下”的統(tǒng)一的建模方式,從這個角度來說,快速熟悉業(yè)務(wù)場景是 DBA 至關(guān)重要的能力。

只要是 IT 系統(tǒng),不管設(shè)計的多么智能,都可能會出現(xiàn) Bug。能夠深入了解產(chǎn)品、快速應(yīng)對意外情況、及時提出解決方案的 DBA ,在此時就是最稀缺的。

綜上所述,雖然目前數(shù)據(jù)庫 DBA 的前途和“錢途”都還是有的,但也不能盲目樂觀,還要不斷提升自己才不會被淘汰掉,追趕我們的不止是技術(shù),還有“后浪”。

想做好時序數(shù)據(jù)庫 DBA,需要具備哪些能力?

分享人:濤思數(shù)據(jù)交付工程師 肖波

想勝任 DBA 這個職業(yè),應(yīng)該具備哪些必備能力?大家討論的比較多的大都是關(guān)系型數(shù)據(jù)庫的 DBA ,下面我會從時序數(shù)據(jù)庫角度來談下個人觀點(diǎn)。

  • 持續(xù)學(xué)習(xí)的能力

時序數(shù)據(jù)庫是一個新的方向,它采用的技術(shù)架構(gòu)普遍與關(guān)系庫不同。例如,在數(shù)據(jù)索引結(jié)構(gòu)的選擇上,關(guān)系型數(shù)據(jù)庫大多采用 B+ 樹,時序數(shù)據(jù)庫則多采用 LSM 樹;而且結(jié)合時序數(shù)據(jù)的特點(diǎn),時序數(shù)據(jù)庫多采用列式存儲方式。

以 TDengine 為例,它采用就是 LSM 樹,加上列式存儲、一個設(shè)備一張表的設(shè)計,在應(yīng)對物聯(lián)網(wǎng)時序數(shù)據(jù)的場景時就會很有優(yōu)勢。如果你還停留在 B+ 樹的語境里,那將很難理解這種設(shè)計的優(yōu)勢和特點(diǎn),高效運(yùn)維自然無從談起。這種技術(shù)架構(gòu)的差異導(dǎo)致技術(shù)實(shí)現(xiàn)也會有很大不同,DBA 只有不斷學(xué)習(xí),才能掌握關(guān)鍵點(diǎn),做好本職工作。

  • 對計算機(jī)系統(tǒng)深入理解

目前數(shù)據(jù)庫系統(tǒng)大多運(yùn)行于 Linux 系統(tǒng)上,一個合格的 DBA 不能只滿足于對計算機(jī)系統(tǒng)的一般性認(rèn)識,還需要深入了解系統(tǒng)的工作原理,對內(nèi)存分配回收、進(jìn)程調(diào)度、網(wǎng)絡(luò)管理等都要有深刻的理解,對如何分析、定位操作系統(tǒng)問題也要有深刻認(rèn)識。只有做到這些,才能迅速定性、定位實(shí)際工作中遇到的問題。

  • 深入了解存儲系統(tǒng)

目前的時序數(shù)據(jù)庫大多采用分布式架構(gòu),在分布式架構(gòu)下如何保證數(shù)據(jù)的一致性、特別是海量數(shù)據(jù)的一致性是一個特別大的挑戰(zhàn)。傳統(tǒng)大數(shù)據(jù)平臺有利用 HBase 作為存儲系統(tǒng)的,新一代的時序數(shù)據(jù)庫有自研存儲系統(tǒng)的,也有采用開源的分布式存儲系統(tǒng)作為存儲方案的。作為一個 DBA,確保數(shù)據(jù)安全是最重要的工作,這就要求你必須深入了解所使用的數(shù)據(jù)庫的存儲架構(gòu),才能制訂出合理的數(shù)據(jù)備份、恢復(fù)、災(zāi)備方案。

  • 熟悉主流高級語言的數(shù)據(jù)庫接口及框架

時序數(shù)據(jù)庫的寫入吞吐一般比關(guān)系型數(shù)據(jù)庫要高若干個數(shù)量級,一般后者每秒寫入數(shù)百條記錄就算不少了,但時序數(shù)據(jù)庫每秒寫入經(jīng)常要達(dá)到幾十萬,甚至數(shù)百萬條記錄。聚焦寫入問題上,除了數(shù)據(jù)庫本身的性能調(diào)優(yōu),還涉及到各語言連接器、框架的使用方法是否正確。要想成為合格的時序數(shù)據(jù)庫 DBA,你需要對連接器、框架非常了解。

當(dāng)然,除了寫入,查詢是另一個重點(diǎn)。調(diào)優(yōu)時序數(shù)據(jù)庫的查詢性能,除優(yōu)化本身參數(shù)外,對主流語言框架如何構(gòu)造查詢語句也要有深入了解,這會大大縮短很多復(fù)雜查詢問題的定位時間。

  • 對數(shù)量級的敏感

隨著各行業(yè)的不斷發(fā)展,海量的數(shù)據(jù)寫入、讀出帶來的問題和挑戰(zhàn)比起從前更加頻發(fā),定性問題的關(guān)鍵是需要 DBA 對數(shù)量級有超過一般人的敏感度。除了 CPU 負(fù)荷外,磁盤吞吐量、IOPS、網(wǎng)絡(luò)吞吐、PPS、隊列長度深度、各類耗時等都需要 DBA 反復(fù)不停地比較、計算,直到找到問題的主要原因。對數(shù)量級的高敏感度可以大大減少問題定性、分析時間。

除了上述的能力加持外,DBA 最重要也最基礎(chǔ)的能力其實(shí)是——基礎(chǔ)知識牢固、邏輯分析能力強(qiáng)、思維清晰。很多人認(rèn)為有 Oracle 的認(rèn)證、微軟的認(rèn)證很重要,我覺得那只能證明他曾經(jīng)具有一定的學(xué)習(xí)能力。一個 DBA 的能力強(qiáng)弱,具體體現(xiàn)在他定位、解決一個問題的速度,這里面除了經(jīng)驗(yàn)以外,扎實(shí)的基礎(chǔ)知識、良好的訓(xùn)練、科學(xué)的分析方法論才是可靠的“屠龍刀”。

寫在最后

如果你有志于成為一名時序數(shù)據(jù)庫 DBA,那你一定不能錯過 8 月 13 日我們在北京·昆泰嘉瑞文化中心舉辦的「TDengine 開發(fā)者大會」,本次會議上不僅會有多位基礎(chǔ)軟件領(lǐng)域知名大咖貢獻(xiàn)精彩演講與趨勢解讀,還會有金融、車聯(lián)網(wǎng)等行業(yè)知名企業(yè)分享數(shù)據(jù)架構(gòu)升級經(jīng)驗(yàn)。此外,TDengine 3.0 版本也將重磅發(fā)布,核心研發(fā)人員將首次對外分享創(chuàng)新思路,進(jìn)一步加深你對時序數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)和架構(gòu)創(chuàng)新的思考。

]]>
從“化學(xué)家”到開發(fā)者,從甲骨文到TDengine,我人生的兩次重要抉擇 http://www.fjzmyy.cn/figure/10258.html Thu, 09 Jun 2022 02:37:20 +0000 http://www.fjzmyy.cn/?p=10258 作者 | 爾悅

采訪嘉賓 | 張瑋絢(Wade)

小T導(dǎo)讀:在去年 11 月,曾在甲骨文北京研發(fā)中心核心開發(fā)團(tuán)隊任職的張瑋絢(Wade)轉(zhuǎn)身成為了濤思數(shù)據(jù)的一員,負(fù)責(zé) TDengine 的研發(fā)管理工作。在即將進(jìn)入 45 歲之際,他毅然選擇了轉(zhuǎn)換賽道,重燃少年時期的冒險精神。從 90 分完美主義出發(fā),他希望未來自己能夠和團(tuán)隊一起將 TDengine 打造成為時序數(shù)據(jù)庫的代名詞。本文中 Wade 將會闡述轉(zhuǎn)換賽道的心路歷程,分享自己的人生和職場經(jīng)驗(yàn),給到有需要的人一些參考。

從“化學(xué)家”到“開發(fā)者”,叛逆學(xué)霸的自學(xué)之路

和大多數(shù)人不一樣,Wade 的初中時代并沒有在學(xué)校度過,而是選擇了在家中自學(xué)。至于為什么做出這樣的選擇,用他自己的話說就是“上課真的很無聊”,寥寥數(shù)語勾勒出了一個叛逆的少年形象。

“除了一直是短板的英語,我從初中開始基本所有課程都是自學(xué)的,包括大學(xué)的高等數(shù)學(xué)、線性代數(shù)、概率論、數(shù)理統(tǒng)計、模擬電路和數(shù)字電路等,以及計算機(jī)系的課程,像數(shù)據(jù)結(jié)構(gòu)、匯編語言、操作系統(tǒng)等等都是自學(xué),不愛上課這個習(xí)慣也伴隨了我半生?!?

和普遍意義上的叛逆少年不一樣,準(zhǔn)確一點(diǎn)來說, Wade 更應(yīng)該被稱為一個叛逆的學(xué)霸。在他的前半生里,因?yàn)榕涯娴男愿?,“自學(xué)”成為了他的一種習(xí)慣,但這種學(xué)習(xí)方式卻并沒有成為他的負(fù)擔(dān),反而推動著他在不斷進(jìn)步——不僅在自學(xué)半年初中課程之后就考上了讓自己心儀的高中,更是通過努力,讓自己的短板學(xué)科英語也在半年時間內(nèi)從 8 分考到了 82 分。升入高中之后,各種物理化學(xué)競賽的獎項也是手到擒來。

脫離了照本宣科,Wade 的學(xué)習(xí)動力更多時候源自興趣推動。少年的他夢想是成為一名名副其實(shí)的化學(xué)家,也因此他在進(jìn)入大學(xué)時優(yōu)先選擇了化學(xué)專業(yè),隨后卻發(fā)現(xiàn)和自己想象中相差甚遠(yuǎn),機(jī)緣巧合下他接觸了計算機(jī)基礎(chǔ)課并學(xué)習(xí)了 FORTRAN 語言編程,彼時的心情好像是哥倫布發(fā)現(xiàn)了美洲新大陸,興趣和熱情也在悄然間發(fā)生轉(zhuǎn)移。在本科階段,Wade 自學(xué)了計算機(jī)系的基礎(chǔ)課程,本科畢業(yè)后成功考進(jìn)了清華大學(xué)計算機(jī)系統(tǒng)結(jié)構(gòu)專業(yè)繼續(xù)讀研,在專業(yè)上,徹底從一名“化學(xué)家”轉(zhuǎn)為了一名“開發(fā)者”。

斗轉(zhuǎn)星移間,少年時期的特立獨(dú)行逐漸被掩蓋在時間洪流中,在接下來的十余年職場生涯里,Wade 成為了一名越發(fā)成熟的開發(fā)者乃至是管理者——他發(fā)現(xiàn)過 HP-UX 操作系統(tǒng)的 Bug、Solaris 上 C++ 編譯器的 Bug(那時候開源軟件還只是個傳說,這些操作系統(tǒng)級別的產(chǎn)品都只能由各個廠商的相應(yīng)部門解決),做過不少架構(gòu)設(shè)計、開發(fā)、性能分析方面的工作,比較擅長寫 Functional Spec……從 EMC 到騰訊再到甲骨文,Wade 的開發(fā)和職場經(jīng)歷越來越豐富。

“我一直是做基礎(chǔ)軟件的,對基礎(chǔ)軟件有一種說不清道不明的感情,曾經(jīng)我也嘗試過在兩家企業(yè)做應(yīng)用和解決方案團(tuán)隊的負(fù)責(zé)人,但總是提不起熱情。在我此前的工作中,經(jīng)常會和數(shù)據(jù)庫產(chǎn)品打交道,也了解過時序數(shù)據(jù)庫這個領(lǐng)域。進(jìn)入中年之后,我一直想要尋找到一個能夠重燃自身冒險精神的工作,在接觸到 TDengine 時,我覺得自己找到了。

45 歲轉(zhuǎn)換賽道,想把 TDengine 打造成時序數(shù)據(jù)庫的代名詞

在即將進(jìn)入 45 歲之際,Wade 選擇加入了濤思數(shù)據(jù),負(fù)責(zé) TDengine 的研發(fā)管理工作。在做出這一決定之前,他從產(chǎn)品、團(tuán)隊、賽道三個方面進(jìn)行了調(diào)研分析。

從產(chǎn)品層面來說,作為 Wade 曾經(jīng)接觸和試用過的一款數(shù)據(jù)庫產(chǎn)品,TDengine 輕巧的安裝包、超群的數(shù)據(jù)插入速度和存儲查詢性能給了他非常深刻的印象。但相比于產(chǎn)品,從一個管理者的角度來說,一個高素質(zhì)的團(tuán)隊能夠更吸引他的加入,而想要打造一個高水平的團(tuán)隊、注重產(chǎn)品和技術(shù)的企業(yè)文化,又和公司創(chuàng)始人密不可分,而 Wade 此前對 Jeff(濤思數(shù)據(jù)創(chuàng)始人陶建輝)也早有耳聞,認(rèn)為他是一個極具極客精神且充滿創(chuàng)業(yè)熱情的人。

除此之外,一個成熟的職場人在選擇職場方向時,賽道是否具備可持續(xù)發(fā)展的潛力也是關(guān)注點(diǎn)之一。在 Wade 看來,時序數(shù)據(jù)庫比關(guān)系數(shù)據(jù)庫或者說強(qiáng)一致事務(wù)數(shù)據(jù)庫的門檻要更低一些,在這個賽道上成功的概率顯然要更大一些。但門檻略低也不等于就容易做好,入行容易拔尖難,想要在一個行業(yè)中嶄露頭角,產(chǎn)品力還是根本,產(chǎn)品的應(yīng)用化落地同樣關(guān)鍵,而這兩點(diǎn)也一直都是 TDengine 在著重發(fā)力的發(fā)展方向。

在加入 TDengine 之后,Wade 充分利用著自己以往的開發(fā)和管理經(jīng)驗(yàn),為 TDengine 注入新的活力。他認(rèn)為產(chǎn)品真正成功的標(biāo)準(zhǔn)是成為某個領(lǐng)域的代名詞,就像提到辦公軟件大家都會想起 Office一樣,他希望TDengine也能被打造成一個真正成功的產(chǎn)品,成為時序數(shù)據(jù)庫的代名詞。

“從產(chǎn)品角度來講,我會努力讓 TDengine 各種功能更加均衡。我一直認(rèn)為最終能夠在市場上生存下來的一定是沒有明顯短板的產(chǎn)品,在有些方面很好而有些方面很差的產(chǎn)品是很危險的,我希望 TDengine 能成為中庸而絕不平庸的數(shù)據(jù)庫?!?

“從管理角度來講,我的目標(biāo)是能夠把研發(fā)隊伍的產(chǎn)出最大化。這個產(chǎn)出并不是指量,而是指有質(zhì)量的產(chǎn)出。我也希望這個目標(biāo)能通過優(yōu)化效率來實(shí)現(xiàn),而非以強(qiáng)制加班等手段去達(dá)成。而優(yōu)化效率又會涉及到很多方向,比如產(chǎn)品方向的把握、項目風(fēng)險的控制、無效需求的甄別、任務(wù)優(yōu)先級的判斷、短期利益與長期利益的權(quán)衡等等。”

與此同時,Wade 也在帶領(lǐng)團(tuán)隊努力突破 TDengine 3.0 的研發(fā)關(guān)口,3.0版本的研發(fā)成功將助力 TDengine 邁上一個新的臺階。“在 TDengine 3.0 版本中,我們在集群設(shè)計、預(yù)計算、流計算、數(shù)據(jù)安全性和容錯能力等方面都做了很多優(yōu)化,將在今年下半年跟大家見面,敬請期待。”

90 分主義者的自我管理之道

回顧 Wade 的求學(xué)時代,如果我們扒開浮于表面的“叛逆”和“聰慧”,就會發(fā)現(xiàn)隱藏在更深層次上的自我鞭策力量,而這個力量在他人生的各個階段都發(fā)揮出了不可小覷的作用。

“一直以來,我對自己的要求就是要努力成為 90 分主義者,而這需要一定程度的自驅(qū)力以及自我強(qiáng)迫才能夠達(dá)成,要讓習(xí)慣成為自然、自然成為意識、意識成為本能。我個人的觀點(diǎn)是如果一個人總是能把自己不斷遇到的挑戰(zhàn)在合理成本下完成到 90 分,那么他是可以在個人專業(yè)和能力所能觸摸到的任何細(xì)分領(lǐng)域都能有所成就的?!?

進(jìn)入職場后,Wade 仍然是一名 90 分主義者。在個人的發(fā)展軌跡中,他一直是一個混合角色的管理者:產(chǎn)品經(jīng)理、架構(gòu)師兼管理。而從他的認(rèn)知來講,純粹的管理不僅非常無聊,而且也不可能做好,好的管理一定要深入到產(chǎn)品中。

如今 Wade 已經(jīng)步入 45 歲門檻,是一個不折不扣的“大齡程序員”,對當(dāng)下職場中彌漫著的 35+ 大齡焦慮,以“過來人”的角度,他也有一些不一樣的經(jīng)驗(yàn)和見解。

相對于年輕人,35+的程序員面臨的頭號敵人并不是能力變差,也并非不能加班吃苦,而是在于心態(tài)的改變。隨著年齡的漸長,他們的抱負(fù)心會減弱,說的直白一點(diǎn),就是缺乏血性、沖勁和闖勁,要努力克服這種年齡帶來的心態(tài)變化。想要解決,我們就要強(qiáng)迫自己做有深度的事情,盡量讓自己能人所不能?!?

除此之外,他還認(rèn)為在基礎(chǔ)軟件與 2B 賽道中 35+ 瓶頸是可以不攻自破的,這也是他一直堅持深扎于此的原因之一。“開源軟件的大發(fā)展導(dǎo)致的一個結(jié)果就是極大降低了應(yīng)用軟件與解決方案的開發(fā)者門檻,在門檻較低的行業(yè)里,初出茅廬的年輕人自然是優(yōu)選。35+ 的程序員要盡量選擇門檻高的行業(yè),基礎(chǔ)軟件和 2B 是兩個很好的方向。”

對于一些處于迷茫且有轉(zhuǎn)換賽道想法的開發(fā)者,如果你也有興趣進(jìn)入到數(shù)據(jù)庫領(lǐng)域,Wade 也給出了他所總結(jié)的方法論和所需能力。

“在進(jìn)入一個比較新的賽道時,我們首先要不求甚解,抓大放小,優(yōu)先理解整個架構(gòu);然后再逐步‘求甚解’,針對一個個細(xì)分領(lǐng)域的細(xì)節(jié)進(jìn)行琢磨和分析。圍繞著衡量基礎(chǔ)軟件好壞的穩(wěn)定性、可擴(kuò)展性等重要指標(biāo),我們需要具備的基本能力除了扎實(shí)的數(shù)據(jù)結(jié)構(gòu)和編程基本功,還要有一定的性能分析基礎(chǔ)(I/O、Memory、CPU),以方便自己能夠清晰地判斷出所寫代碼在哪些方面可能會成為瓶頸;具有一定的分布式系統(tǒng)和多任務(wù)并發(fā)系統(tǒng)開發(fā)經(jīng)驗(yàn),以便清楚判斷出什么地方可能出問題,能夠提前規(guī)避或解決問題;有一定的系統(tǒng)架構(gòu)設(shè)計和分析能力,便于在設(shè)計方案時進(jìn)行橫向和縱向擴(kuò)展?!?

在 Wade 的前半生中,他進(jìn)行了兩次方向的轉(zhuǎn)變,從“化學(xué)家”到“開發(fā)者”,從數(shù)據(jù)庫的使用者到研發(fā)管理,他在明確自身需求后總是會毅然決然調(diào)轉(zhuǎn)方向,以 90 分主義的拼搏和努力向未知的未來沖刺。但或許也正因如此,他才真正做到了不辜負(fù)每一次選擇。

]]>
5 年前他的一個設(shè)計思路,讓 TDengine 時間壓縮提升近 50 倍 http://www.fjzmyy.cn/figure/10061.html Thu, 02 Jun 2022 02:47:32 +0000 http://www.fjzmyy.cn/?p=10061 作者 | 爾悅

采訪嘉賓 | 廖浩均

小 T 導(dǎo)讀:作為創(chuàng)始團(tuán)隊成員之一,廖浩均在 2017 年就正式加入了濤思數(shù)據(jù),彼時整個團(tuán)隊才不過寥寥五個人,TDengine 也才誕生不久。作為一位畢業(yè)于中科院計算所的計算機(jī)應(yīng)用技術(shù)專業(yè)博士,廖浩均為什么會決定從一家穩(wěn)定的上市企業(yè)轉(zhuǎn)移陣地到一家數(shù)據(jù)庫初創(chuàng)公司?在進(jìn)入濤思數(shù)據(jù)之后,他又見證和參與了 TDengine 的哪些改變與進(jìn)步?立足當(dāng)下展望未來,攜手 TDengine,他會如何走好接下來的路?在對廖浩均的采訪記錄中,這些問題的答案也已經(jīng)躍然紙上。

創(chuàng)始人“三顧茅廬”,博士“大佬”做出最終抉擇

作為一個學(xué)霸,廖浩均的學(xué)業(yè)生涯是比較順暢的,從北京師范大學(xué)信息管理與信息系統(tǒng)專業(yè)畢業(yè)后,他非常順利地就考取了中科院計算所(中科院研究生院)計算機(jī)應(yīng)用技術(shù)專業(yè)的碩士,接著一路綠燈開掛式地走完了博士學(xué)位。在畢業(yè)之際,因?yàn)樽杂X并不太擅長科研領(lǐng)域的工作內(nèi)容,他毅然而然決定進(jìn)入工業(yè)界就業(yè)。

但一向雷厲風(fēng)行的廖浩均卻在接受到濤思數(shù)據(jù)遞出的橄欖枝時猶豫再三,在 Jeff(濤思數(shù)據(jù)創(chuàng)始人陶建輝) 的“三顧茅廬”后才終于下定決心。

在正式加入濤思前,廖浩均在一家相對穩(wěn)定的上市企業(yè)中工作,按部就班的工作中沒有多少驚喜也沒有太多的波瀾,久而久之他便生出了換份工作的想法,而恰逢其時,通過讀書時期實(shí)驗(yàn)室?guī)熜值囊],他結(jié)識了正在進(jìn)行人生中第三次創(chuàng)業(yè)的 Jeff。提起來和 Jeff 的初次見面和溝通,廖浩均仍然記憶猶新。

“在和 Jeff 電話簡單聊過后,我打算去望京科技園實(shí)地拜訪,當(dāng)時覺得時序數(shù)據(jù)庫(Time-Series Database)這個方向還是很有意思的,Jeff 也是一個相當(dāng)充滿激情的人。但兩次交流后我仍然無法下定決心加入,主要來源于我對自己的顧慮,雖然我之前做過數(shù)據(jù)庫的相關(guān)工作,但是已經(jīng)有一段時間沒有接觸數(shù)據(jù)庫技術(shù)了,我有些擔(dān)心自己無法勝任?!?

帶著這種謙虛的態(tài)度,廖浩均決定要和 TDengine 這款產(chǎn)品再彼此多了解一些。在隨后幾次與 Jeff 更深度的溝通下,他逐漸為這位年近 50 卻仍舊奮斗在代碼創(chuàng)作第一線上的創(chuàng)始人的熱情和堅持折服,也為 TDengine 這款時序數(shù)據(jù)庫所深深吸引,同時也看到了物聯(lián)網(wǎng)、時序數(shù)據(jù)庫領(lǐng)域廣闊的市場機(jī)遇,他決定挑戰(zhàn)一下自己,抓住這次轉(zhuǎn)換賽道的機(jī)會。

“在與 Jeff 的面對面交流中,我更加深入地了解了 TDengine,也看到了 Jeff 的技術(shù)能力——做分布式通訊的專家開始跨界搞數(shù)據(jù)庫,而且居然使用不帶插件的 vim 編程。此外,我發(fā)現(xiàn)當(dāng)時的濤思數(shù)據(jù)雖然‘廟小’,但容納的‘大神’卻并不少,不僅有剛畢業(yè)的新銳海歸,還有工業(yè)數(shù)據(jù)庫領(lǐng)域的資深專家??偟膩碚f,打動我加入濤思數(shù)據(jù)的原因有三點(diǎn):Jeff 是一個很厲害的專家,他的工程能力和產(chǎn)品認(rèn)知的敏銳性在我認(rèn)識的人中無出其右;時序數(shù)據(jù)這個方向也很有前景;我自己應(yīng)該能夠勝任這個挑戰(zhàn)?!?

Jeff 的“窮追猛打”下,廖浩均心中沉寂已久的技術(shù)熱情又開始蠢蠢欲動了,最終他決心 All In 時序數(shù)據(jù)庫,而這個選擇的正確性也在后面幾年時間里得到了印證。

“其實(shí),在加入濤思之前,我并不是很了解時序數(shù)據(jù)庫這個細(xì)分領(lǐng)域中的產(chǎn)品。在2017年,時序數(shù)據(jù)庫這個概念對國內(nèi)的諸多用戶來說還是太前沿,但是萬物互聯(lián)和物聯(lián)網(wǎng)的迅猛發(fā)展確實(shí)都能切身體會到。一般來說,此前只有公交車、出租車等機(jī)動車上安裝有用于上傳車輛狀態(tài)和位置數(shù)據(jù)的專門設(shè)備,后來在智能穿戴設(shè)備、2017 年最火爆風(fēng)口‘共享單車’、自動駕駛等方向上都會產(chǎn)生大量的時序數(shù)據(jù)……毫無疑問,這些場景都在激發(fā)著時序數(shù)據(jù)應(yīng)用和管理的需求。按照這個趨勢發(fā)展下去,時序數(shù)據(jù)庫的發(fā)展勢不可擋,在我看來,這種直觀的感受和體驗(yàn)最有說服力?!?/p>

一個被申請了專利的設(shè)計思路,將時間壓縮提升近 50 倍

在加入濤思數(shù)據(jù)后,廖浩均主要負(fù)責(zé)查詢處理相關(guān)的工作,在讀書時他就接觸過大量空間數(shù)據(jù)相關(guān)的工作,研究領(lǐng)域主要集中在空間數(shù)據(jù)索引和查詢算法兩大方向上,因此在處理工作時也相對比較得心應(yīng)手。“我在入職兩三天后就上手了工作,做的第一件事就是增加 TDengine 的聚合查詢功能?!?

廖浩均的一個直觀感受是,在一個全新的設(shè)計理念下開展設(shè)計以及進(jìn)行工程開發(fā),沒有其他的任何可借鑒的實(shí)踐經(jīng)驗(yàn),真的非??简?yàn)技術(shù)人的思考能力和創(chuàng)造性。例如 TDengine 中的多表架構(gòu)設(shè)計,其最開始的形態(tài)是采用每個表順序查詢迭代來完成,后來發(fā)現(xiàn)這種方法效率太差,百萬級別的表查詢耗時都會達(dá)到小時級別。

“在某天下班前,我打算在服務(wù)器上跑一下剛完成的查詢代碼,結(jié)果等了快 10 分鐘還沒有出結(jié)果,后來發(fā)現(xiàn)查詢跑了 1 個多小時以后進(jìn)程掛起,最后結(jié)果也沒出來。當(dāng)時就頭大了,這種查詢效率根本沒法使用,可是怎么改卻沒有現(xiàn)成的思路,只能自己嘗試。后來憋了好幾天,迸發(fā)出的靈感也幫助我打造出了全新的處理邏輯,后面我將思路與 Jeff 簡單交流了一下,得到認(rèn)可后就開始動手調(diào)整代碼。調(diào)整后初步測試結(jié)果,就將時間壓縮到分鐘級別,提升近 50 多倍。隨著后續(xù)又進(jìn)行了一系列工程優(yōu)化方法,調(diào)整完成以后直接將時間壓縮到秒級。這是我印象中特別深刻的一件事?!?

在 TDengine 的發(fā)展史中,正是這個設(shè)計讓多表交互式查詢處理成為了可能,為 TDengine 能夠高效進(jìn)行查詢處理服務(wù)成功奠基。之后這個設(shè)計思路申請了 PCT 全球?qū)@Wo(hù),也成為廖浩均職業(yè)生涯中的又一個閃光點(diǎn)。

眾所周知,TDengine 還有一個核心技術(shù)創(chuàng)新點(diǎn)叫超級表,但其實(shí)在超級表的模型問世之前,其已經(jīng)有一套流程和邏輯了,在超級表模型確定后,廖浩均等人又開始針對 TDengine 的寫入、查詢、數(shù)據(jù)存儲等多個方面進(jìn)行調(diào)整和適配。

“由于 TDengine 是一款具有一定探索性的產(chǎn)品,其功能的邊界和定義并不是非常清楚明晰,因而在架構(gòu)設(shè)計上也很難面面俱到,并確保足夠的余量和擴(kuò)展性設(shè)計。如果前期沒有做好設(shè)計,后面增加功能的時候會面臨非常大的困難。架構(gòu)設(shè)計考慮得不完善,需要重構(gòu),但是又不可能大規(guī)模調(diào)整框架設(shè)計。只能采用小步快跑的方式,不停進(jìn)行代碼和設(shè)計架構(gòu)的小規(guī)模重構(gòu)和優(yōu)化工作,還要避免重構(gòu)工作引入新的 Bug?!?

在廖浩均的印象中,針對 TDengine 進(jìn)行開發(fā)和調(diào)試 Bug 時,為了定位處理代碼中的邏輯錯誤,就需要閱讀和分析大量的日志,在這一工作中,通過日志分析定位代碼中的邏輯錯誤問題是一個非常重要的能力。 “我們最長時間的一次日志分析斷斷續(xù)續(xù)花了 1 天半的時間,是分析一個服務(wù)器、客戶端之間的查詢?nèi)罩?,通過日志信息分析還原了 3 個線程之間的、對于一個內(nèi)存區(qū)的使用+線程調(diào)度問題處理中出現(xiàn)的 race condition。由于架構(gòu)設(shè)計的原因,需要使用的處理方式和處理技巧相對復(fù)雜,后來 Jeff 為 TDengine 增加了對象生命周期管理的模塊,才避免了后續(xù)繼續(xù)在這個問題上掉坑。在增加和完善消息交互的流程追蹤機(jī)制基礎(chǔ)上,從幾十 GB 的日志中撈出來所需的兩三行確定性關(guān)鍵日志成為了常規(guī)操作,同時十幾、二十分鐘就能快速定位出問題,給出錯誤原因并將錯誤場景還原?!?/p>

TDengine 從 0.x 到 3.0,他既是見證者也是建設(shè)者

作為濤思數(shù)據(jù)的“元老”之一,回顧 TDengine 的一路成長,廖浩均倍感榮耀和欣慰。

“一些朋友可能不太清楚 TDengine 是怎么孵化出超級表概念的,其實(shí)這一概念是 Jeff 在與網(wǎng)宿科技交流過程中碰撞出來的,當(dāng)時的數(shù)據(jù)庫領(lǐng)域中并沒有這樣一種設(shè)計,能夠解決需要創(chuàng)建很多表的場景(TDengine 的獨(dú)特設(shè)計要求每個設(shè)備有一個寫入表),表的模式一致,具體功能上既需要能夠單獨(dú)寫入、又需要實(shí)現(xiàn)通過一條 SQL 語句就能夠查詢?nèi)肯嗤J降谋怼S腥さ氖?,超級表的設(shè)計和整體邏輯是 Jeff 提出來的,但名字卻是我取的?!?

超級表的問世無疑給 TDengine 注入了滿滿生機(jī)和活力,也讓 TDengine 在后續(xù)的市場競爭中成功脫穎而出。

據(jù)廖浩均回憶,在剛剛加入時,TDengine 的架構(gòu)還非常簡單,也沒有太復(fù)雜的處理邏輯,只能進(jìn)行簡單的投影查詢。“當(dāng)時整個系統(tǒng)的基礎(chǔ)架構(gòu)以及核心組件,包括通訊模塊、消息隊列、事件驅(qū)動執(zhí)行模塊、SQL 解析、查詢執(zhí)行框架、Driver,這些基本上都是 Jeff 自己在幾個月時間內(nèi)完成的,由于人手和時間的原因,這套服務(wù)端查詢處理框架從 0.x 版本一直延用到 1.x 版本,在 2.0 版本中才進(jìn)行了較大規(guī)模的邏輯優(yōu)化和重構(gòu)。”

回顧 TDengine 從 0.x 到 2.x 的發(fā)展,廖浩均感慨頗多?!暗靡嬗?Jeff 對時序數(shù)據(jù)庫這一細(xì)分領(lǐng)域的前瞻性和洞察力,濤思在較早的階段就進(jìn)入其中,占領(lǐng)了一定的產(chǎn)品和市場先機(jī),但這距離我們想要把TDengine 打造成物聯(lián)網(wǎng)行業(yè)首選時序數(shù)據(jù)庫乃至全球化產(chǎn)品的目標(biāo)還相距甚遠(yuǎn),所以從 0.x 到 2.x,TDengine 也在不斷進(jìn)行技術(shù)創(chuàng)新和深耕?!?

TDengine 0.x 的版本基本上奠定了后續(xù)的技術(shù)基礎(chǔ),包括管理節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)、虛擬節(jié)點(diǎn)的設(shè)計和功能邊界、代碼實(shí)現(xiàn),消息通訊體系,分布式框架和元數(shù)據(jù)管理架構(gòu)等關(guān)鍵內(nèi)容,具備了基本的 SQL 操作能力和超級表模型,較完備的高性能數(shù)據(jù)寫入流程和緩存中數(shù)據(jù)組織機(jī)制、以及 WAL 設(shè)計,具有優(yōu)異讀寫性能的文件組設(shè)計,數(shù)據(jù)生命周期管理機(jī)制,以及日志模塊和參數(shù)管理模塊,還包括同步異步支持的 Driver 等。

在隨后的 1.x 版本中,TDengine 結(jié)合用戶的需求,加入了預(yù)計算功能、增加了亂序數(shù)據(jù)寫入能力,在 SQL 語法上進(jìn)行增強(qiáng),修復(fù)了系統(tǒng)整體上存在的大量問題并完善各模塊的功能,同時從 1.4 版本開始進(jìn)行開源,將核心代碼公開于 GitHub 上,在 GitHub 全球趨勢排行榜上多次霸榜,這一舉動也為 TDengine 帶來了更多技術(shù)關(guān)注。

“敢于開源代表著我們不懼外界的技術(shù)質(zhì)疑,同時開源也有助于我們更加直接快速地獲得用戶對于產(chǎn)品的反饋,加快產(chǎn)品演進(jìn)和研發(fā)速度。隨著開源力度的加大、引擎研發(fā)團(tuán)隊技術(shù)人員的增加以及團(tuán)隊自身經(jīng)驗(yàn)的積累,2.x 版本中我們進(jìn)行了更優(yōu)異的模塊化和重構(gòu)工作,對幾乎全部的功能組件進(jìn)行梳理和重構(gòu)。雖然在用戶層面能看到的功能增強(qiáng)和改善并不多,但是從產(chǎn)品角度來說,2.0 真的是 1.x 版本的一次脫胎換骨式的升級?!?

如今,距離 2.0 版本發(fā)布已經(jīng)過了兩年時間,為了讓用戶在使用體驗(yàn)上更加順滑,如廖浩均一般的濤思技術(shù)人也在加班加點(diǎn)地對 TDengine 進(jìn)行新一輪的優(yōu)化和迭代。在他們的努力和一眾用戶的支持下,2022 年下半年,3.0 版本也將如期而至,屆時 TDengine 將迎來進(jìn)一步升級和蛻變。

展望未來,攜手 TDengine 繼續(xù)前進(jìn)

回顧加入濤思數(shù)據(jù)的這些年,廖浩均表示最大的收獲就是結(jié)識了一群很優(yōu)秀的同事,大家為著共同的目標(biāo)而努力,是一件讓人很激動很興奮的事情。而他本人也在這個過程中受益匪淺,通過參與一套基礎(chǔ)軟件系統(tǒng)從 0 到 1 的開發(fā),不僅重塑了個人的知識體系,對于數(shù)據(jù)庫系統(tǒng)的理解達(dá)到了一個新的層次,也極大提升了數(shù)據(jù)庫相關(guān)的工程能力。

談及自身的下一步發(fā)展,他希望還能繼續(xù)深耕在時序數(shù)據(jù)庫領(lǐng)域,一是源于興趣,二是源于前景?!拔锫?lián)網(wǎng)時序數(shù)據(jù)領(lǐng)域還處于快速發(fā)展的階段,未來一定會有較大的發(fā)展空間,對于我自己來說,投身于這樣一個不斷發(fā)展的領(lǐng)域,也能鞭策著我不斷學(xué)習(xí)和進(jìn)步。只有脫離舒適區(qū),做有挑戰(zhàn)性的工作,才能讓能力提升這件事保持可持續(xù)性。如果你也對此感興趣,那開源社區(qū)是一個非常好的學(xué)習(xí)渠道,通過優(yōu)秀的開源項目,能夠?qū)W習(xí)到非常多的經(jīng)驗(yàn),歡迎你成為 TDengine 的貢獻(xiàn)者?!?

而談及 TDengine 的未來,他希望經(jīng)過時間的洗禮,TDengine 能夠發(fā)展成為一個具備開箱即用、高性能時序數(shù)據(jù)處理能力的重要軟件產(chǎn)品,涵蓋時序數(shù)據(jù)日常應(yīng)用中的重要場景所涉獵的功能,具備優(yōu)秀的伸縮能力、容錯能力、異構(gòu)環(huán)境部署能力以及面向用戶的功能擴(kuò)展。在數(shù)據(jù)中心和邊緣側(cè)具備同樣的便捷性、易用性的使用體驗(yàn),進(jìn)一步為用戶提供高性能、高效能、高可靠性、低成本的時序數(shù)據(jù)處理功能。

]]>
放棄保研和出國,投身基礎(chǔ)軟件,一位復(fù)旦學(xué)子的職業(yè)選擇 http://www.fjzmyy.cn/figure/7855.html Fri, 29 Apr 2022 08:55:11 +0000 http://www.fjzmyy.cn/?p=7855

我是劉繼聰,2020 年畢業(yè)于復(fù)旦計算機(jī)專業(yè),目前在濤思數(shù)據(jù)任職流計算引擎研發(fā)工程師。這篇文章是關(guān)于我過去這些年所做出選擇的復(fù)盤與回顧,我曾經(jīng)歷的迷茫與困惑——關(guān)于為什么放棄保研與出國、又為什么從如火如荼的 AI 轉(zhuǎn)做數(shù)據(jù)庫、以及為什么離開大廠加入 Startup 的故事。不知其中是否有與你相似的經(jīng)歷,你又能否從中獲得一些共鳴,希望能給到迷茫的人一些走出困境的靈感。

從物理轉(zhuǎn)入計算機(jī),困難、收獲與成長

和很多人一樣,我在進(jìn)入大學(xué)時對自己感興趣的專業(yè)并不清晰,從自然科學(xué)試驗(yàn)班分流進(jìn)入物理系一段時間后,我才決心調(diào)轉(zhuǎn)方向進(jìn)入計算機(jī)專業(yè)。

我和計算機(jī)結(jié)緣于物理系的一個項目——實(shí)驗(yàn)室設(shè)備管理系統(tǒng),需要完成的是 Web 與服務(wù)器相關(guān)的功能,我自己在網(wǎng)上找教程,用世界上最好的語言 PHP 寫出了人生中的第一版程序——一個 LAMP 架構(gòu)的 CRUD 系統(tǒng)。同時我選修了物理系的 C++ 課程,第一個相對較大的 C++ 項目就是這門課的期末項目,用經(jīng)典的蒙特卡洛方法做 Ising model 的模擬。

一來二去,我發(fā)現(xiàn)寫代碼比在物理實(shí)驗(yàn)室修設(shè)備更有趣,加之復(fù)旦還提供轉(zhuǎn)專業(yè)機(jī)會,就動了這個念頭。不過那時我已經(jīng)大二了,按照規(guī)定大二轉(zhuǎn)專業(yè)必須降一級,雖然在當(dāng)時看來代價很大,不過現(xiàn)在想來,這絕對是個正確的選擇。

話雖這么說,但在我剛轉(zhuǎn)入計算機(jī)系時,也屬實(shí)是被各路大神虐得體無完膚,甚至一度懷疑自己是不是做錯了決定。

當(dāng)時我所在的拔尖班的數(shù)據(jù)結(jié)構(gòu)課每周都會有機(jī)考打 OJ,OJ 和 LeetCode 有點(diǎn)像,但有一個典型的區(qū)別是,你只知道你的答案錯了,卻不知道有哪些測試數(shù)據(jù),更不知道錯在了什么數(shù)據(jù)上,所以 Debug 完全靠看代碼猜。一開始,我做機(jī)考經(jīng)常一分都拿不到,每周光是完成作業(yè)就幾乎要花掉我所有時間。為了獲得更好的成績,我有很多次寫代碼直到天明。但進(jìn)步是看得見的,慢慢地我能夠在每周機(jī)考上取得滿分,最后不僅這門課程我拿到了 A,績點(diǎn)也獲得了全系第一。

現(xiàn)在想來,我覺得這應(yīng)該是一個臺階,你需要拼盡全力才能登上去,但只要登上去就會看到不一樣的風(fēng)景。這段竭盡全力刷算法題的經(jīng)歷對我后來找實(shí)習(xí)、找工作也起到了非常大的幫助,基于此我才能夠在臨時起意、幾乎沒有什么準(zhǔn)備的情況下進(jìn)入字節(jié)跳動實(shí)習(xí)以及拿到各大廠的秋招 Offer。

拔尖班的好處是選擇的余地很多。除了數(shù)據(jù)庫課外,我還選修了分布式系統(tǒng)、數(shù)據(jù)挖掘、密碼學(xué)原理等課程。我和朋友們組隊一起做了很多有趣的項目,部署 Hadoop 與 Hive,分析不同任務(wù)中的性能瓶頸;使用 Spark 進(jìn)行分布式的計算;實(shí)現(xiàn)數(shù)據(jù)庫的塊嵌套循環(huán)連接,將執(zhí)行時間從十幾秒優(yōu)化到一秒以內(nèi)……

在復(fù)旦,我拿過各種各樣的獎勵,除了一等、二等、三等獎學(xué)金,還有數(shù)模競賽、物理學(xué)術(shù)競賽的國家一等獎和上海市一等獎、泛海學(xué)者、優(yōu)秀學(xué)生等等。在求學(xué)之路上,我遇到了很多優(yōu)秀的同學(xué)、名師以及挑戰(zhàn),也收獲了一路成長。

大學(xué)時的獲獎證書
大學(xué)時的獲獎證書

從 AI 到數(shù)據(jù)庫,關(guān)于科研、實(shí)習(xí)與方向的選擇

在研究領(lǐng)域上,我也并非一開始就關(guān)注數(shù)據(jù)庫,這其中還有一段曲折的摸索過程。

我進(jìn)入計算機(jī)系后,應(yīng)拔尖班要求加入了 NLP(自然語言處理)實(shí)驗(yàn)室。在大三上學(xué)期期末考試結(jié)束之后,我成為了字節(jié)跳動 AI Lab 的一名 NLP 實(shí)習(xí)生,做的是中文錯別字檢測的工作,實(shí)習(xí)結(jié)束后進(jìn)入港科大做暑期交流,嘗試做更深入的研究。在這么幾段短暫而又截然不同的 AI 研究經(jīng)歷中,雖然導(dǎo)師都是業(yè)界、學(xué)術(shù)界的大牛,但我卻沒有做出什么厲害的成果。

由此我產(chǎn)生了一些新的想法,要不要去做一些別的事情,或許我會覺得更有趣、也更能發(fā)揮我的長處,就像我從物理轉(zhuǎn)到計算機(jī)一樣。我把這些想法和在不同研究領(lǐng)域的朋友們交流了一下,之后一位做數(shù)據(jù)庫的同學(xué)引領(lǐng)我看到了另一個領(lǐng)域——Data Infra。接下來我成為了 TiDB 的貢獻(xiàn)者并開始系統(tǒng)性地學(xué)習(xí)分布式系統(tǒng)和數(shù)據(jù)庫,算是正式邁進(jìn)了數(shù)據(jù)庫的門檻。

但我在參加工作時卻并沒有直接進(jìn)入這個行業(yè)。臨近畢業(yè)季,我面臨著參與保研還是出國抑或是參加秋招的選擇。由于保研外校需要參加夏令營(但我那時在港科大交流),而本校又沒有特別合適的導(dǎo)師,于是我放棄了保研,趕上了秋招的末班車。我做了兩手準(zhǔn)備,即使沒有找到合適的工作,仍然可以申請出國,結(jié)果沒想到秋招超乎想象地順利,我拿到了參加面試的所有公司的 Offer:其中既有阿里、騰訊這類大廠,也有 PingCAP 這類創(chuàng)業(yè)公司。

在某互聯(lián)網(wǎng)大廠的終面中,我遇到了一位同樣復(fù)旦畢業(yè)、工作十多年的學(xué)長,他問我手上有哪些 Offer 以及傾向的選擇,我如實(shí)地回答了,并說我現(xiàn)在想去做數(shù)據(jù)庫。他不置可否,只是反問我:“年輕人都想去做些有技術(shù)的事情,我當(dāng)年也是。但去 Startup 做數(shù)據(jù)庫,你是否真的想好了?在未來好幾年,你可能都比你在互聯(lián)網(wǎng)大廠做業(yè)務(wù)的同學(xué)薪資更低,同時還要承擔(dān)更多不確定性的風(fēng)險,你真的能接受嗎?”

我真的想好了嗎?或許確實(shí)沒有。最終,我選擇了去阿里云,從事基礎(chǔ)架構(gòu)的工作,希望能取得一定的平衡。

疫情在那個冬天爆發(fā)、無法返校,畢業(yè)時只來得及和部分同學(xué)匆匆相聚又相別。上海到杭州的動車不過 49 分鐘的車程,恰如從學(xué)生到職場人的轉(zhuǎn)變,快得令人猝不及防。下一站,杭州阿里。

加入阿里后,榮耀、困惑與思考

或許是得益于我之前還算豐富的實(shí)習(xí)經(jīng)歷,又或許是我在學(xué)生時代就做了很多有挑戰(zhàn)的課程項目,我很快上手了新的工作內(nèi)容。第一個令我印象深刻的任務(wù),是我入職的第一個月,就解決了一個困擾了組內(nèi)技術(shù)專家們半年之久的問題。

背景是這樣的,我們有一個監(jiān)控系統(tǒng),監(jiān)控的探針直接安裝在客戶 ECS 上,客戶可能會購買很多 ECS,用 Kubernetes 或非 Kubernetes 的方式組成集群,我們要做的事就是抓取出集群內(nèi)的網(wǎng)絡(luò)拓?fù)潢P(guān)系,比如 TCP 連接,然后繪制成可視化的拓?fù)鋱D。與一般的分布式微服務(wù)相比它存在三個難點(diǎn):

  • 不對用戶的技術(shù)棧做假設(shè)的,Java、Python、PHP 都有可能
  • 要做無侵入的,不希望用戶改代碼
  • 要適配 Kubernetes、非 Kubernetes,還有各種 Linux 內(nèi)核版本

我們是通過輪詢/proc 目錄下的 TCP 文件來解決這些難點(diǎn),但無法保證抓取到全量數(shù)據(jù)。最好的解決方法是用當(dāng)時比較新的技術(shù) eBPF 來做,卻因?yàn)榻^大多數(shù)客戶環(huán)境不能很好地支持 eBPF 而難以落地。我花了一周業(yè)余時間做調(diào)研,發(fā)現(xiàn)一個內(nèi)核模塊 auditd 可以較好地解決這個問題,幾周時間后我們的新版探針上線了。這個半年無解的難題得到了解決,也成為我進(jìn)入職場之后第一件很有成就感的工作成果。

但逐漸地我發(fā)現(xiàn),組里的工作屬于典型的管控側(cè),管控側(cè)的麻煩是適配用戶各種各樣復(fù)雜的環(huán)境,但自身的核心能力、技術(shù)難度與挑戰(zhàn)都明顯弱于平臺側(cè),因此,我能挑戰(zhàn)的問題沒有想象中那么多,進(jìn)步的速度也漸趨緩慢,組里業(yè)務(wù)的發(fā)展?fàn)顩r也并不好。

為了排解工作的枯燥乏味,再加上做數(shù)據(jù)庫之心一直不死,我和朋友們一起參加了 PingCAP 2020 年的 Hackathon。我們選擇的題目是基于 Raft Log 來實(shí)現(xiàn)物化視圖,屬于改內(nèi)核的工作。在賽程中,我和小伙伴們通宵達(dá)旦地寫著代碼,調(diào)試與解決問題,這讓我感到了在工作中久違的快樂——寫代碼、解決難題與自身進(jìn)步的快樂。

經(jīng)此一役后我開始思考未來,在當(dāng)下的工作中雖然我得到了老板的信任、成為了一些項目的 Owner,或許會有按部就班的晉升,但這些毫無波瀾的人生軌跡也讓我越發(fā)感到工作中的枯燥乏味。我決定要離開,但為了避免重蹈覆轍,我必須要先確定好目標(biāo)。

從阿里到 Startup,重拾做數(shù)據(jù)庫的想法

我籌劃著兩條路——轉(zhuǎn)崗或跳槽。我開始和公司內(nèi)不同團(tuán)隊接觸,但是結(jié)果卻讓我失望:很多我以為做著內(nèi)核研發(fā)的部門卻實(shí)際上只做管控和寫控制臺;而另一些內(nèi)核部門,一整個組的 Scope 都小得令人失望;還有一些,并不歡迎校招新人轉(zhuǎn)崗……

而另一方面,整個 Data Infra 的環(huán)境卻在悄然改變。我身邊開始出現(xiàn)了一些令人振奮的聲音,比如:

“所有人都看好 DoorDash 這些明星 Pre-IPO,而 Snowflake 這類公司招人都很困難,但后來發(fā)現(xiàn)那些去了的人拿得是幾百萬刀的大包……”

“Snowflake 的發(fā)行價已經(jīng)上調(diào)了,上市當(dāng)天就暴漲了超過 100%……”

“Snowflake 的數(shù)據(jù)確實(shí)好:它的 NRR 是 173%,也就是說假設(shè)一個用戶去年在 Snowflake 上花費(fèi)了 1 美元,那么今年他將平均花費(fèi) 1.73 美元……”

“Confluent 上市、Databricks 大額融資……”

……


這時我才驚醒,當(dāng)時那位校招的終面官,有許多年工作經(jīng)驗(yàn)、在大廠管著幾百人的復(fù)旦學(xué)長所說的已經(jīng)不對了——去 Startup 做數(shù)據(jù)庫,已經(jīng)不再是一件需要靠情懷去支撐的事。隨著這個行業(yè)內(nèi)熱錢的涌入,很多有前景的 Startup 實(shí)現(xiàn)了大額融資。更關(guān)鍵的是,對于這類技術(shù)公司而言,技術(shù)人才是核心,因此他們愿意花錢、也給得起錢去和大廠搶人;而互聯(lián)網(wǎng)的 ToC 業(yè)務(wù)卻因流量見頂,發(fā)展前景反而沒那么樂觀。

經(jīng)過一段時間系統(tǒng)性的學(xué)習(xí)與研究,我認(rèn)為自己已經(jīng)準(zhǔn)備充分,我的首選目標(biāo)是做 TDengine Database 的濤思數(shù)據(jù)。原因有二:首先,TDengine 是開源的,在此之前,我已經(jīng)多次看到過 TDengine 登上 GitHub Trending 榜;我能夠直接去看代碼、通過實(shí)踐直接判斷它是否有真材實(shí)料。其次,通用 OLAP 雖然被炒得火熱,但競爭也非常激烈,或許不如從細(xì)分賽道入手,而細(xì)分賽道中時序數(shù)據(jù)庫與圖數(shù)據(jù)庫的增長是最為迅速的,我相信 IoT 設(shè)備會持續(xù)不斷增長,產(chǎn)出越來越多的數(shù)據(jù),我看好它的前景。


為了了解時序數(shù)據(jù)庫這個領(lǐng)域,我完整閱讀了 Jeff(濤思數(shù)據(jù)創(chuàng)始人陶建輝)所創(chuàng)作的“十大特點(diǎn)”、“架構(gòu)設(shè)計”等文章。在細(xì)分賽道中,只有靜下心來對問題進(jìn)行實(shí)實(shí)在在的建模與分析、對領(lǐng)域進(jìn)行深刻洞察,才能真正做出有核心且有競爭力的產(chǎn)品,在 Jeff 的文章中我切實(shí)體會到了。此外,濤思數(shù)據(jù)的招聘頁上醒目地寫著“超越 BAT 的薪資”,我認(rèn)同這樣的人才觀,想要招聘到優(yōu)質(zhì)人才,愿景與待遇缺一不可。

攜手 TDengine,我開始新的征程

在濤思的故事其實(shí)才剛剛開始。

2021 年 7 月,我正式加入濤思數(shù)據(jù),很快上手了數(shù)據(jù)庫內(nèi)核的研發(fā)工作。在轉(zhuǎn)正后的第一次季度總結(jié)時我拿到了“最佳新人獎”。

在TDengine獲得的最佳新人獎

現(xiàn)在,我在濤思數(shù)據(jù)負(fù)責(zé)流式計算引擎的研發(fā)。TDengine 2.0 中提供了連續(xù)查詢的能力,它本質(zhì)上是一個時間驅(qū)動的批處理,無法處理亂序數(shù)據(jù)的問題,且性能消耗很大。我的目標(biāo)是為現(xiàn)有的 TDengine 實(shí)現(xiàn)一個真正的流式計算引擎。

這項工作的 Scope 與挑戰(zhàn)遠(yuǎn)遠(yuǎn)超過了我之前的所有工作與項目。我一邊系統(tǒng)性地學(xué)習(xí)流式計算中 EOMP(Exactly Once Message Processing)、分布式快照等容錯理論,一邊研究 Kafka、Flink 的源碼與實(shí)現(xiàn)機(jī)制,一邊跟蹤 SIGMOD、VLDB、ICDE 等峰會中相關(guān)研究的最新進(jìn)展、了解 Railgun、Hazalcast Jet、Ray Streaming 這類新引擎的設(shè)計,同時關(guān)注著 Materialize、Decodable 這類流式 ETL 工具與 KsqlDB 這類流式數(shù)據(jù)庫的產(chǎn)品形態(tài)與定義。我時刻提醒自己必須要關(guān)注前沿技術(shù)與新玩家,因?yàn)槲也幌M鲆粋€在設(shè)計之初就落后于時代的東西。

以一套執(zhí)行引擎來融合 OLAP 的查詢與流式計算,我會用代碼來踐行我的想法,也期待著煥然一新的流式計算引擎,在今年下半年,隨著 TDengine 3.0 的發(fā)布,一同與大家見面。

寫在最后

在我過去的這些歲月中,得到了很多人的幫助,幫我找到新的方向與道路,讓我有勇氣和決心來接受新的挑戰(zhàn)。因此我也愿意分享出我的經(jīng)歷,或許能給你一些啟示與幫助。

比起盲目地埋頭苦干,我更相信“選擇”會對人生與職業(yè)發(fā)展產(chǎn)生更大的影響,這篇文章中復(fù)盤了我人生中幾個至關(guān)重要的選擇:從物理轉(zhuǎn)入計算機(jī)、從當(dāng)時如火如荼的 AI 轉(zhuǎn)做 Data Infra、放棄出國與保研加入阿里、從阿里離開加入濤思。當(dāng)然這些選擇的結(jié)果還遠(yuǎn)遠(yuǎn)沒有蓋棺定論,但至少現(xiàn)在來看正確與否也開始漸漸清晰了,我相信讀者們也會有自己的判斷。

]]>
從二十年開源經(jīng)歷出發(fā),70 后大齡程序員談成長、困境與突圍 http://www.fjzmyy.cn/figure/6519.html Wed, 09 Mar 2022 02:12:24 +0000 http://www.fjzmyy.cn/?p=6519

在新年前夕的全員總結(jié)大會上,濤思數(shù)據(jù)的一位 70 后研發(fā)老將收獲了一份名為“最具開源精神獎”的獎項,這不僅是對他在 2021 年基于 TDengine Database 所做出的開源貢獻(xiàn)的認(rèn)可,更是映射出其長久以來堅持走在開源路上的不變初心。作為老一輩開源人,桑樹多以資深的研發(fā)技術(shù)、樂于分享的精神、無處不傳播的毅力,真正踐行著開源人的使命。關(guān)于如何參與開源社區(qū)建設(shè)、如何打破 35+ 大齡程序員職場焦慮等當(dāng)下的熱點(diǎn)問題,他也沉淀下了自己的觀點(diǎn)和思考。

從 1998 到 2022,20 余年開源路上的堅持與熱愛

作為一名 70 后程序員,桑樹多與開源的故事最早可以追溯至 1998 年。彼時才從哈爾濱工業(yè)大學(xué)畢業(yè)不久的他進(jìn)入了一家科技公司,正式開啟了自己的代碼職場生涯,也打開了奇妙開源世界的大門。

從開始使用 Linux 桌面環(huán)境,到自己動手為新的硬件設(shè)備移植驅(qū)動軟件,再到后來陸續(xù)參與了 Linux Kernel、MeeGo、Ubuntu 等開源軟件的開發(fā),桑樹多的開源之路走得越來越深,與開源技術(shù)也結(jié)下了長達(dá) 20 余年的不解之緣。

圖為 2011 年桑樹多在 Portland Linux Kernel Developer Summit 上與 Linus Torvalds的合影
圖為 2011 年桑樹多(左)在 Portland Linux Kernel Developer Summit 上與 Linus Torvalds(右)的合影

“從 Red Hat Linux 5.0 開始,我接觸到開源,然后一步步從使用者成為愛好者,最后成為了一名貢獻(xiàn)者?;仡欉^往 20 年參與開源的經(jīng)歷,真的不得不感嘆一句受益良多。”

對于做開發(fā)的同學(xué)來說,“開源”這個概念并不陌生。近年來,伴隨著云計算、大數(shù)據(jù)、人工智能等數(shù)字技術(shù)的快速發(fā)展,開源模式的熱度也在不斷攀升,日漸成為數(shù)字技術(shù)創(chuàng)新和產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型的重要模式,開源軟件也成為了各大互聯(lián)網(wǎng)企業(yè)背后的支撐力量。

從科技發(fā)展的軌道來看,參與開源的重要性不言而喻,但仍然有很多開發(fā)者以工作繁忙等為理由來閉目塞聽。事實(shí)上,這并不是一件多么困難的事情,桑樹多用他的親身經(jīng)歷進(jìn)行了說明。

“你可以先成為使用者并積極參與社區(qū)討論,通過學(xué)習(xí)其他人解決問題的方法和代碼熟悉開源軟件的架構(gòu)和設(shè)計思想,再進(jìn)一步發(fā)展自己提交 Patch 和 PR 解決問題,成為 Contributor——在其他用戶遇到自己解決過的問題時主動幫助他人,在有能力時積極貢獻(xiàn)代碼?!?

“而對于開源小白來說,你可以從自身的技術(shù)興趣出發(fā)來選擇想要參與的開源方向,如果對數(shù)據(jù)庫感興趣,那 TDengine 就是一個非常適合上手學(xué)習(xí)的開源項目,如果是對消息隊列感興趣可以選擇 Kafka?!?/strong>

入門容易堅持卻難,我們不妨從桑樹多的經(jīng)歷中探尋一下堅持的理由。參與開源究竟給他帶來了什么?

從開發(fā)者到 Contributor,尋找參與開源的獲得感

開源究竟是什么?參與開源的意義又在哪里?

“簡單來說,開源的意義就是打破傳統(tǒng)軟件研發(fā)自上而下的研發(fā)模式,更多應(yīng)用自組織開發(fā)模式快速迭代打造精品軟件,如果你還想更加深入地從文化和理念的角度去理解開源,那可以學(xué)習(xí)一下《大教堂與集市》這本書?!?

作為一個資深的開源軟件開發(fā)者,桑樹多的開源經(jīng)歷也向我們展示了參與開源到底能夠帶來哪些改變和幫助。

“可以負(fù)責(zé)任地講,參與開源一定會增加自己的職場競爭力,因?yàn)檫@可以讓你更容易接觸到先進(jìn)的技術(shù),像 Linux Kernel 之類的很多開源軟件,代碼已經(jīng)經(jīng)過千錘百煉,通過閱讀這些代碼就可以學(xué)習(xí)其背后的設(shè)計思想。而且你還可以在開源社區(qū)內(nèi)進(jìn)行討論學(xué)習(xí),讓自己能夠更快地收獲成長。”

此外,桑樹多還認(rèn)為,如果能成為一名 Contributor,通過自己編寫的代碼給關(guān)注的開源軟件帶來提升,那將是一件非常有自豪感的事情。首先自身技術(shù)實(shí)力在專家 review 的環(huán)節(jié)可以得到他人的認(rèn)可;其次在 review 過程中進(jìn)行觀點(diǎn)交流也可以幫助自己學(xué)習(xí)他人的觀點(diǎn),發(fā)現(xiàn)自身的疏漏和不足;在有了一定經(jīng)驗(yàn)之后,你也可以去幫助別人 review 代碼,以此實(shí)現(xiàn)教學(xué)相長。

在這個過程中,桑樹多跟一些專家建立了深度聯(lián)系,也交到很多志同道合、熱愛開源、喜歡開發(fā)的朋友。由此可見,參與開源的獲得感是一種多維度的、從內(nèi)到外的提升,這不光體現(xiàn)在技術(shù)層面,在情感層面也能獲得滿足感。

“還有一個參與開源的好處,那就是方便‘跳槽’”。雖然聽起來不太正經(jīng),但是確實(shí)是一個行之有效的方法,因?yàn)楹芏喙镜?HR 或者獵頭都會通過開源項目來尋找一些有經(jīng)驗(yàn)的開發(fā)者,在開源這條路上越走越深也就意味著有越來越多的工作機(jī)會向你在招手。

閱讀到此,大家可能會有所好奇,桑樹多與濤思數(shù)據(jù)就是這么結(jié)緣的嗎?當(dāng)然沒有這么簡單,下文中將會為大家揭曉答案。

因開源結(jié)識 TDengine,他選擇為國產(chǎn)開源軟件添磚加瓦

2019 年中一次偶然的工作契機(jī),桑樹多成為了 TDengine Database 的 Contributor。可能是出于對一位 50 歲大齡程序員兩個月寫出一萬八千多行代碼的震驚和敬佩,也可能是因?yàn)閷a(chǎn)開源軟件投入了越來越多的關(guān)注,總之在種種原因的作用之下,不久后他選擇加入濤思數(shù)據(jù)。

當(dāng)我了解到年屆 50 的 Jeff(濤思數(shù)據(jù)創(chuàng)始人陶建輝)還在繼續(xù)寫程序,并且打造出 TDengine 這個產(chǎn)品的經(jīng)歷后,我就開始在 GitHub 上關(guān)注 TDengine,然后驚喜地發(fā)現(xiàn)中國的團(tuán)隊也能開發(fā)出精品開源軟件。在深入地了解下我越發(fā)覺得,TDengine 并不是一款被憑空創(chuàng)造的產(chǎn)品,而是真正地在解決現(xiàn)實(shí)中的實(shí)際問題,而且正是憑借這一點(diǎn),其用戶和市場規(guī)模也都在穩(wěn)步增長?!?

目前桑樹多在濤思數(shù)據(jù)主要負(fù)責(zé) TDengine 的生態(tài)應(yīng)用研發(fā)工作,致力于讓更多人能夠在更多場景和環(huán)境下更容易使用。盡管已經(jīng)擁有很豐富的工作經(jīng)驗(yàn),但猛然調(diào)轉(zhuǎn)方向到一個自己涉獵并不是很深的技術(shù)領(lǐng)域,如桑樹多這般的技術(shù)老將也不免需要適應(yīng)一段時間,“遇到最大的困難主要是之前技術(shù)方向不在數(shù)據(jù)庫,對數(shù)據(jù)庫的學(xué)習(xí)需要從頭開始,但好在通過大家的熱情幫助和自己的努力也算是摸到數(shù)據(jù)庫的邊兒了。”

對于桑樹多而言,從加入濤思的那一刻開始,自己的全部精力就投入到了 TDengine 的優(yōu)化和發(fā)展中。由于 TDengine 是使用 C 語言開發(fā),對很多開發(fā)者而言門檻略高,對此桑樹多也提出了一些不同的看法。

“TDengine 的代碼質(zhì)量很高,模塊之間劃分總體上比較清晰,文檔也較全,社區(qū)相對也很活躍,遇到問題能夠及時得到幫助,對于有志于學(xué)習(xí)數(shù)據(jù)庫核心代碼的同學(xué)來說門檻高不是一個難以攻克的問題。如果你對 C 語言并不熟悉,那我建議你也可以從學(xué)習(xí) TDengine 生態(tài)應(yīng)用軟件的源代碼開始,還可以通過學(xué)習(xí) TDengine 的測試腳本來學(xué)習(xí)如何對基礎(chǔ)軟件進(jìn)行測試?!?

目前 TDengine 支持 Java、Go、Python、C#、NodeJS、Rust 等多種語言的連接器,發(fā)展至今,其代碼量也越發(fā)龐大,想要充分理解其整體的設(shè)計也是一件比較有挑戰(zhàn)的事情。如何才能對 TDengine 的設(shè)計和模塊進(jìn)行一個快速且深入地了解,桑樹多也作了相應(yīng)解答。

“首先 TDengine 不僅進(jìn)行了代碼開源,文檔也實(shí)行了全面開放,其中不僅是使用文檔,連設(shè)計文檔都是公開的,靜下心來閱讀完這些文檔會給到你很大的幫助。此外 TDengine 的編譯和部署過程極其簡單,自己就可以實(shí)現(xiàn)代碼下載編譯運(yùn)行,還可以通過 GDB 等調(diào)試工具看到所有執(zhí)行過程,和代碼對照起來學(xué)習(xí)會非常容易。”

正如桑樹多所說,開源軟件本質(zhì)上就是要擴(kuò)大影響力,積極打造生態(tài)社區(qū),遵從業(yè)界規(guī)范,使軟件之間可以更容易互通和互操作,繼而進(jìn)一步推動科技和行業(yè)的進(jìn)步。在桑樹多等一眾濤思人的努力下,作為國產(chǎn)開源軟件的一員,TDengine 正在向著這個方向加速攀登。

而回過頭來,我們從桑樹多加入濤思數(shù)據(jù)的經(jīng)歷中也能悟出一個道理,只要擁有一顆樂于學(xué)習(xí)的心和一雙善于發(fā)現(xiàn)機(jī)遇的眼睛,年齡就不會成為限制自身前進(jìn)的阻力,反而經(jīng)年累月積攢下來的經(jīng)驗(yàn)和見識會成為縱橫職場最鋒利的“武器”。

從 20+ 到 35+ 程序員,打破常規(guī)向更多領(lǐng)域突圍

近年來,隨著業(yè)內(nèi)大齡程序員被頻繁清退等職場新聞的不斷發(fā)酵,在程序員的圈子里,“35+ 門檻”“青春飯”等充斥著焦慮的話題甚囂塵上。一批批年輕人從校園走進(jìn)社會,俗話說長江后浪推前浪,一浪更比一浪強(qiáng),那伴隨著他們的成長,“前浪”真的會被拍死在沙灘上嗎?

或許我們可以從桑樹多的經(jīng)歷中尋找一下答案。作為一名 70 后,他早就超越了 35 這個所謂的“大齡”門檻,但他仍然活躍在職場之上,甚至憑借著沉淀多年總結(jié)出的技術(shù)經(jīng)驗(yàn)、閱盡千帆后輸出的深刻觀點(diǎn),成為了公司里一些后輩所追逐學(xué)習(xí)的存在。對于如何打破程序員圈子中 35+ 大齡焦慮癥這一現(xiàn)象,桑樹多也有自己的看法。

“大齡程序員在國外很常見,我見過很多國外程序員四、五十歲還依然奮斗在一線編程工作上,很多頂尖軟件項目的維護(hù)者往往也是大齡程序員。隨著國內(nèi)人口紅利的下降,相信更多企業(yè)也會越來越重視大齡程序員的價值。而我們自身也應(yīng)該保持初心,積極了解軟件行業(yè)的發(fā)展趨勢,把自己過去的經(jīng)驗(yàn)更多應(yīng)用到有前景的新領(lǐng)域中。只有不斷發(fā)現(xiàn)、學(xué)習(xí)和創(chuàng)新,才能不斷進(jìn)步、不被時代所拋棄?!?

大齡程序員前進(jìn)的動力是打破常規(guī),向更多領(lǐng)域突圍,年輕的程序員往往有更多的選擇,但偶爾也會因行差踏錯、定性不足而蹉跎光陰。 以過來者的身份,桑樹多從自身經(jīng)驗(yàn)中沉淀出一套方法論,“寫代碼有個DRY(Don’t repeat yourself)原則,對個人職業(yè)生涯或者技術(shù)方向也很適用。人生短暫,不要浪費(fèi)時間做重復(fù)的事,而要盡可能提升自身技術(shù)的深度和廣度,增加更豐富的體驗(yàn),參與開源是個好辦法?!?

開源貫穿了桑樹多職場縱橫的幾十年,使他受益良多,如今,他把這個成長的“秘訣”分享了出來,期待能夠幫助到更多迷茫的開發(fā)者。“也希望隨著越來越多開發(fā)者的加入和關(guān)注,國產(chǎn)開源之路能夠越走越順暢。”

]]>
东至县| 台东县| 灯塔市| 德保县| 大埔区| 五河县| 株洲市| 正镶白旗| 临泉县| 云浮市| 乐安县| 离岛区| 吴旗县| 固始县| 永寿县| 阳信县| 赤城县| 丘北县| 宜黄县| 汨罗市| 巴马| 通榆县| 辰溪县| 宝山区| 扶沟县| 县级市| 通辽市| 连江县| 红安县| 禹州市| 新化县| 芦溪县| 七台河市| 大同县| 黔东| 巫山县| 道真| 磐安县| 弥渡县| 邢台市| 岑溪市|