国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試官:你給我畫一下秒殺系統的架構圖!

開發 架構
當年自己的八股文背的其實還可以,但是自己的項目就只是一個單機系統,分布式?微服務?什么玩意?,還記得當時微眾面試,是二面,在一個酒店房間,面試官笑嘻嘻的看著我,說讓我先畫一下我項目里面的農資電商平臺, 我腦子嗡嗡叫,啥?咋畫, 就一個安卓系統,一個前端頁面,和一個后臺系統?

 ?[[417292]]?

本文轉載自微信公眾號「Java補習課」,作者九靈。轉載本文請聯系Java補習課公眾號。

淚目,不堪回首!

博主畢業4年了,最近秋招開始了,每次回想起自己的秋招,都感覺到當時自己特別的可惜(菜是原罪),自己當時簡歷上面的項目,只有一個 農資電商平臺,當時的秒殺系統還沒有那么普及(簡歷人均秒殺系統)。

第一次微眾面試

當年自己的八股文背的其實還可以,但是自己的項目就只是一個單機系統,分布式?微服務?什么玩意?,還記得當時微眾面試,是二面,在一個酒店房間,面試官笑嘻嘻的看著我,說讓我先畫一下我項目里面的農資電商平臺, 我腦子嗡嗡叫,啥?咋畫, 就一個安卓系統,一個前端頁面,和一個后臺系統?

大概長這樣子

??

我擦,這也太簡單了吧, 我是不是該畫復雜一點? 或者說,我這個能叫架構嗎?就這樣,猶豫之間,毛線都沒有畫出來... 我記得當時好像畫了個這樣子的玩意。。毫無意外的,嗝屁了~

這玩意有點四不像,不說了,丟臉~

??

第二次微眾面試

第二次微眾面試,畢業有快一年了,抱著試一下的心態,找了個師姐內推, 那時候我在干啥呢,在搞爬蟲。公司離微眾比較近,就在金蝶那邊,下班了溜過去,跟面試官吧啦了一會八股文,好家伙,沒一會就掏出了一張紙:

來畫一下你們現在這個爬蟲系統的架構圖!

當時系統的部署架構長這樣吧, 比上面的看起來還簡單一點。

??

但是,我就是畫不出手啊!!!心里想著太簡單了啊!!這玩意能叫架構嗎?

攤牌了, 我不會畫!

現在想起來,真的太憋屈了,年輕啊!那如果現在來回頭看的話,能怎么畫呢?

單體系統的部署架構圖

??

爬蟲系統的分層架構圖

??

爬蟲系統的業務架構

??

架構圖

從上面的各個方向描述架構來看,其實即使是單體系統 也能夠畫出不一般的架構圖!(為啥當時我就不會呢!)

最近在看架構相關的內容(華仔的課),在4+1 視圖里面,從多方面描述了我們的系統,可以參考下面的描述,

??

你的秒殺系統,架構是怎么樣的?

單體系統

不管你們簡歷吹的多牛逼,我猜你們的服務,大部分都是長這個樣子的,猜對的話點個關注, 只有瀏覽器是分布式的。

??

那我該如何去描述我的單體系統呢?

架構設計的三大原則:

  • 簡單原則
  • 合適原則
  • 演進原則

每一條原則都符合我們大學做的秒殺系統啊!!

簡單原則:一個系統就可以滿足我們秒殺服務的所有動作,沒有太多的中間件依賴

合適原則:在我們的實踐項目中,單體系統是最適合不過的了。(主要是沒錢啊!拆分服務,引入中間件,部署集群,都得錢啊!)

演進原則:這個比較好理解,沒有什么系統架構是一出生就定下來的,是隨著時間,業務需求,不斷演變出來的。

總結:

我們架構的優勢: 成本低,系統復雜度低,維護成本低,快速定位問題

劣勢:穩定性差,并發量低,擴展性弱等

在梳理架構時,每個方案都有他的優勢和缺點,所以需要了解你目前方案的優缺點。才能更好的向面試官展示你的系統!

服務拆分

好家伙,參加了個科創比賽,資金到位了,能買更多機器了,那不得將服務優化一下,拆分個微服務系統出來!

??

