千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 億級(jí)流量的互聯(lián)網(wǎng)項(xiàng)目如何快速構(gòu)建?這里為你詳細(xì)解密!

億級(jí)流量的互聯(lián)網(wǎng)項(xiàng)目如何快速構(gòu)建?這里為你詳細(xì)解密!

來(lái)源:千鋒教育
發(fā)布人:syq
時(shí)間: 2022-12-28 16:50:15 1672217415

  一. 大流量的互聯(lián)網(wǎng)項(xiàng)目

  1.項(xiàng)目背景

  之前負(fù)責(zé)的一個(gè)項(xiàng)目,業(yè)務(wù)背景是這樣的。城市的基礎(chǔ)設(shè)施建設(shè)是每個(gè)城市和地區(qū)都會(huì)涉及到的,如何在基建工地中實(shí)現(xiàn)人性化管理,是當(dāng)前項(xiàng)目的主要訴求。該項(xiàng)目要實(shí)現(xiàn)如下目標(biāo):

互聯(lián)網(wǎng)項(xiàng)目如何快速構(gòu)建

  工地工人的智慧考勤:

  考勤機(jī)通過(guò)面容做人臉識(shí)別就能打卡,工人不需要脫手套按指紋,甚至不需要卸下口罩;

  工地安全檢測(cè):

  檢測(cè)某一個(gè)區(qū)域沒(méi)有戴安全帽的工人,可以快速觸發(fā)總控臺(tái),提醒管理員監(jiān)管;

  工地機(jī)器的工作情況:

  統(tǒng)計(jì)工地機(jī)器是否正在工作及已經(jīng)連續(xù)工作時(shí)長(zhǎng),用于檢測(cè)機(jī)器是否在安全時(shí)間內(nèi)使用。

  從上述項(xiàng)目背景中我們就能看出,每一個(gè)功能的實(shí)現(xiàn)都需要硬件設(shè)備來(lái)實(shí)現(xiàn):比如人臉識(shí)別考勤機(jī)來(lái)實(shí)現(xiàn)智慧打卡,帶有人體識(shí)別功能的攝像頭來(lái)捕捉?jīng)]有戴安全帽的人員,傳感器設(shè)備來(lái)統(tǒng)計(jì)機(jī)器是否正在工作。

11

  除了工地項(xiàng)目外,還有另一種很有意思的應(yīng)用場(chǎng)景,就是統(tǒng)計(jì)商場(chǎng)、超市的熱門門店。大家肯定很好奇,這是怎么實(shí)現(xiàn)的?——對(duì)!也是通過(guò)攝像頭。攝像頭采集進(jìn)入商場(chǎng)的人員,不用采集到臉,只需要根據(jù)人體的形態(tài)、衣服顏色、身高等特征值來(lái)標(biāo)識(shí)一個(gè)主體。根據(jù)人體識(shí)別算法,統(tǒng)計(jì)哪些類型的人,在什么時(shí)間段,去了哪些門店。如果特征值足夠匹配,甚至還能統(tǒng)計(jì)出性別和老幼。這個(gè)應(yīng)用場(chǎng)景是不是非常有意思?其實(shí),很多城市已經(jīng)在用這一套系統(tǒng)。甚至還有更有意思的應(yīng)用場(chǎng)景,物聯(lián)網(wǎng)早已深入生活,而IOT的項(xiàng)目中的流量數(shù)據(jù)是非常大的。

  索爾為什么要說(shuō)這些呢?你有沒(méi)有發(fā)現(xiàn),其實(shí)這些都跟硬件設(shè)備有關(guān)。如果老師所在的公司是一個(gè)硬件廠商,或者是一個(gè)小B中間商,就需要知道我買的這些設(shè)備,是否都能夠正常工作。如果能有一個(gè)類似于下面這樣的數(shù)據(jù)大屏,那是不是更加完美呢?我們就是這么干的。

12 (1)

  問(wèn)題來(lái)了,設(shè)備的心跳數(shù)據(jù)該多久上報(bào)一次?上報(bào)時(shí)間間隔的不同會(huì)對(duì)整個(gè)系統(tǒng)造成怎樣的影響?心跳數(shù)據(jù)怎么判斷設(shè)備是否正常?會(huì)有多少的心跳數(shù)據(jù)?

  2.設(shè)備上報(bào)心跳的時(shí)間間隔

  設(shè)備的上報(bào)心跳動(dòng)作其實(shí)是一個(gè)很簡(jiǎn)單的邏輯,就是上報(bào)將自己的設(shè)備key,和當(dāng)前時(shí)間封裝成一個(gè)http請(qǐng)求消息,發(fā)送給平臺(tái)。

  根據(jù)當(dāng)時(shí)硬件部門的設(shè)定,不同設(shè)備的約定不同,每個(gè)設(shè)備大致會(huì)在2秒到5秒之間向平臺(tái)發(fā)送一次心跳。

  3.如何通過(guò)心跳計(jì)算出當(dāng)前時(shí)間段設(shè)備是否正常

  根據(jù)目前的情況,平臺(tái)收到的設(shè)備的心跳信息可以通過(guò)這張表體現(xiàn)出來(lái):

