成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

兩年P(guān)HPer聊下架構(gòu)

levinit / 2468人閱讀

摘要:前言年很有幸參與了公司內(nèi)部系統(tǒng)架構(gòu)的升級(jí),我們把公司的業(yè)務(wù)進(jìn)行了四大板塊的拆分,分別是應(yīng)用服務(wù)內(nèi)容服務(wù)電商服務(wù)支付服務(wù)。

前言

2016年很有幸參與了公司內(nèi)部系統(tǒng)架構(gòu)3.0的升級(jí),我們把公司的業(yè)務(wù)進(jìn)行了四大板塊的拆分,分別是應(yīng)用服務(wù)、內(nèi)容服務(wù)電商服務(wù)、支付服務(wù)。其他和業(yè)務(wù)無(wú)關(guān)的功能拆分到了基礎(chǔ)服務(wù),為全公司的業(yè)務(wù)提供基礎(chǔ)服務(wù)能力,例如短信、app推送、微信模板消息、圖片上傳等服務(wù)能力。我們還建立我們自己的網(wǎng)關(guān)服務(wù),對(duì)外提供了統(tǒng)一的服務(wù)訪問(wèn)地址。自此之后我對(duì)架構(gòu)的發(fā)展和演變也產(chǎn)生了濃厚的興趣和想法,但是目前接觸的有限,與大公司的業(yè)務(wù)復(fù)雜度比還是有很大的差距,一年過(guò)去了但是還是想把自己經(jīng)歷的做個(gè)總結(jié)和自己的想法表達(dá)出來(lái),同時(shí)也希望大牛們可以指導(dǎo)一番。

備注:“系統(tǒng)架構(gòu)”是一個(gè)很大的范疇,我這里只是把我所經(jīng)歷的小型創(chuàng)業(yè)公司的一次架構(gòu)升級(jí)做個(gè)分享。
實(shí)際架構(gòu)

直接上最終的架構(gòu)圖,如下:

網(wǎng)關(guān): 企業(yè)服務(wù)總線,對(duì)外暴露統(tǒng)一的資源域,把實(shí)際業(yè)務(wù)中接口中都涉及簽名鑒權(quán)等一系列鑒權(quán)邏輯抽到網(wǎng)關(guān),其次為未來(lái)開放第三方服務(wù)準(zhǔn)備。

協(xié)議層: 組裝各個(gè)服務(wù)的結(jié)果,把http協(xié)議的請(qǐng)求轉(zhuǎn)換成rpc請(qǐng)求(這里我們使用的是phprpc)。

業(yè)務(wù)服務(wù): 實(shí)際的業(yè)務(wù)方,各種商業(yè)邏輯,如圖所示。

基礎(chǔ)服務(wù): 基礎(chǔ)服務(wù)能力,和實(shí)際商業(yè)邏輯無(wú)關(guān)。

理論架構(gòu)

上面的架構(gòu)有什么問(wèn)題,協(xié)議層產(chǎn)生了重度的耦合,協(xié)議層耦合各個(gè)業(yè)務(wù)方的邏輯。雖然系統(tǒng)拆分的原則是盡可能的不產(chǎn)生依賴,但是有些還是不可避免的。

三方面:

①透?jìng)鳎好髅鲄f(xié)議層不需對(duì)邏輯做特殊的處理,協(xié)議層卻要實(shí)現(xiàn)一遍代碼,增加了工作量

②組裝:協(xié)議層調(diào)用各個(gè)服務(wù)的組裝數(shù)據(jù)的時(shí)候,其實(shí)還是下意識(shí)涉及了部分業(yè)務(wù)邏輯

③html5應(yīng)用直接調(diào)用了協(xié)議層,沒有正真的實(shí)現(xiàn)企業(yè)總線

其次我認(rèn)為最恐怖的是負(fù)責(zé)協(xié)議層開發(fā)的同學(xué)被坑了,寫透?jìng)鞯拇a沒技術(shù)含量而且是重復(fù)性的工作,涉及數(shù)據(jù)組裝的,還得需要簡(jiǎn)單的了解各個(gè)服務(wù)邏輯。從而這個(gè)協(xié)議層就成了耦合的重災(zāi)區(qū),所以我根據(jù)自己的想法改進(jìn)了這個(gè)架構(gòu)設(shè)計(jì),架構(gòu)圖如下:

