雲+社區「開源之道」主題直播,這些技術大佬都說了哪些乾貨?

有人說:開源軟件是一項劃時代的創舉,它撕開了私有軟件大環境下的深重膈膜,爲IT技術發展注入了新的活力和空間。據Linux基金會的統計報告,現有軟件中只有10%不到的代碼是由開發者純手寫,而90%以上是和各種開源軟件的源碼組合而成。開源技術發展至今,社區不斷髮展壯大,各種新技術層出不窮,應用也越來越廣,開源技術的影響力正在滲透到我們日常生活的方方面面。

2020年10月23日~11月2日,騰訊雲官方開發者社區—雲+社區主辦的以「開源之道」爲主題的系列沙龍活動已圓滿謝幕。此次在線沙龍邀請到11位開源技術圈大咖演講,和大家深度探討如何貢獻開源、成就自身等話題,以及分享騰訊開源第一線背後的技術奧祕,幫助大家在這條路上走得更好。

優秀程序員,如何貢獻開源?

開源的本質是什麼?說到這個話題,開源社理事長暨聯合創始人 & ASF Member 劉天棟首先發表了自己的看法。他認爲開源的本質有四個點最關鍵:

  1. 開源是開放的,要有開放的心態來做這件事,公開透明是良好協作的基石。

  2. 分享,樂於分享是一切善舉的開端,而不是閉門造車。

  3. 平等,大家都有平等的追求,這是開源社區健康的基礎。

  4. 是協作,透過開放式的協作能逐步形成凝聚共識,是開源社區繁榮的祕訣。

開放原子基金會TOC副主席譚中意認爲,開源本質就是源碼開放基礎設施上的多人協作模式,爲了讓這種協作能夠長期健康的進行,產生了各種各樣的附加層面。

比如爲了讓代碼上下游可以工作得更好,就產生了開源社區;爲了更好支持開源社區又產生各種各樣的基金會,基金會後面又有各種各樣的商業公司支持,又催生了新的商業模式.......迴歸到本質,就是大家在開放的源碼上一起來寫代碼。

開源中國社區負責人王永和對此也有補充,他認爲開源不僅僅是代碼開源,項目的背後還有社區、委員會、以及相關的法律。由此他告誡開發者:在使用一款開源軟件之前,務必對該項目的整個體系和組成部分有全面的瞭解,這樣能避免很多的坑。

此外在開發者如何貢獻開源的話題討論中,三位老師也發表了自己的看法,他們一致認同:貢獻開源,絕不僅僅只有程序員可以參與。除了貢獻源碼以外,翻譯文檔、給文檔糾錯,又或是分享優秀的開源項目給身邊朋友,這些看似微不足道的行爲,也會爲社區的壯大帶來巨大的益處。在此過程中,也能爲自身帶來很多意想不到的收穫。

企業級雲原生:TKEStack 騰訊雲原生開源實踐之路

TKEStack是騰訊開源的一款集強壯性和易用性於一身的企業級容器編排引擎,是開放原子開源基金會的孵化項目之一。TKEStack的開源思路是尋找雲原生的藍海,騰訊認爲在未來,多雲以及硬件異構和硬件平臺異構是一個方向。

首先是硬件異構,目前絕大部分的使用場景是基於 X86 的硬件,但國內有一個很重要的訴求:就是支持 ARM。騰訊會做到X86 和 ARM 可以在同一個集羣內部署。GPU 方面除了有自己傳統的比較有優勢的 GPU 虛擬化能力以外,也把英特爾 GPU 能力和寒武紀和華爲的 GPU 相關產品 在 TKEStack 裏面做適配,讓上層用戶可以無感的使用。

基礎架構異構就是混合雲,TKEStack 架構設計上是拿一個集羣管其他的集羣,天然可以做到混合雲,把別的集羣,自建集羣註冊到 TKEStack 裏面來,利用 TKEStack 提供的鏡像倉庫、認證、日誌、權限、監控,在一個 TKEStack 界面來可以管理多個 K8S 集羣。

騰訊積累了一批雲原生應用相關的技術方案,兩個比較爲人熟知的是有狀態應用的 TAPP 和英偉達 GPU 虛擬化,還有一些大數據套件也在做集成。騰訊希望把內部的優勢開源組件一步一步往 TKEStack 裏面集成,讓用戶可以在TKEStack上使用。

除此以外還有一個比較重要的點就是鬆耦合,TKEStack 一方面支持自研業務,另一方面也支持商業化產品,最終呈現給用戶態的不止一個產品。面對這樣的訴求,就要求 TKEStack做到可插拔、積木式組裝。A 產品要用日誌,B 產品不用日誌,自己可以選擇可以隨意的組合,TKEStack 就具備這樣的鬆耦合能力。

跨國合作:Serverless Components 在騰訊雲的落地和實踐

Serverless Framework 是⼀個開源命令⾏⼯具,爲開發和部署 Serverless 架構提供腳⼿架,⾃動化⼯作流以及最佳實踐。並且它⽀持通過豐富的插件進⾏功能擴展。