13

  這個(gè)表就是用來(lái)記錄當(dāng)前設(shè)備的最后活躍時(shí)間。那么問(wèn)題來(lái)了,該怎么統(tǒng)計(jì)當(dāng)前時(shí)間段的正常設(shè)備和異常設(shè)備?多久沒(méi)有上報(bào)心跳的設(shè)備會(huì)被判定為異常設(shè)備呢?

  心跳、服務(wù)發(fā)現(xiàn)。對(duì)!你也發(fā)現(xiàn)了,它們好像在描述同一件事情。在這里,參考了微服務(wù)中注冊(cè)中心對(duì)于服務(wù)剔除的方案。比如Nacos的服務(wù)健康檢查機(jī)制:

  Nacos Server會(huì)開(kāi)啟一個(gè)定時(shí)任務(wù)用來(lái)檢查注冊(cè)服務(wù)實(shí)例的健康情況,對(duì)于超過(guò)15秒沒(méi)有收到客戶端心跳的實(shí)例會(huì)將它的健康屬性置為false,如果某個(gè)實(shí)例超過(guò)30秒沒(méi)有收到心跳,則直接剔除該實(shí)例。

  開(kāi)啟了一個(gè)每隔30秒定時(shí)任務(wù),去設(shè)備心跳表中統(tǒng)計(jì)今日上報(bào)心跳的設(shè)備數(shù)量,具體的sql操作如下:

14

  針對(duì)于這條sql,有同學(xué)會(huì)問(wèn),為什么不直接用日期函數(shù):

15

  因?yàn)樾阅埽褂煤瘮?shù)會(huì)導(dǎo)致索引失效,關(guān)于SQL優(yōu)化這一塊的內(nèi)容,大家可以在MySQL優(yōu)化專題里進(jìn)行學(xué)習(xí)。

16 (1)

  我們可以將統(tǒng)計(jì)到的數(shù)據(jù),維護(hù)在redis中。也就是說(shuō),redis中維護(hù)了今日正常設(shè)備的總數(shù),這個(gè)數(shù)據(jù)每30秒更新一次。

  4.并發(fā)量的產(chǎn)生

  在上一章節(jié)中我們提到,任何一個(gè)設(shè)備,都會(huì)上報(bào)其心跳到平臺(tái),而且每個(gè)設(shè)備會(huì)每隔2到5秒左右上報(bào)一次心跳,我們?cè)囁阆拢?/p>

  一臺(tái)設(shè)備:每隔3秒上報(bào)一次;

  三十萬(wàn)臺(tái)設(shè)備:每隔3秒會(huì)上報(bào)30萬(wàn)次;

  平臺(tái):每秒接收到10萬(wàn)次訪問(wèn),每天將會(huì)收到將近百億的消息。

  可以推算出,一個(gè)平臺(tái)基本上每秒都會(huì)收到大約10萬(wàn)次訪問(wèn)。這樣的并發(fā)量不算大,但也不能說(shuō)少,而且這樣每秒10萬(wàn)的請(qǐng)求是持續(xù)的,這10萬(wàn)的請(qǐng)求每秒都會(huì)來(lái),不間斷的來(lái),此時(shí)考驗(yàn)后端接口的時(shí)刻就到了。

  5.業(yè)務(wù)如何處理

  后端接口做到高性能、高可用設(shè)計(jì),我們會(huì)在之后的專題去講,這里先聊一下接口收到數(shù)據(jù)后,該如何處理。

  很顯然,接口收到設(shè)備上報(bào)的心跳數(shù)據(jù)后,要把數(shù)據(jù)落到數(shù)據(jù)庫(kù)里。這就是具體業(yè)務(wù)要做的事,很簡(jiǎn)單,只要落到數(shù)據(jù)庫(kù)里就可以。

  二. 待解決的核心業(yè)務(wù)邏輯

  1.項(xiàng)目模塊

17 (1)

  整個(gè)項(xiàng)目分成了以下幾個(gè)子項(xiàng)目:

  數(shù)據(jù)大屏前端項(xiàng)目

  數(shù)據(jù)大屏后端項(xiàng)目

  硬件后端項(xiàng)目

  硬件設(shè)備

  Redis緩存服務(wù)器

  MySQL關(guān)系型數(shù)據(jù)庫(kù)

  這些項(xiàng)目之間有著重要的聯(lián)系,這樣的聯(lián)系可以總結(jié)為兩點(diǎn):一是數(shù)據(jù)大屏的后端為數(shù)據(jù)大屏的前端提供數(shù)據(jù),二是硬件設(shè)備的后端供硬件設(shè)備訪問(wèn)實(shí)現(xiàn)數(shù)據(jù)交互。

  那么問(wèn)題來(lái)了,以第一點(diǎn)為例,后端和前端的數(shù)據(jù)交互方式是什么樣?

  2.前后端交互方式