改進(jìn)一:html5應(yīng)用也統(tǒng)一走網(wǎng)關(guān),html5應(yīng)用的請(qǐng)求執(zhí)行對(duì)應(yīng)的網(wǎng)關(guān)策略

改進(jìn)二:下移協(xié)議層到網(wǎng)關(guān),網(wǎng)關(guān)直接進(jìn)行協(xié)議轉(zhuǎn)化

改進(jìn)三:業(yè)務(wù)服務(wù)直接調(diào)用所依賴的服務(wù),這樣我們的服務(wù)就可以業(yè)務(wù)直接通過(guò)網(wǎng)關(guān)暴露出去

更進(jìn)一步的架構(gòu)

然而上面的架構(gòu)有什么問(wèn)題?業(yè)務(wù)服務(wù)內(nèi)部互相依賴,一旦未來(lái)服務(wù)拆分的粒度越來(lái)越細(xì),以及業(yè)務(wù)的新增,這些依賴就成了一個(gè)網(wǎng)狀結(jié)構(gòu),慢慢變的不可維護(hù)。接著我改進(jìn)了這個(gè)架構(gòu)圖,再進(jìn)一步,應(yīng)該是這樣的:

我把之前服務(wù)之間直接的互相依賴轉(zhuǎn)變成了統(tǒng)一對(duì)中間件的依賴,這樣未來(lái)再多的服務(wù)整個(gè)系統(tǒng)架構(gòu)都是清晰的。

中間件具備的能力:

同步調(diào)用:直接通過(guò)對(duì)中間件的調(diào)用完成對(duì)服務(wù)的直接調(diào)用

異步調(diào)用:通過(guò)對(duì)中間件的調(diào)用完成對(duì)服務(wù)的異步調(diào)用

然而,這里有個(gè)最大的問(wèn)題就是所有壓力都集中到了中間件,保證中間件的高可用又成為了一個(gè)很大的問(wèn)題。

結(jié)語(yǔ)

除了上述的實(shí)際架構(gòu)是真實(shí)的生產(chǎn)環(huán)境架構(gòu),其他的為我個(gè)人目前的想法,目前個(gè)人未真實(shí)在生產(chǎn)環(huán)境實(shí)現(xiàn)。最后說(shuō)說(shuō)實(shí)際踩的坑:

服務(wù)超時(shí):網(wǎng)關(guān)設(shè)置了熔斷時(shí)間,導(dǎo)致服務(wù)剛提交事務(wù)卻被終端請(qǐng)求導(dǎo)致的數(shù)據(jù)一致性問(wèn)題。再例如,剛發(fā)送短信成功,卻被中斷請(qǐng)求,客戶端返回失敗,實(shí)際卻接收到短信。

分布式事務(wù):跨服務(wù)調(diào)用使得事務(wù)的提交不像以前那么簡(jiǎn)單

如果開發(fā)人少,導(dǎo)致一個(gè)人維護(hù)多個(gè)項(xiàng)目

增加了部署難度

追蹤問(wèn)題難度加深(我們引入了requestId追蹤整個(gè)鏈路的調(diào)用過(guò)程)

Easy PHP:一個(gè)極速輕量級(jí)的PHP全棧框架

掃面下方二維碼關(guān)注我的技術(shù)公眾號(hào),及時(shí)為大家推送我的原創(chuàng)技術(shù)分享

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25595.html