在這個服務拆分的架構中,我們做了哪些動作?

  • 靜態資源隔離(CDN加速)
  • 代理服務器(Nginx)
  • 服務拆分,應用獨立部署
  • 服務rpc通信 (rpc框架 & 注冊中心)

1、前后端分離

在單體系統中,我們的靜態資源(Html,JS,CSS 和 IMG)可能都是通過我們服務端進行返回,存在的問題是:

前端代碼維護成本比較高(全棧開發成本也高)

前端代碼發布,需要整個系統進行發布

服務器帶寬,請求資源占用等

那么通過前后端分離所帶來的好處就很明顯了:

代碼獨立維護(低耦合),發布成本低(高效率)

前后端通過接口交互動態數據

CDN資源訪問加速,減少后端服務壓力(高性能)

2、反向代理

反向代理的作用比較明顯, 由于我們服務拆分成多個,那么我們和前端進行交互時,需要提供一個通用的入口。而這個入口,就是我們的反向代理服務器(Nginx)。例如:服務域名:https://www.jiuling.com ,根據restful規范,我們可以通過 https://www.jiuling.com/user/1.0/login 將請求轉發到 用戶服務的登錄接口中。

3.進程間通信

隨著服務的拆分,在部分功能的實現上,就會涉及到服務間相互調用的情況,例如:

??

在常見的實現方案上,我們會采用 注冊中心 和 RPC框架,來實現這一能力。而我們比較常用的實現方案就是 zookeeper & dubbo。

??

為什么要使用 RPC 框架?

當我們提到使用 RPC框架 的時候,是否有去思考過,為什么要使用 RPC框架? 每個服務提供 RESTful 接口,不是也能夠完成服務間通信嗎?

這里就需要進行對比 RPC 和 RESTful 的區別了:

  • 數據報文小&傳輸效率快:RPC簡化了傳輸協議中一些必要的頭部信息,從而加快了傳輸效率。
  • 開發成本低:例如 Dubbo框架,封裝好了服務間調用的邏輯(如:反射,建連和超時控制等),只需要開發相應的接口和數據模型即可。
  • 服務治理: 在分布式場景下,我們的服務提供者不止一臺,那么就涉及到 服務健康,負載均衡和服務流控等情況需要處理,而這部分能力在rpc & 注冊中心 的架構下,都已經滿足了。

說完優點后,再來分析一下,RPC的缺點:

  • 耦合性強:相較于 RESTful而言,RPC 框架在跨語言的場景下實現比較困難。并且版本依賴比較強。服務脫離了當前內網環境后,無法正常提供服務,遷移成本高。
  • 內網調用:RPC更適合內網傳輸,在公網環境下,顯得沒那么安全。

分布式微服務

在上一個版本的服務拆分中, 我們根據不同的業務邊界,功能職責,劃分出了多個子系統,而針對不同的系統,他所承受的負載壓力是不一樣的,例如:訂單服務的每個請求處理耗時較長(其他服務壓力不大),為了挺升我們的下單量,我們可以只擴容訂單服務即可,這就是我們在服務拆分所帶來的收益,性能使用率提升!

??

從上面的圖我們可以看到,有些服務出現了不同的重影,每一個方塊,可以理解為一臺機器,在這個架構中, 為了保證我們的下單成功率,以及下單量,我們主要將服務器集中在了訂單服務。

除此之前,再來看看我們的中間件集群部署:

  • mysql 主從架構:讀寫分離,減輕主庫壓力,確保數據能正常寫入,保障訂單數據落庫.
  • zookeeper 主從架構:保障注冊中心可用,避免導致全鏈路雪崩。
  • redis 哨兵集群:避免redis宕機導致大流量直接打到數據庫中。

小結

到這里為止,一般我們自己開發的系統,也就基本完成了整個秒殺系統的演進了。可能大伙一直有個疑問,為什么少了我們最熟悉的MQ呢?

在整個調用鏈路中,我都是以同步調用的方式去講述這一個秒殺系統的架構,因為這個已經滿足我們當前的流量訴求了,在架構設計的原則里面,提到的,合適原則,和演進原則。在當前滿足流量需求的情況下,我們需要先思考引入消息中間件,帶來的問題是什么?解決的問題又是什么?在權衡利弊后,才是我們決策是否要使用這個方案的時候。