Serverless Components 是 Serverless Framework 推出的最新解決⽅案,具有基礎設施編排能⼒,開發者通過使⽤ Serverless Components,可以靈活構建、組合和部署 Serverless 應⽤。

通過 CLI 的命令進行部署的時候,會把用戶代碼壓縮之後上傳。首先壓縮指定的代碼目錄,上傳到一個公共的 COS 裏面。然後新建或者更新組件的狀態,同時會在服務端把代碼下載下來,並注入 Proxy 代碼。

Proxy 代碼都實現了什麼能力呢?因爲雲函數主要的適用場景是事件驅動型的,對於 http 請求的實現是通過 API 網關觸發器轉發的。網關接收到的 http request 會轉換爲雲函數需要的參數對象,在函數執行包裝後的 web 框架,執行完後再把 http response 轉換成 API Gateway 需要的結構返回給網關,網關再把 response 轉換成標準的 http response 返回,這樣就實現了整個 HTTP 的訪問。

而用戶不需要關注這部分的實現,按照正常的開發就可以。Components 部署的時候會自動注入這部分轉換邏輯的代碼。服務端在注入完 Proxy 代碼後會把代碼上傳到用戶 COS 裏面,然後創建或更新雲函數,同時會再創建或者更新 API 網關的配置。 

這個時候再把整個創建的過程以及創建的狀態保存到服務端,控制檯再輸出整個組件最終需要給用戶看到的一些雲上資源的信息,比如 SCF 的信息、API 網關的信息、CDN 的數據和數據庫信息等,整個部署就算是完成了。 應用部署完後會返回 API 網關公用的二級域名的一個訪問地址,跟正常的函數與自己組裝資源去訪問應用方式是一樣的。

通過這個過程抹平了一些雲函數和正常服務器差異化的實現,抹平後通過 Serverless Components 可以不用關心這些特殊的邏輯邏輯,也不需要關心其他的雲上的資源。

國產開源數據庫:騰訊雲TBase在分佈式HTAP領域的探索與實踐

數據庫作爲計算層和存儲層的基石,其開源的重要性不言自明。TBase是騰訊TEG數據平臺團隊在開源PostgreSQL的基礎上研發的企業級分佈式HTAP數據庫系統,可在同一數據庫集羣中同時爲客戶提供強一致高併發的分佈式在線事務能力以及高性能的數據在線分析能力,已經爲騰訊內外部包括政務、銀行、保險、證券、微信支付等多個行業提供底層數據庫支撐。

