天堂2开源java,关于这 2 年来,做开源项目的一些感慨
2 年了,一個(gè)開源項(xiàng)目 從最初的想法一點(diǎn)點(diǎn)迭代,到現(xiàn)在有了一點(diǎn)點(diǎn)用戶, 從一開始的一個(gè)項(xiàng)目,變成了現(xiàn)在擁有微服務(wù)組件和網(wǎng)關(guān)組件的 微型生態(tài),一路上,真是歷經(jīng)苦難。有質(zhì)疑,有鼓勵(lì),有嘲諷。
有時(shí)候我真的在想,要不要就此打住,放棄維護(hù)算了,項(xiàng)目就掛在那,喜歡的就看一看,學(xué)一學(xué)姜太公,愿者上鉤,我也落個(gè)輕松,但是總感覺有點(diǎn)可惜吧,畢竟是花了大量心血做的。
說起為什么要做這個(gè)項(xiàng)目,我或許已經(jīng)記不清了,我只記得一開始并沒有打算做這個(gè)東西,我只是想驗(yàn)證一下我對(duì) springboot 的原理理解的對(duì)不對(duì),于是我就嘗試著自己去實(shí)現(xiàn)一個(gè)類似的框架。當(dāng)我實(shí)現(xiàn)了基礎(chǔ)功能后,我居然舍不得刪除這份代碼,所以就放到了 github 上托管, 那個(gè)時(shí)候也完全沒有開源的想法,就是把 github 當(dāng)成一個(gè)存放代碼的網(wǎng)盤了。 沒有開源協(xié)議,沒有 readme,連代碼結(jié)構(gòu)也是一團(tuán)糟。
這份代碼就這樣保存了下來,但是我每次閑下來都會(huì)不由自主的在腦海里盤算著,哪里寫的不夠好,哪里可以再優(yōu)化一下,目錄結(jié)構(gòu)是否可以更優(yōu)雅一點(diǎn),細(xì)節(jié)是否可以再打磨一下等, 每次想到一些東西,就會(huì)去維護(hù)一下,然后樂在其中, 正是因?yàn)檫@樣的維護(hù),讓這份代碼變得越來越健壯,于是就有了分享給大家看看的想法。所以我做起了官網(wǎng),開始在一些技術(shù)群里分享,但是得到的反饋卻不太友好,幾乎是清一色的嘲諷,質(zhì)疑。大部分的嘲諷都集中在 [沒新意,個(gè)人項(xiàng)目太垃圾等] ,每次面對(duì)這些嘲諷,我都在想,怎樣才能讓大家接受且愿意嘗試下,而不是看了個(gè)文章介紹,就立刻否定了,所以我拼命的去優(yōu)化我的代碼,去加入一些新特性(或許不是新特性,因?yàn)槊恳粋€(gè)特性,都能在世界上找到包含此特性的項(xiàng)目)
就這樣,
我將 controller 改成了 聲明式 API,
自己開發(fā)了 [半 ORM ] 省去了集成 mybatis 的麻煩,
提供注解式參數(shù)校驗(yàn),注解式 redis 鎖,
對(duì)服務(wù)端的異常也做了出了封裝,使其不必返回 500,而是一個(gè) json,避免每個(gè)接口都加 try-catch 。
同時(shí)依然保留著 最初的 AOP,IOC,聲明式事務(wù)
可以說完成了一次 集小成,一個(gè)項(xiàng)目就可以提供 中小型項(xiàng)目開發(fā)中常用的一些功能點(diǎn)。但是反應(yīng)還是一般般,無人問津,沒有人在意這是一個(gè)什么東西,每次的分享,都是一次被噴大會(huì)。不過其中也不乏一些理智的人,他們會(huì)理智的說出一些自己的看法,這給了我很大的幫助,我也非常感謝他們。
事情到了這一步,我也可以說是騎虎難下了,投入了這么多,總不能放棄吧,我只有硬著頭皮往前走,我不斷的去思考,到底是什么原因讓大家不愿意嘗試呢? 可能 [個(gè)人項(xiàng)目] 這個(gè)標(biāo)簽,本身就是原罪吧,也可能是我提供的生態(tài)不夠,所以我做出了如下計(jì)劃:
再一次的給項(xiàng)目減肥,丟掉一些在我能力范圍內(nèi),可以替代的三方依賴
開發(fā)微服務(wù)組件,網(wǎng)關(guān)組件 來豐富生態(tài)
再一次的去優(yōu)化文檔,官網(wǎng)等,盡量體現(xiàn)出 這是一個(gè)用了心的項(xiàng)目 和 專業(yè)感
所以,tomcat 沒了,直接采用了 HttpServer (在 JDK8-JDK14 上都測(cè)試過,都沒問題), 不需要注冊(cè)中心的微服務(wù)組件也開始投入了開發(fā),網(wǎng)關(guān)也提上了日程,同時(shí)官網(wǎng)和文檔日漸完善,我甚至找專業(yè)的人設(shè)計(jì)了 logo (我自己覺得挺好看的)
經(jīng)歷了 2 年的時(shí)間,這些都已經(jīng)成為了現(xiàn)實(shí),有了微服務(wù)組件,有了網(wǎng)關(guān)組件,有了自己的 logo,官網(wǎng)也比以前好看了很多,文檔也比以前清爽簡(jiǎn)潔。
與此同時(shí),也出現(xiàn)了另一個(gè)問題,項(xiàng)目的高度集成化,使得擴(kuò)展性不夠,比如 HttpServer 不好的時(shí)候,可否切換到 tomcat ? 微服務(wù)的熔斷器,負(fù)載均衡 是否可以 插拔,甚至讓用戶自己開發(fā)? 用戶是否可以自己開發(fā)組件?所以,接下來的一段時(shí)間,我開始了這個(gè)方向的優(yōu)化, 到現(xiàn)在為止,都已經(jīng)實(shí)現(xiàn)了,但是還存在一些問題:
tomcat 啟動(dòng)器還沒來得及優(yōu)化,只能用默認(rèn)的 tomcat 配置啟動(dòng)
如果不想用 HttpServer,那么目前只能切到 tomcat 啟動(dòng)器,但是用戶可以自己開發(fā)啟動(dòng)器,我提供了 API
熔斷器雖然可插拔,但是還沒開發(fā)自己的熔斷器
負(fù)載均衡可插拔,目前官方只提供了兩種算法 [普通隨機(jī),普通輪詢]
用戶雖然可以自己開發(fā)組件,但是官方組件還是太少
接下來的工作重點(diǎn),我會(huì)放在優(yōu)化這幾個(gè)點(diǎn)上。 至于更加長(zhǎng)遠(yuǎn)的計(jì)劃,那肯定是無限的向企業(yè)級(jí)開發(fā)靠攏,爭(zhēng)取讓他可以勝任大型項(xiàng)目。
2 年來,不斷地優(yōu)化,試錯(cuò),面對(duì)各種嘲諷,早已成為習(xí)慣,總之我知道自己在干嘛就好了,即使無人問津也沒關(guān)系,起碼我可以從這件事中 學(xué)到一些東西,體會(huì)到一些東西,這也是一種價(jià)值吧,就像回歸初心一般,我一開始僅僅只是為了驗(yàn)證我對(duì) springboot 的原理理解的對(duì)不對(duì),我只是樂在其中,其他的一切雜念,就讓它煙消云散吧。
哦對(duì)了,這個(gè)項(xiàng)目叫 Martian?http://mars-framework.com/
總結(jié)
以上是生活随笔為你收集整理的天堂2开源java,关于这 2 年来,做开源项目的一些感慨的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天堂2单机版服务器维护,天堂2芙蕾雅服务
- 下一篇: iOS APP 逆向安全杂谈