高性能

在上述架構演進的過程中,我們通過服務拆分,垂直擴容,分布式部署等方式,提升了我們架構的性能和穩定性,對于我們自研階段的架構演進已經是足夠滿足我們的流量訴求了,但如果我們想繼續優化我們的系統,提升服務性能,可以從以下幾個方面進行優化:

  • 資源預熱
  • 緩存預熱
  • 異步調用

1、資源預熱

在上面的服務拆分階段, 我們就提到了資源動靜分離, 這里的靜態資源包括:html,js,css,img 等。我們活動階段,可以通過后臺管理系統,將商品服務中的活動的靜態資源預熱到CDN,加速資源的訪問。

資源預熱: 通過預先將資源加載到CDN
回源:CDN找不到資源后,會觸發源站(商品服務)調用,進行查詢對應資源,如果源站存在該資源,則會返回到CDN中進行緩存。
OSS: 實際存儲靜態資源的服務(可參考阿里云OSS)

??

上面有反復提到,引入一個技術的時候,需要同時考慮它所帶來的利和弊,那么 CDN的風險是什么呢?

  • 成本 : 比較直接,就是得多花錢!
  • 帶寬 :在大流量的訪問下, CDN 是否能支撐那么多的帶寬,每個服務器能支撐的流量是有限的,需要考慮CDN是否能支撐業務的訪問量。
  • CDN命中率: 在CDN命中率低的情況下,比如活動圖片,每一個小時都會發生改變,那么每次圖片的替換,都會觸發回源操作,這時候的資源訪問效率反而有所下降。

2、緩存預熱

與上面的靜態資源加速相對比,動態數據則需要通過緩存進行性能上的優化,老生常談,為什么redis 那么快?

單線程(redis的性能瓶頸并不在這,所以這個不算優勢)

  • 多路I/O復用模型
  • 數據結構簡單
  • 基于內存操作

??

引入 redis 帶來的風險主要有:

  • reids 宕機:單機部署的情況下,會導致大量的服務調用超時,最終引起服務雪崩。可通過Sentinel集群優化。
  • 緩存擊穿:大流量下,緩存MISS和緩存過期等情況,會導致請求穿透到數據庫,如果數據庫扛不住壓力,會造成服務雪崩。可以通過 布隆過濾器進行優化。
  • 數據一致性:緩存數據與DB 的數據一致性問題,需要通過更新策略進行保障。

3、異步調用

通過異步的方式,將減庫存成功的用戶,通過消息的方式,發送給訂單服務,進行后續的下單操作。可以在短時間內,將所有的商品銷售出去。整體的流程如下圖所示:

MQ異步調用為什么能過提升我們服務的吞吐量呢?

主要原因在于,通過異步調用的方式,我們將消息投遞過去了,就完成了這一次的請求處理,那么性能的瓶頸,由訂單服務,轉移到了秒殺服務這里。通過減少調用依賴,從而提升了整體服務的吞吐量。

??

MQ 帶來的常見問題:

  • 數據一致性
  • 重復消費:由于生產者重復投遞消息,或者消費緩慢導致重復推送消息。需要通過加鎖,消費冪等來保證消費正常。
  • 消息堆積:生產能力遠大于消費能力情況下,會導致消息堆積。
  • MQ可用性:MQ宕機的情況下,需要支持同步調用切換。
  • 這里不做詳細介紹,后面會專門寫一篇MQ相關的文章。

高可用

能看到這里真不容易,感謝大家的支持。關于可用性這里,之前有寫過一篇 # 《高可用實戰》-B站蹦了,關我A站什么事?感興趣可以看一下。

高可用主要可以從:

  • 動態擴容:根據服務壓力,針對不同服務進行動態擴容。
  • 限流熔斷:可參考我之前的文章:# 《高可用實戰》-B站蹦了,關我A站什么事?
  • 異地多活: 通過多機房部署,避免物理攻擊!

同城雙活

部署在同一個城市不同區的機房,用專用網絡連接。兩個機房距離一般就是幾十千米,網絡傳輸速度幾乎和同一個機房相同,降低了系統復雜度、成本。

??

