我參與阿里巴巴 ASoC Seata 的一些感悟

2021-10-13 23:19:53 字數 2650 閱讀 6902

看一看日曆

這個不同尋常的 2020 年,馬上就要結束了。

這一年,有幸參與阿里巴巴組織 asoc 活動,有一段讓我難忘的不平凡經歷。

這一年,卻已可以稱為是國際開源實習發展歷程中不平凡的一年。

初心

beginner』s mind

唯有守得住初心,才能日益精進。  

我先來說說 seata 這個專案的 idea 是怎麼來的。一直就有參與開源專案的打算,乙個事物的興起必定或大或小引發一定的問題,微服務就是這樣,分布式事務概念泛化的同時,也帶來了乙個技術問題,微服務架構下分布式資料一致性該如何保證?這幾年湧現出不少分布式事務框架,比如 bytetcc、tcc-transaction、easytransaction 以及最近很火爆的 seata。想要破解罪惡,就必須接近它,甚至成為它。我是去年 8 月份從 github 開始關注 seata 專案的,初步熟悉後,我覺得它的設計理念非常好,並對它產生了濃厚的興趣,那個時候就萌發了我要成為這個專案的貢獻者。偶然的機會看到 seata issue,發現了 asoc 這個活動。

antlr 無疑是 seata sqlparser 另乙個更好的選擇。於是我想把 antlr 帶到 seata 中。

在開發任務期間,antlr 模組是乙個 feature 的實現,涉及 seata 關於資料庫語言解析的一塊(有前輩開發者使用 druid 去處理相關資料庫語言資料,因此我進行了 druid 原始碼深入研究,基本類似於使用 antlr 實現一種輕量級別的 druid),而整個實現過程,太多的地方需要確定,包括實現資料庫種類、antlr 原始檔、antlr 模組劃分,以及明確上下游 api 介面等等。在實現解析資料庫每種語法語句的時候,比如 mysql 新增語法,使用 antlr visitor 模式,並不相容查詢、修改、刪除語法,不斷打翻之前的**,不斷除錯,甚至導致 antlr 原始檔變動(antlr 官方提供的原始檔過大,改動很頭疼)。最終採用 antlr 兩種解析模式去解析。listener 針對於查詢、修改,刪除語法包括批量操作,最終問題得以解決。

字串流重寫 la 遍歷方法。這裡使用 antlr v4.0.0 字串流重寫 la 遍歷方法,否則大小寫轉換出錯,呼叫 mysqllexer 進行詞法分析、commontokenstream 符號分析、mysqlparser 執行語法規則分析,呼叫我們自定義的 insertspecificationsql,visit 去遍歷 ast 樹,把解析出的資訊用 mysqlcontext 展示。過程很簡單,但是在實際過程中可能會遇到很多問題,比如新增語法、查詢語法、修改語法、刪除語法以及它們語法規則是否有通用性、實現的方法是否可以公用;不同的 sql 語法,是否同乙個方法能支援;批量 sql 的話,怎麼去處理等等問題。

在解析 mysql 原生 sql 語句時候,遇到這樣乙個問題,解析出的 sql 明明是對的,ast 檢視樹中也正確,但是返回給客戶會出現下面這種情況:

}思維-程式設計能力thinking-programming ability參與 seata 過程中在社群認識了很多優秀的開發者,這些開發者很多是值得我去學習的,有不理解的地方我的前輩導師包括社群朋友都熱心幫我解決。每個階段完成後,都會有乙個小的總結,還參與了 pr code review,學習到了開源專案常用的設計模式、spi 和結構設計等。可以說是學到了優秀的編碼習慣和思維方式。

參與到開源專案中並貢獻自己的乙份力量並沒有想象中的難,凡事不要太著急,一步一步、腳踏實地的穩步前進,每天都要有點收穫就會不斷的成長,開源專案中的大牛很多,參與開源會使自己變得更加謙卑,還會讓自己的思維變得更開闊,不會侷限於自我。

出色完成工作所帶來的成就感,實在是種難以言喻的寶貴體驗。還有什麼更好的選擇能比加入開源專案帶來更為廣闊的平台?為開源專案作出貢獻能夠讓你體會到從無到有構建成果的滿足感,並因此得到承認與感激。必須承認的是,擁有開源軟體貢獻經歷能夠讓我們的簡歷變得光彩照人。而朋友們恰好都在使用這款軟體,由此帶來的激勵效果要遠遠超過每天枯燥完成的業務應用**。這種感覺很讚,真的很讚。

季敏(slievrly)前輩是我的導師,從學習 seata 到第一次提交 seata pr 期間,前輩總是很耐心地回答我的每乙個問題,即使是在他比較忙的時候。有時會自己會問一些比較白痴的問題,他總是細心的給我指點迷津、點出問題所在以及為什麼會導致這個問題;有時遇到一些技術方向的問題時,前輩也會給出具有指導性的意見。可以說,一直是他推著我前進,因此在這裡感謝前輩的耐心指導,同時也感謝社群張嘉偉大佬、陳健斌大佬、鍾正濤大佬在我的程式設計之夏之旅中提供的幫助。

阿里巴巴AI Pandas

1.series 主要用於處理一維資料,一般由乙個陣列的資料構成。2.dataframe 主要用於處理二維資料。from pandas import series,dataframe series eg import pandas as pd s1 pd.series 1,2,3,4 s1 0 1 ...

參與阿里巴巴移動推薦演算法比賽感想與總結

雖然昨晚是提交結果的最後一晚,但對於我們隊而言,比賽已經在前幾天就已經結束了。就像是乙個癌症晚期的病人,深知沒有存活的希望一樣,放棄了掙扎,等待死神降臨。我們最終的排名是113。不理想的結果。對於一開始就抱著想要拿到乙個好的名次的參賽初衷的自己,不想在這個時候說什麼 重在參與 重在提高 這些都不過是...

「妖精」團隊 阿里巴巴

6年 這個正迅速擴張的團隊仍超乎尋常地保持著 亢奮 和 戰鬥欲 有人質疑這是 精神控制術 而阿里巴巴決定在新年將塑造團隊的種種魔力 制度化 成為其 基本法 在以 白娘子傳奇 聞名的江南杭城,坐落著兩個氣質與這座城市極不搭調的樓層。15天前,這個富有 攻擊性 的空間 迫使全球最有影響力的女人之一,eb...