相關(guān)文章

  • 三年Java后端面試經(jīng)歷

    摘要:前言三年后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是的高級(jí)后端開發(fā)。面試結(jié)束,應(yīng)該沒有后續(xù)。 前言 三年Java后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是20k-35k的高級(jí)后端Java開發(fā)。 第一場(chǎng),基本裸面,關(guān)于曾經(jīng)的項(xiàng)目部門答的不好,所以還是得好好準(zhǔn)備。 某C輪在線旅游公司 筆試 先做半個(gè)小時(shí)的筆試題,一共六個(gè)題目,兩道go語(yǔ)言的基礎(chǔ)題,一道斐波那契相關(guān),一道數(shù)據(jù)庫(kù)行列轉(zhuǎn)置,一道實(shí)現(xiàn)一個(gè)棧,還有一道是百萬(wàn)計(jì)...

    darry 評(píng)論0 收藏0
  • 我眼中的PHP

    摘要:趁著吃下午茶,我也來(lái)簡(jiǎn)單談?wù)剬?duì)甚至的一些看法。然而放眼現(xiàn)在,其實(shí)這些東西,感覺像是入門級(jí)別的要求了。說(shuō)說(shuō)我自己吧,不可否認(rèn),在工作中,我確實(shí)是個(gè)打雜,說(shuō)好的架構(gòu)呢,說(shuō)還的管理呢,說(shuō)好的技術(shù)支持呢,,到頭來(lái),還是東忙西忙,一無(wú)所事。 趁著吃下午茶,我也來(lái)簡(jiǎn)單談?wù)剬?duì) PHP 甚至 PHPer 的一些看法。 況且最好的語(yǔ)言要是沒有優(yōu)秀的人,那幾本就是扯淡,沒錯(cuò),就是你們?cè)诖蟠笮⌒〉娜航?jīng)??吹?..

    Lin_R 評(píng)論0 收藏0
  • PHPer這樣寫代碼也許更優(yōu)雅

    摘要:前言轉(zhuǎn)眼間成為一名已經(jīng)快整整兩年了,在這期間也對(duì)如何寫出可讀性高,便于擴(kuò)展的代碼有了一些自己的想法。所以,我們?cè)趯懮嫌未a時(shí)異常直接拋出即可。通常這樣可以很大程度的提高效率和代碼復(fù)用。 前言 轉(zhuǎn)眼間成為一名PHPer已經(jīng)快整整兩年了,在這期間也對(duì)如何寫出可讀性高,便于擴(kuò)展的代碼有了一些自己的想法。 使用引用 場(chǎng)景一:遍歷一個(gè)數(shù)組獲取新的數(shù)據(jù)結(jié)構(gòu) 也許你會(huì)這樣寫: // 申明一個(gè)新的數(shù)組...

    kidsamong 評(píng)論0 收藏0
  • 兩年多我寫PHP業(yè)務(wù)代碼的方式是如何進(jìn)化的

    摘要:曾今誰(shuí)都有過(guò)迷茫期,下面是我開始開發(fā)中,不斷改變的代碼組織方式。 曾今 誰(shuí)都有過(guò)迷茫期,下面是我開始PHP開發(fā)中,不斷改變的代碼組織方式。 初期:所有代碼一股腦控制器controller 曾今只是簡(jiǎn)單的理解MVC 中期:業(yè)務(wù)代碼抽象一部分到模型層model 開始覺得model層是否該做點(diǎn)什么了 后期:業(yè)務(wù)代碼控制器,模型層只寫db的curd方法 復(fù)雜的業(yè)務(wù)代碼使contro...

    qqlcbb 評(píng)論0 收藏0
  • 轉(zhuǎn):從框架看PHP的五種境界及各自的薪資待遇

    摘要:語(yǔ)言行為及特征狀態(tài)看不懂任何英語(yǔ)技術(shù),英語(yǔ)文檔,凡事沒有培訓(xùn)部在搞的,只有英文文檔的東西國(guó)內(nèi)一律沒大公司在用,都非主流,排斥英文文檔和新技術(shù),以及各種超出他學(xué)習(xí)能力范圍的技術(shù)。 在撰寫此文前首先必須申明的是本人不鄙視任何一種框架,也無(wú)意于挑起PHP框架間的戰(zhàn)爭(zhēng),更沒有貶低某個(gè)框架使用者的用意,本文純粹個(gè)人的看法。你可以認(rèn)為我無(wú)知也好,或者裝逼也好,請(qǐng)不要試著在任何情況下,隨便發(fā)起言語(yǔ)的...

    Godtoy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<