這個模式無法解決極端的災難情況,例如某個城市的地震、水災,此方式是用來解決一些常規故障的,例如機房的火災、停電、空調故障。

異地多活

在上述模式中,沒辦法解決城市級別的服務容災,比如水災,地震等情。而通過異地多活的部署方案,則可以解決這種問題。

但是每個方案都是存在利和弊的,那么異地多活的弊端主要體現在網絡傳輸和數據一致性的問題上!

跨城異地主要問題就是網絡傳輸延遲,例如北京到廣州,正常情況下的RTT(Round-Trip Time 往返時延)是50毫秒,
當遇到網絡波動等情況,會升到500毫秒甚至1秒,而且會有丟包問題。

物理距離必然導致數據不一致,這就得從“數據”特性來解決,
如果是強一致性要求的數據(如存款余額),就無法做異地多活。

圖片地址:draw.io原圖


責任編輯:武曉燕 來源: Java補習課
相關推薦

2020-07-30 07:58:36

加密算法

2021-07-28 10:08:19

類加載代碼塊面試

2023-09-12 14:56:13

MyBatis緩存機制

2023-02-18 13:34:14

Nacos健康檢查機制

2022-06-06 15:33:20

線程Java釋放鎖

2022-06-07 12:03:33

Java內存模型

2025-03-10 07:05:07

2023-11-29 08:00:53

JavaTreeMap底層

2020-08-07 15:15:01

Java內存泄漏面試

2023-12-29 13:45:00

2024-01-29 10:08:11

零拷貝Zero-copyCPU 拷貝

2024-02-21 16:42:00

2024-02-27 15:23:48

RedLock算法Redis

2015-08-13 10:29:12

面試面試官

2023-02-08 08:32:41

輪詢鎖

2021-11-08 15:59:01

MyBatis關聯開發

2021-08-28 09:06:11

Dubbo架構服務

2023-01-30 15:39:40

GETHTTP

2021-06-02 11:25:18

線程池Java代碼

2023-03-08 07:46:53

面試官優化結構體
點贊
收藏

51CTO技術棧公眾號