18 (1)

  “前端”的概念可以是多種終端的瀏覽器。部署在web服務(wù)器上的Java Web應(yīng)用程序(即“后端”)提供了供http協(xié)議訪問(wèn)的web接口,也就是程序的調(diào)用入口。前端通過(guò)http協(xié)議訪問(wèn)后端的web接口,實(shí)現(xiàn)數(shù)據(jù)的交互。比如前端通過(guò)http協(xié)議訪問(wèn)后端獲取網(wǎng)絡(luò)資源的web接口,后端通過(guò)io流的方式獲得網(wǎng)絡(luò)資源并使用http協(xié)議返回給前端。這就是一個(gè)完整的前后端交互過(guò)程。

  3.核心業(yè)務(wù)

  如何編寫Java程序。關(guān)于Java入門及Java核心基礎(chǔ)部分的知識(shí),老師為大家準(zhǔn)備了這一套Java核心基礎(chǔ)課程視頻非常建議剛?cè)腴T的同學(xué)好好學(xué)一遍。

  硬件如何訪問(wèn)到Java程序:

  硬件也可以通過(guò)http協(xié)議來(lái)訪問(wèn)到j(luò)ava的web接口;

  數(shù)據(jù)存到哪:

  打卡機(jī)等硬件生成員工的打卡數(shù)據(jù),將數(shù)據(jù)發(fā)送給后端Java程序,Java程序?qū)?shù)據(jù)保存到MySQL數(shù)據(jù)庫(kù)中。但這還不夠,因?yàn)閿?shù)據(jù)大屏的前端也需要獲得數(shù)據(jù),于是需要讓數(shù)據(jù)大屏的后端去數(shù)據(jù)庫(kù)獲取數(shù)據(jù);

  優(yōu)化點(diǎn)在哪里。

  很顯然,設(shè)備的數(shù)據(jù)量非常大,勢(shì)必給數(shù)據(jù)庫(kù)造成過(guò)大的壓力。優(yōu)化點(diǎn)就在于如何讓數(shù)據(jù)庫(kù)更輕松一些。使用在處理能力上面非常優(yōu)秀的Redis緩存數(shù)據(jù)庫(kù),解決數(shù)據(jù)庫(kù)的壓力。此時(shí),與硬件對(duì)應(yīng)的后端java程序?qū)?shù)據(jù)存入到redis中,數(shù)據(jù)大屏的后端程序從redis中取出數(shù)據(jù),展示在數(shù)據(jù)大屏前端項(xiàng)目中。

  三. 核心業(yè)務(wù)代碼

  1.供硬件訪問(wèn)的后端Java程序

  1.1 Controller

19

  1.2 service

20

  2.數(shù)據(jù)大屏前端訪問(wèn)后端接口

21

  前端使用VUE的axios來(lái)發(fā)送http請(qǐng)求,訪問(wèn)后端接口,并實(shí)時(shí)展示在DataV前端數(shù)據(jù)大屏框架的翻牌器組件中。

  3.數(shù)據(jù)大屏后端提供數(shù)據(jù)的接口

  3.1 Controller

22

  3.2 service

23

  四. 前后端聯(lián)調(diào)及測(cè)試

  1.使用Postman測(cè)試后端硬件打卡接口

24

  模擬使用id是1003,姓名是xiaoming的用戶進(jìn)行打卡,并返回打卡成功。

  2.使用Postman測(cè)試后端獲得打卡數(shù)據(jù)接口

25

  訪問(wèn)后端獲得打卡總數(shù)的接口,獲得的打卡總數(shù)為18。

  3.啟動(dòng)前端項(xiàng)目獲得打卡總數(shù)

  在項(xiàng)目路徑中使用cnpm install 安裝vue項(xiàng)目需要的依賴;

  在項(xiàng)目路徑中使用npm run serve 啟動(dòng)項(xiàng)目;

  獲得頁(yè)面數(shù)據(jù)。

26

  以上內(nèi)容就是為大家分享的億級(jí)流量互聯(lián)網(wǎng)項(xiàng)目構(gòu)建思路,不知道你現(xiàn)在是不是得到了一些啟發(fā)呢?在我們的線下課程里,這個(gè)智慧工地的項(xiàng)目會(huì)有詳細(xì)的講解哦,歡迎你來(lái)學(xué)習(xí)。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
為什么SpringBoot的 jar 可以直接運(yùn)行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫(kù)等...詳情>>

2023-10-14 23:01:49
站群服務(wù)器是什么?

站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個(gè)人擁有,并且經(jīng)常會(huì)互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設(shè)計(jì)靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認(rèn)知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過(guò)編碼過(guò)程,形成一個(gè)隱藏層的特征表示...詳情>>

2023-10-14 22:41:10
什么是云網(wǎng)融合?

一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計(jì)算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實(shí)現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

2023-10-14 22:31:47
什么是setnx、Redlock、Redisson?

一、setnxsetnx是Redis中的一個(gè)命令,用于將鍵值對(duì)(key-value)設(shè)置到Redis數(shù)據(jù)庫(kù)中。其中,setnx表示”Set if Not Exists”,即當(dāng)...詳情>>

2023-10-14 22:22:53
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
日韩中文字幕第一页 | 色九九在线视频精品99 | 婷婷色香五月综合缴缴情 | 少妇把腿扒开我添69式 | 性饥渴一区二区三区1 | 日韩在线不卡免费视频一区 |