新聞中心
今天天氣不錯,我們來分享一個能讓你技術(shù)獲得增強(qiáng)的主題: 開發(fā)中間件。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,先為涵江等服務(wù)建站,涵江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為涵江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
很多同學(xué)聽到這個主題,可能會說我們是小公司,沒有機(jī)會開發(fā)中間件。
那你就錯了,我們這里說的中間件,并不一定是那些如dubbo之類很牛逼的開源組件,而是,你們公司內(nèi)部自己使用的公共組件。
首先,我們要刻意培養(yǎng)這方面的能力,其次,我們要掌握一定的套路來快速地開發(fā)一款健壯的公共組件。
下面,我們就從這兩個方面分享一下我的心得。
我舉個例子,有的公司可能就只有一個大的單體應(yīng)用,有的公司可能有很多小項目,有的公司可能是很牛逼的微服務(wù),這些項目無疑來說都是完全不同的,但是,他們肯定也有一些共同點,比如,他們都需要打印日志,所以,你是不是可以把日志這么一個非常簡單的東西拿出來做成一個日志框架呢?
日志這個東西看似比較簡單,你們公司可能用的還是spring自己啟動時候的日志,但是,它其實也有很多可能性,或者說可變性,比如,日志切分,滾動日志,異步打印日志,打印到遠(yuǎn)程,聚合日志,日志脫敏顯示(手機(jī)號不顯示全),日志可追蹤,等等,你看看,我就隨便說說,就能說出這么多日志相關(guān)的內(nèi)容,所以,它是很適合做成公共組件的嘛。
這樣,公司一旦有新的規(guī)范需要修改日志的時候,就只需要修改這個公共組件就可以了,所有項目升級個jar包就完事了,節(jié)省了大量的工時,同時,別人依賴你,你的影響力也就提升上去了,你就是你們公司日志這塊的專家了,別人遇到問題都得來請教你,是不是很爽。
即使你是單體應(yīng)用,也應(yīng)該培養(yǎng)這樣的能力,保不準(zhǔn)你哪天就走了,這個日志組件是不是可以帶到下一家公司,是不是可以讓你更快速地搭建新項目,是不是可以讓你在新的公司建立影響力。
上面只是說到了日志這么一個例子,其實,還有很多可以提取的東西,最簡單的,你們公司用到什么開源組件,你就提出來,單獨打成一個jar包,讓別人來引用你,而不是去引用那個開源組件。
為什么這樣搞呢?因為這樣搞的好處是多多滴,比如,哪天有這么一些需求,kafka需要帶上用戶上下文,kafka消費者可追蹤,elasticsearch存儲的關(guān)鍵數(shù)據(jù)需要加密,MySQL存儲的關(guān)鍵數(shù)據(jù)需要加密,給前端顯示的手機(jī)號需要脫敏,日志追蹤我們要換成skywalking,redis我們要搞集群,你想象一下,這些修改是不是需要所有項目都跟著修改,即使你只修改一行代碼,加一個攔截器,動所有項目,也會被人打死,但是,你只是讓別人升個版本號,這個別人還是很容易接受的。
說了這么多,那么,要如何快速地開發(fā)一個公共組件呢?
其實,很簡單,我們還是以日志為例。
現(xiàn)在,1.0.0版本你只需要新建一個Maven工程,在resource下面丟一個logback-spring.xml,里面定義你的日志格式,一般還要做滾動日志,按天切分,每10M一個文件,等等,模板很多,網(wǎng)上一搜一大把,我就不細(xì)說了。
這樣,一個日志組件就開發(fā)完了,你把它打包到Maven私倉別人就可以下載到了。
是不是很簡單?!
OK,現(xiàn)在大家都用到了你的日志組件,但是,有的項目發(fā)現(xiàn)同步打印日志有點影響性能,給你提了個需求,能不能把日志改成異步的。
很簡單,你只需要加一個異步的Append就完事了,重新打包成1.0.1版本,告訴他升級一下版本就完事了。
好了,現(xiàn)在有個使用使用微服務(wù)的項目給你提了個需求,我們服務(wù)太多了,能不能把日志打印到一個地方,我們方便統(tǒng)一查看?而且,我們想通過一個標(biāo)識能把一次請求所有的日志都查出來。
這很復(fù)雜嗎?其實,也不難,簡單點,你申請一個elasticsearch,增加一個打印到ES的Append就可以把所有日志打印到同一個地方了,查看特別方便,再也不用登錄沒臺機(jī)器去查看日志了。
那么,第二個需求呢?引入sleuth就可以讓你的日志具有可追蹤的效果,在你的Append中引用sleuth的traceid就可以了,這樣,微服務(wù)聚合可追蹤的日志問題就完美解決了。
甚至,你還可以做的更過分一點,偷偷的接入調(diào)用鏈追蹤框架,比如,zipkin,完美展示調(diào)用鏈的過程,幫助快速排查問題,協(xié)助改造接口調(diào)用性能,等等。
相信有了這么一套框架,你在你們公司的地位就很穩(wěn)了,日志這塊你就是專家。
當(dāng)然,很多大公司這么一套東西都是現(xiàn)成的了,可能沒有你發(fā)揮的余地了,但是,不影響你培養(yǎng)這種思維。
比如,你可以去封裝kafka,elasticsearch,mybatis,redis,等等,只要你有這種思維,到處都是機(jī)會。
當(dāng)然,我上面說的很完美,在實際的操作中,可能會遇到各種各樣的問題,有問題才有價值,最常見的就是版本兼容,jar包沖突等問題,所以,你還需要掌握一些常用的技術(shù),比如,springboot的自動裝配,Maven的option,盡量使用穩(wěn)定的技術(shù),不引入過多的依賴,等等,多寫多用多體會。
好了,今天的分享就到這里,上班去了。
本文轉(zhuǎn)載自微信公眾號「彤哥讀源碼」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系彤哥讀源碼公眾號。
分享文章:技術(shù)增強(qiáng):如何更優(yōu)雅地開發(fā)中間件?
標(biāo)題URL:http://www.dlmjj.cn/article/copdepp.html


咨詢
建站咨詢