亚洲一区电影| 国产色产综合色产在线视频 | 国产欧美一区二区精品性色超碰| 欧美三级华人主播| 黄色网一区二区| 精品国产视频在线| 色综合桃花网| 精品国产一区二区亚洲人成毛片| 韩国三级在线观看久| 一区二区三区欧美亚洲| 成人亚洲视频在线观看| 99久久99久久久精品齐齐| 亚洲第一页在线视频| 日韩国产在线观看一区| 蜜桃av色综合| 国产欧美高清| 国产精品入口免费| 亚洲网站在线| 国产精品一码二码三码在线| 你懂的国产精品永久在线| 国产精品爽黄69天堂a| 外国成人在线视频| 欧美亚洲日本网站| 亚洲区小说区图片区qvod| 国内精品视频一区| 青青久久av| 国产精品入口夜色视频大尺度 | 牛牛国产精品| 91最新在线免费观看| 91精品国产成人观看| 成人网在线免费观看| 欧美激情日韩| 精品乱码一区二区三区| 日韩av电影天堂| 亚洲精品美女久久7777777| 奇米影视一区二区三区小说| 亚洲欧美精品在线观看| 成人免费毛片片v| 黄色一级大片在线观看| 亚洲精品中文在线影院| 伊人网在线免费观看| 欧美综合视频在线观看| 青春草视频在线观看| 亚洲一区二区久久| 试看120秒一区二区三区| 日韩美女av在线免费观看| 女生裸体视频一区二区三区 | 激情五月色综合国产精品| 国产噜噜噜噜久久久久久久久| 欧美99在线视频观看| 狠狠色噜噜狠狠色综合久| 三级精品在线观看| 中文字幕福利片| 岛国av一区二区| 欧美视频免费一区二区三区| 国产精品国产三级国产有无不卡| 成人午夜视频在线观看免费| 国产精品三级av| 致1999电视剧免费观看策驰影院| 国产三级精品在线| 狠狠精品干练久久久无码中文字幕| www.成人69.com| 欧美主播一区二区三区| 91看片一区| 亚洲一区二区三区sesese| 国产精品美日韩| 一级毛片免费看| 欧美日韩国产精品一区二区不卡中文 | 天天影视涩香欲综合网| 日本片在线看| 精品国产一区a| 日韩成人精品一区二区三区| 国产精品视频一区国模私拍| 久久免费黄色| 欧美日韩激情视频在线观看| 婷婷开心久久网| 牛牛精品一区二区| 欧美极品xxxx| 校园激情久久| 久草在线在线视频| 亚洲成人久久一区| 美女少妇全过程你懂的久久| 午夜精品一区二区在线观看的| 中文字幕在线不卡一区二区三区| 影音先锋在线播放| 久久久久久香蕉网| 日韩精品一二三四| 三上悠亚在线观看二区| 亚洲性av网站| 亚洲国内精品| 在线观看免费视频高清游戏推荐| 91精品国产手机| 日韩电影在线观看完整免费观看| 一本色道婷婷久久欧美| 欧美日韩亚洲视频| 91精品久久久久久综合五月天| 欧美一区二区影视| 亚洲一区二区美女| 91国产一区| 亚洲高清视频一区| 精品日韩视频在线观看| 一区视频网站| 欧美在线观看视频免费| 欧美亚洲国产一区二区三区va| 国产欧美啪啪| 国产中文字幕二区| 日韩欧美一二区| 五月天综合网站| 91福利免费| 免费不卡欧美自拍视频| 久久se精品一区精品二区| 超碰免费在线| 国产精品欧美在线| 国产日韩欧美在线一区| 午夜精品成人av| 视频一区二区三区在线观看| 色嗨嗨av一区二区三区| 精品视频99| 大香一本蕉伊线亚洲网| 萌白酱国产一区二区| 国产精品一区二区在线播放 | 91精品国产91久久久久久| 国产在线播放一区| 91九色美女在线视频| 欧美精品国产精品久久久 | 日韩免费毛片视频| 亚洲欧洲日韩国产| 麻豆传媒一区二区三区| 日本暖暖在线视频| 成人午夜在线视频一区| 亚洲一区影音先锋| 久久中文字幕av| 水莓100在线视频| 91久久精品久久国产性色也91 | 精品亚洲一区二区三区四区| 色偷偷88888欧美精品久久久| 激情成人午夜视频| 久久爱91午夜羞羞| 黄色成人在线免费观看| 亚洲午夜av电影| av电影一区二区| 性欧美video另类hd尤物| av免费在线播放网站| 欧美激情a在线| 亚洲同性同志一二三专区| 中文字幕av一区二区三区人| 在线久久视频| 国产99久久久欧美黑人| 天天影视色香欲综合网老头| 欧美三级午夜理伦三级中文幕| 免费a级在线播放| 亚洲 欧洲 日韩| 久久精品精品电影网| 久久欧美一区二区| 亚州国产精品| 亚洲成人影院少妇| 国产日韩精品久久| 亚洲精品在线观| 国产·精品毛片| 亚洲乱码一区| 一级黄色在线| 日韩精品欧美在线| 色777狠狠综合秋免鲁丝| 中文字幕精品在线不卡| 精品免费一区二区| 精品麻豆一区二区三区 | 久久不射中文字幕| 免费成人美女女| 4虎在线播放1区| 国内精品久久国产| 亚洲欧美日韩第一区| 中日韩av电影| 极品中文字幕一区| 密臀av在线播放| 久久婷婷综合色| a级国产乱理论片在线观看99| 精品国产乱码久久久久久图片 | 国产有色视频色综合| 精品夜色国产国偷在线| 中文字幕乱码亚洲精品一区| 欧美在线免费| 欧美羞羞视频| 亚洲精品一区二区| 乱色588欧美| 日韩亚洲欧美成人| 五月天中文字幕一区二区| 久久精品国产免费看久久精品| 免费看久久久| 日本在线观看大片免费视频 | 国产成人啪免费观看软件 | 国产黄色免费电影| 欧美日韩日本网| 久久久久久久成人| 在线不卡中文字幕| 国产亚洲女人久久久久毛片| 亚洲精品影视| 日韩欧美影院| 日本肉肉一区 | 欧美日韩综合网| 91黑丝高跟在线|