前段時(shí)間在使用 Pulsar 的 admin API 時(shí),發(fā)現(xiàn)其中的一個(gè)接口響應(yīng)非常慢:
admin.topics().getPartitionedStats(topic);
使用 curl 拿到的響應(yīng)結(jié)果非常大,同時(shí)也非常耗時(shí):
圖片
具體的 issue 在這里:https://github.com/apache/pulsar/issues/21200
后面經(jīng)過(guò)分析,是因?yàn)槟承?topic 的生產(chǎn)者和消費(fèi)者非常多,導(dǎo)致這個(gè)查詢 topic 統(tǒng)計(jì)的接口數(shù)據(jù)量非常大。
圖片
但在我這個(gè)場(chǎng)景其實(shí)是不需要這些生產(chǎn)者和消費(fèi)者信息的,現(xiàn)在就導(dǎo)致這個(gè) topic 無(wú)法查看狀態(tài),所以就建議新增兩個(gè)參數(shù)可以過(guò)濾這兩個(gè)字段。
因?yàn)樯婕暗叫略?API 了,所以社區(qū)維護(hù)者就建議我起草一個(gè)提案試試:
圖片
此時(shí)就涉及到什么情況下需要給社區(qū)發(fā)起一個(gè)提案的問(wèn)題了。
圖片
在官方的提案指南中有著詳細(xì)的說(shuō)明,簡(jiǎn)單來(lái)說(shuō)就是:
首先第一步就是根據(jù)官方模版起草一個(gè)提案:重點(diǎn)描述背景、目的、詳細(xì)設(shè)計(jì)等。
圖片
并發(fā)起一個(gè) PR,如果不確定怎么寫(xiě)的話可以參考已經(jīng)合并了的提案。
之后則是將這個(gè) PR 發(fā)送到開(kāi)發(fā)組郵箱中,讓社區(qū)成員參與討論。
圖片
這一步可能會(huì)比較耗時(shí),提案內(nèi)容可能會(huì)被反復(fù)修改。
發(fā)起提案的一個(gè)重要目的是可以讓社區(qū)成員進(jìn)行討論,評(píng)估是否需要這個(gè)提案或者是否 有其他解決方法。
經(jīng)過(guò)討論,如果提案獲得通過(guò)后就可以發(fā)起投票了,至少需要有三個(gè) binding 通過(guò)的投票后這個(gè)提案就通過(guò)了。
雖然任何人都可以參與投票,但社區(qū)只會(huì)考慮 PMC 的投票建議;投票的時(shí)效性也只有 48h。
圖片
image.png
48 小時(shí)候便可以發(fā)一個(gè)投票結(jié)果的郵件,如果達(dá)到通過(guò)條件便可以通知參與投票的 PMC 合并這個(gè) PR 了。
圖片
之后就是沒(méi)啥好說(shuō)的實(shí)現(xiàn)過(guò)程,因?yàn)橥ǔN覀兪切枰谔岚咐镌敿?xì)描述實(shí)現(xiàn)過(guò)程以及涉及到修改的地方。
只要提案被 review 通過(guò)后實(shí)現(xiàn)起來(lái)就非常簡(jiǎn)單了,跟著提案里的流程實(shí)現(xiàn)就好了。
這點(diǎn)非常類(lèi)似于我們?cè)谄髽I(yè)中對(duì)某個(gè)業(yè)務(wù)做技術(shù)方案,如果大家都按照類(lèi)似的流程嚴(yán)格審核方案,那實(shí)現(xiàn)起來(lái)是非常快的,而且可以盡量的減少事后扯皮。
所以最后我的實(shí)現(xiàn) PR 提交之后,都沒(méi)有任何的修改意見(jiàn),直接就合并了;也大大降低了審核人員的負(fù)擔(dān),提高整體效率。
以上就是我第一次參與 Pulsar 社區(qū)的提案過(guò)程,我猜測(cè)其他社區(qū)的流程也是大差不差;其中重點(diǎn)就是異步溝通;大家都認(rèn)可之后真的會(huì)比實(shí)時(shí)通信的效率高很多。
具體的提案細(xì)節(jié)可以閱讀官方指南 https://github.com/apache/pulsar/blob/master/pip/README.md
本文鏈接:http://www.www897cc.com/showinfo-26-51833-0.html如何給開(kāi)源項(xiàng)目發(fā)起提案
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: Dubbo秘密傳遞:讓你的代碼行云流水