2019年11月7日,TBase正式開源到GitHub ,開源以來受到了歐洲航天局的「ESA Gaia mission」(https://sci.esa.int/web/gaia)等多個外部項目的青睞。

TBase 在分佈式事務上的能力做了較大改進。首先對 GTM 集羣做了優化,從原始的全局 XID 改成了分配全局時間戳GlobalTimeStamp(GTS),GTS 是單調遞增的,騰訊基於 GTS 設計了一套全新的 MVCC 可見性判斷協議,包括 vacuum 等機制。

這樣的設計可以把提交協議從 GTM 的單點瓶頸下放到每一個節點上,減輕壓力,同時通過時間戳日誌複製的方式實現 GTM 節點主備高可用。這種協議下 GTM 只需要去分配全局的 GTS,這樣的話單點壓力就會被解決得比較明顯。根據推算, 滕敘 TS85 服務器每秒大概能處理 1200 萬 TPS,基本能滿足所有分佈式的壓力和用戶場景。 

  

國產開源IoTOS:騰訊物聯網操作系統TencentOS Tiny的探索與實踐

騰訊物聯網終端操作系統(TencentOS tiny)是騰訊面向物聯網領域自主研發的嵌入式實時操作系統。TencentOS Tiny提供精簡的 RTOS 內核,內核代碼僅1w行,內核組件可裁剪可配置,可快速移植到多種主流 MCU 及模組芯片上,集成主流物聯網協議棧(如CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物聯網終端設備及業務快速接入騰訊雲物聯網平臺。

2019年9月18日正式全網開源以來,覆蓋了IoT主流應用場景,形成了良好的開發者生態和行業影響力。支持硬件平臺數量超60+,包括STM32、NXP、華大半導體、Nordic、兆易半導體、國民技術、TI MSP、瑞興恆方等多家MCU和模組廠家。

TencentOS Tiny 的產品架構,由下往上看,最下面是目前已經支持的 MCU 芯片和模組,其中包括 STM32 和主流的蜂窩通信模組,提供了驅動框架和外設框架,兼容不同硬件和方便適配不同硬件平臺。

再往上面是TencentOS Tiny的核心基礎內核,再上面是物聯網所需要的聯網組件,提供了 IoT 常用的功能組件,比如文件系統、KV存儲和高級語言引擎框架等等,提供了方便用戶調用的業務層API,業務層上也會提供常用的案例供客戶和開發者參考。除此以外,此架構內置了安全框架,爲終端設備的設備唯一標識、通信鏈路加密、**安全存儲提供了保障,防止物聯網設備被攻擊。

總體來看,整個TencentOS Tiny物聯網操作系統有三個主要特點:

第一,極至精簡的內核。內核整體代碼量不超過一萬行,能夠實現超低資源的佔用,IDLE任務下,最小資源佔用僅爲0.6KB RAM,1.8 KB ROM。

第二,功耗低,最小休眠功耗可以達到 uA 級別。

第三,軟件架構非常簡捷,方便嵌入式開發者以超快的速度入門,只需要把操作系統快速移植上去,上面的IoT組件就可以直接使用,非常方便,不需花太多時間成本學習。

前端視角談物聯網三部曲:連接智能,交互智能,數據智能

作爲離用戶和物聯網設備最近的前端,在物聯網三部曲中扮演什麼樣的角色呢?這兩年來騰訊雲物聯網探索出了「騰訊連連」小程序。

在業界比較少小程序經驗的前提下,騰訊連連小程序率先提供了豐富的設備連接方式:WI-FI(SoftAP,SmartConfig,AirKiss,SimpleConfig,藍牙輔助配網等),藍牙(標準藍牙協議,自定義藍牙協議),LoRa等網關和子設備的連接方式,並且不斷打磨連接體驗和成功率。

在設備控制方面,提供了標準面板和獨創性的基於SCF框架的自定義H5面板方案;爲了和更多的物聯網開發商和愛好者一起打造生態,提供了一系列的開源的開放能力:應用開發SDK,自定義H5面板開發SDK,小程序插件等等,吸引了很多廠商和開發者。

騰訊雲 IoT 致力於幫助廣大的物聯網開發者做好設備生命週期管理中的基礎設施建設,保證功能的易用性、完整性和性能高可用性,讓開發者只需要關注自己業務邏輯即可,這樣以最短時間發佈產品搶佔先機。整個物聯網產品開發平臺架構圖如下:     

開發者可以在物聯網開發者平臺去開發調試這個設備,在控制檯去看這個設備的監控日誌、數據分析等等。同時,騰訊也推出了 C 端的應用騰訊連連,去幫助用戶做設備管理,設備管理包括設備的連接、交互、更新、刪除等等,可以進一步的縮短開發廠商設備量產的 C 端產品開發流程。

騰訊連連當初爲什麼要做小程序呢?小程序的優勢在於安裝便捷,給一個二維碼就可以打開了,不像 APP 的安裝那麼繁瑣,它跟微信裏面的關係鏈是強綁定的。而物聯網設備也是跟人強綁定的,家居領域、企業領域都是需要跟一羣人交互的,它的優勢在於這裏。

而對於開發商來說,小程序可以用一種語法在兩端運行,不需要處理安卓、IOS 端的兼容性問題,可以大大的減少縮短開發週期,而且可以精簡開發智能角色一個前端就可以搞定以前要兩個端的開發人員做的工作。

壓測利器:TarsBenchmark正確打開方式

Tars 是由騰訊主導開源,並捐獻給Linux基金會的微服務RPC框架。當下後臺邏輯服務大都採用微服務架構設計,其後臺服務一般基於二進制的RPC方式對外提供服務,以Tars服務爲例,其RPC的接口協議是極易擴展的,這種靈活多變的協議給服務的性能評測帶來了一定的難度。而TarsBenchmark的及時推出極大地降低使用門檻,同時支持在線評測服務性能。

TarsBenchmark採用多進程的方式,在主進程上會根據服務器的物理核數去fork相等數量的壓測進程,各壓測進程之間是完全隔離的,也就是獨立運行,避免了進程與進程之間互相爭奪臨界資源。

在網絡方面,採用的是事件驅動的方式,通過定時發包器讀寫進程,並通過事件驅動避免網絡IO的阻塞。外在連接方面採用連接池,在連接池對每個連接採用連接複用的方式。不依賴於對端是否返回,可以根據返回包的序號定位到發包的性能和發包的時間,也可以計算壓測過程當中的一些耗損數據。

在協議方面,採用的是協議代理工廠模式,TarsBenchmark默認提供的是Tars協議的壓測,但是如果開發者有一些私有協議,可以參考Tars協議的實現集成進來,代理工廠可以自動識別協議。在Tars協議中,支持隨機數據的生成。另外還提供一個工具,用以自動生成測試用例,測試用例採用的是JSON格式,達到預期就可以輕鬆發起壓測。

開源之潮,正滾滾而來,引領着技術發展的新思潮,而國內開源發展也正如火如荼,在這樣的時代背景下,願每一位開發者都能抓住機遇成就自身。正是源於對技術高度的熱忱,讓大家相遇在雲 + 社區沙龍直播間,跟隨技術大咖的前進腳步探索自己的開源之道。未來雲+社區還將舉辦更多技術佈道活動,積極擁抱開發者,攜手譜寫技術新時代篇章。