來源|阿里巴巴雲原生公衆號git
Sentinel 是阿里巴巴開源的,面向分佈式服務架構的流量控制組件,主要以流量爲切入點,從限流、流量整形、熔斷降級、系統自適應保護等多個維度來幫助開發者保障微服務的穩定性。Sentinel 承接了阿里巴巴近 10 年的 雙11 大促流量的核心場景,例如秒殺、冷啓動、消息削峯填谷、集羣流量控制、實時熔斷下游不可用服務等,是保障微服務高可用的利器,原生支持 Java/Go/C++ 等多種語言,而且提供 Istio/Envoy 全局流控支持來爲 Service Mesh 提供高可用防禦的能力。github
2020 年年初,Sentinel 社區宣佈了 Sentinel Go 版本的發佈,爲 Go 語言的微服務和基礎組件提供高可用防禦和容錯能力的原生支持,標誌着 Sentinel 朝着多元化與雲原生邁出了新的一步。在這半年的時間內,社區推出了近 10 個版本,逐步對齊了核心高可用防禦和容錯能力,同時也在不斷擴充開源生態,與 dubbo-go、螞蟻 MOSN 等開源社區進行共建。golang
11 月,Sentinel Go 1.0 GA 版本正式發佈,標誌着 Go 版本正式進入生產可用階段。詳情請看:《阿里 雙11 同款流控降級組件 Sentinel Go 正式 GA,助力雲原生服務穩穩穩》。架構
可喜的是,社區在 11 月迎來了三位新 committer。接下來,咱們一塊兒來認識下這三位新 committer。分佈式
以前在阿里實習過,對 Sentinel 本來有過一些接觸。工做中有一些流控需求,就深刻調研過 Sentinel,慢慢的開始和Sentinel開源負責人宿何一塊兒共創 Sentinel Go 這個項目。ide
工做項目中須要實現熔斷限流相關的功能,就調研了許多相關的開源項目,最終發現基於 sentinel-golang 開發是最合適的。爲了對 sentinel-golang 有更深的理解和更好的把控,就開始深度閱讀 sentinel-golang 源碼,並加入 sentinel 社區與小夥伴們進行深度交流。微服務
在參與 nacos-sdk-go 項目開發時,瞭解到 sentienl-golang。另外有計劃使用 Nacos 做爲外部動態數據源,就參與進來貢獻了。學習
Sentinel 開源社區是一個很是開放,包容,活躍的社區。在這裏能夠認識不少的牛人,學習分佈式系統高可用流量防禦的大量實踐經驗。在這裏任何想法和優秀的設計,均可以和社區核心成員一塊兒討論而且落地。優化
很是幸運能參與到 Sentinel 的開源貢獻,在參與的過程當中,收穫不少。首先認識了不少牛人,得到了不少可貴的交流機會;其次,在貢獻代碼的過程當中,進一步加深了對 Sentinel 項目設計與實現的理解;還有就是利用業餘時間參與貢獻,讓本身的業餘時間更加充實。設計
首先以爲氛圍很好,社區大佬 @宿何 和 @louyuting 等等都很熱情會很是及時的解答每個問題。其次以爲社區很是專業,能夠和不少小夥伴進行深度交流,參與貢獻的過程當中會學習到不少知識,對 Sentinel 的設計理念有了更深層次的理解。
Sentinel Go 這個項目我算是第一行代碼的 Contributor,一路走過來慢慢跟隨着項目的成長。整個過程可以看到項目不斷的完善成長,也支持了社區裏面一些公司的實際需求。對我而言,一方面是我的的成長,本身主導的 Sentinel Go 裏面的一些核心設計可以落地,看到本身作的產品可以真正影響到一些人一些公司,產生實際的價值。另外與一些其他社區好比 dubbogo、mosn 社區,以及社區裏面的一些公司合做,可以看到 Sentinel Go 能真正幫助他們解決微服務在高可用流量防禦方面的一些痛點,很是有成就感。
最大的動力就是但願實現我的與 sentinel 的共同成長。每次本身的代碼被合併,對本身是個很大的鼓舞,促使本身繼續努力、繼續提高自我。也但願經過我的微薄的貢獻,能使 sentinel 發展地愈來愈好,能幫助到愈來愈多的人或項目。最讓我有成就感的是本身主動挖掘到了項目中可改進和可優化的點,而且最終完成相應的代碼貢獻。我認爲可以給在一個優秀的開源項目中發現問題並解決問題,是對我的能力一個很好的證實,因此會讓我頗有成就感。
最大的動力應該就是對於開源社區的熱情吧,以及但願在貢獻的過程當中與 sentinel 一塊兒成長。在 sentinel 這樣的優秀產品中留下本身貢獻代碼的足跡是很是有意義的事情。從加入社區開始到 sentinel-golang 的 v1.0.0 發佈,在這個過程當中學習到不少,不斷的挑戰本身,看着 sentinel-golang 成長頗有成就感。
項目前期對一些高可用流量防禦的實際場景理解的不夠充分,一些核心設計上考慮的可能不夠全面。不過整個社區都比較活躍,和一些社區核心成員溝通交流逐漸加深了對一些業務場景理解。
前期因爲對整個項目熟悉度還不夠,貢獻代碼時,可能僅考慮到一個表面的點,更深層次的東西可能考慮不到。不過,使人欣慰的是社區氛圍比較好,在社區成員的幫助下,本身也逐步的對整個項目熟悉起來了。
最大的挑戰也許就是第一次給 sentinel 提交 PR 的時候了。由於剛開始不太熟悉項目 PR 改了不少次。最後多虧 @louyuting 大神耐心指教。
主要會參與一些 Sentinel Go 與 Dubbo Go 融合的相關事情。
目前尚未參與其餘的項目,後續有機會的話想參一下 Dubbo Go 項目。
目前也有參與 Nacos 項目。
歡迎各位開發者前往 sentinel go 社區和 committer 們直接交流:https://github.com/alibaba/sentinel-golang
若是你也想成爲 sentinel contributor,不妨從 good first issues 開始:https://github.com/alibaba/sentinel-golang/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22