中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)怎么做賬會(huì)計(jì)谷歌怎么推廣自己的網(wǎng)站

網(wǎng)站建設(shè)怎么做賬會(huì)計(jì),谷歌怎么推廣自己的網(wǎng)站,疫情結(jié)束時(shí)間,WordPress出現(xiàn)503報(bào)錯(cuò)會(huì)議平臺(tái)后端優(yōu)化方案 通過RTC的學(xué)習(xí),我了解到了端對(duì)端技術(shù),就想著做一個(gè)節(jié)省服務(wù)器資源的會(huì)議平臺(tái) 之前做了這個(gè)項(xiàng)目,快手二面被問到卡著不知如何介紹,便有了這篇文章 分析當(dāng)下機(jī)制 相對(duì)于傳統(tǒng)視頻平臺(tái)(SFU&#xff…

會(huì)議平臺(tái)后端優(yōu)化方案

通過RTC的學(xué)習(xí),我了解到了端對(duì)端技術(shù),就想著做一個(gè)節(jié)省服務(wù)器資源的會(huì)議平臺(tái)
之前做了這個(gè)項(xiàng)目,快手二面被問到卡著不知如何介紹,便有了這篇文章

分析當(dāng)下機(jī)制

相對(duì)于傳統(tǒng)視頻平臺(tái)(SFU,MCU架構(gòu))

之前幫學(xué)長(zhǎng)做壓測(cè)RTC監(jiān)控時(shí),10M校園網(wǎng)寬帶,標(biāo)清畫質(zhì)只能跑到22個(gè)(MCU架構(gòu)),

畢竟是監(jiān)控就只能卡在自己寬帶下了

image-20241001001901382

所有資源從服務(wù)器拉取,大量的上下傳極大的加重了服務(wù)器壓力,

目前行業(yè)內(nèi)如直播方式更多是使用分布式服務(wù)器,

如我在北京開了直播,一部分觀眾在廣東一部分在上海,

此時(shí),視頻流將先傳到北京服務(wù)器轉(zhuǎn)發(fā)到廣東服務(wù)器和上海服務(wù)器進(jìn)行一個(gè)服務(wù)器的分壓處理,當(dāng)然下面還有更多子服務(wù)器去分壓,

而這種形式對(duì)于我們這種學(xué)生開發(fā)者是行不通的,我們只能省吃儉用租用一臺(tái)公有云,

而在之前開發(fā) ESP32 Mesh 組網(wǎng)時(shí)來了靈感

ESP-MESH - ESP32 - — ESP-IDF 編程指南 v4.3.1 文檔 (espressif.com)

image-20241001002741260

我們?nèi)绻鲆粋€(gè)多人群聊(類似會(huì)議平臺(tái)),只需要使用每個(gè)設(shè)備進(jìn)行 P2P 的 RTC 推拉流可以完美減緩服務(wù)器壓力,

而服務(wù)器只需要負(fù)責(zé)信令匯總交換,還有客戶端檢測(cè),?;畹牟僮骷纯?/p>

甚至我的輕量級(jí)服務(wù)器也能跑上(壓測(cè)時(shí),用到了redis緩沖mysql)

也許好的想法總是相似的,網(wǎng)上看到了很多大佬也這樣去做了(MESH架構(gòu))

image-20241001003423135

我第一次嘗試使用了 golang gin 去寫一個(gè)信令交互(也是有g(shù)olang直接能調(diào)庫使用RTC的原因),

實(shí)現(xiàn)的并不是很理想,

做了票據(jù)憑證登錄(郵箱),

設(shè)計(jì)了 Mysql數(shù)據(jù)庫(大家平時(shí)多練習(xí),面試要手撕),

最后實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn),并不是很理想。

畢竟跑在一個(gè)2核1G內(nèi)存的超級(jí)輕量級(jí)服務(wù)器上的,

配合其他項(xiàng)目。。。。單是跑起來就直接爆了幾次內(nèi)存,(也不太敢和別人聊這個(gè)項(xiàng)目最后成果)

更別提對(duì)他進(jìn)行壓測(cè),

后來重新?lián)炱饋砗?#xff0c;打算直接融入到我的博客網(wǎng)站其中一個(gè)路由中,

實(shí)現(xiàn)了一個(gè)保障會(huì)議成員隱私,使用完無痕,的會(huì)議平臺(tái)。(僅供學(xué)習(xí)參考)

image-20241001013250207

會(huì)議創(chuàng)建機(jī)制

一個(gè)post創(chuàng)建會(huì)議

會(huì)議號(hào)類似秘鑰,名字可填可不填,不填我爬 ip 用 ip代指,

房間創(chuàng)建后永久保留唯一留痕在這里(不是說無痕嗎?創(chuàng)建的人還是要跟蹤記錄爬取一下的哈哈哈,之前經(jīng)歷了sql注入,還好做了防注入 )

a20f0822cbcb1e32db5ec3580c9d65e

爬取ip以及地點(diǎn) 看是誰創(chuàng)的

image-20241001005056686

image-20241001005121677

這里meeting_id作為索引,指向另一張表參加此id的人群,

來完成一個(gè)快速查表工作,

當(dāng)然此時(shí)還沒加入會(huì)議,

加入會(huì)議機(jī)制

對(duì)于保活,和及時(shí)提出會(huì)議,像我個(gè)人感受

我每次開完會(huì)更希望直接關(guān)閉瀏覽器實(shí)現(xiàn)一個(gè)全自動(dòng)退出會(huì)議的方式,

image-20241001012330563

關(guān)閉瀏覽器后,檢測(cè)斷開直接刪除

image-20241001012344316

我之前開發(fā) esp32 AP 模式時(shí)(哈哈哈還是esp)

需要通過wifi節(jié)點(diǎn)的web直接對(duì)esp進(jìn)行操作,如小車前進(jìn)后退

使用了websocket,

我便考慮了websocket,他可以實(shí)時(shí)檢測(cè),又是全雙工,

完美的事物總是有缺陷的一面,

我需要給他額外開端口,

這可不是什么好方式,又要去申請(qǐng)一張證書,不然萬一來個(gè)中間人攻擊那大家的隱私不是沒了嗎?

此時(shí)我發(fā)現(xiàn)了SocketIO 基于websocket,可跑在443端口的神器,

python示例代碼:

首先,便是相應(yīng)庫使用,以及對(duì)基礎(chǔ)連接進(jìn)行反應(yīng)

from flask import Flask
from flask_socketio import SocketIO, emit,sessionapp = Flask(__name__)
socketio = SocketIO(app)@socketio.on('connect')
def handle_connect():print('A client has connected.')

接下來我們就要處理加入事件

拿到消息后,存入到session中,以便后續(xù)對(duì)斷開操作

@socketio.on('join')
def handle_join(data):meeting_id = data['meeting_id']user_id = data['user_id']SDP = data['SDP']CANDIDATE = data['CANDIDATE']session['user_id'] = user_idsession['meeting_id'] = meeting_idprint(f"User {user_id} try to join meeting {meeting_id}")

連接數(shù)據(jù)庫

把這個(gè)用戶歸類到相應(yīng)room中

以便后續(xù)處理

connection = connector.connect(**db_config)cursor = connection.cursor()cursor.execute("SELECT * FROM meetings WHERE meeting_id = %s", (meeting_id,))meeting = cursor.fetchone()if not meeting:socketio.emit('join_response', {"error": "會(huì)議不存在"}, to=request.sid)returnprint(f'a client {user_id} has joined the meeting {meeting_id}')# 將用戶加入房間join_room(meeting_id)# 插入?yún)⑴c者到數(shù)據(jù)庫cursor.execute("INSERT INTO participants (meeting_id, user_id,SDP,CANDIDATE) VALUES (%s, %s,%s,%s)", (meeting_id, user_id,SDP,CANDIDATE))connection.commit()

拉取room的所有人進(jìn)行廣播,更新參與者,把拉取的數(shù)據(jù)整理成字典,傳至前端

#返回此會(huì)議室的所有人的信令cursor.execute("SELECT user_id, SDP, CANDIDATE FROM participants WHERE meeting_id = %s",(meeting_id,))room_participants = cursor.fetchall()dist={}for i in room_participants:dist[i[0]]={"SDP":i[1],"CANDIDATE":i[2]}# 成功后發(fā)送確認(rèn)消息socketio.emit('join_response', {"status": "success", "message": f"User {user_id} joined meeting {meeting_id}.","room_participants":dist}, to=request.sid)# 通知所有房間內(nèi)的客戶端更新參與者列表socketio.emit('update_participants', participants_list[meeting_id], room=meeting_id)

image-20241001012453533

{王宇:{Can:“ssss”,Sdp:“sss”},王:{Can:“ssss”,Sdp:“sss”},。。。。。
}

檢測(cè)斷聯(lián),從session讀取操作對(duì)象信息

@socketio.on('disconnect')
def handle_disconnect():user_id = session.get('user_id')meeting_id = session.get('meeting_id')print(f'A client {user_id} has disconnected.')leave_room(meeting_id)# 從數(shù)據(jù)庫中刪除參與者connection = connector.connect(**db_config)cursor = connection.cursor()cursor.execute("DELETE FROM participants WHERE meeting_id = %s AND user_id = %s", (meeting_id, user_id))connection.commit()# 通知所有客戶端更新參與者列表socketio.emit('update_participants', participants_list[meeting_id], room=meeting_id)

通過以上能簡(jiǎn)單完成我們想要的效果.

測(cè)試并進(jìn)行二次開發(fā)

我先對(duì)上面板塊進(jìn)行單元測(cè)試

發(fā)現(xiàn)沒有任何問題,

將其與博客網(wǎng)站進(jìn)行整體測(cè)試,

最終沒有問題直接上傳代碼更新了服務(wù)器(2c 1g 30MB),

我們對(duì)其進(jìn)行壓測(cè),

在無連接時(shí),內(nèi)存占用到了700mb

哈哈哈至少還有250mb給我們用

(我這里把 ip 限制關(guān)閉和 uwsgi 限制客戶端個(gè)數(shù)關(guān)閉了 ,本來只能一個(gè)ip五個(gè)坑位,這里放開以便測(cè)試)

通過python自動(dòng)構(gòu)建了客戶端與其連接,

當(dāng)產(chǎn)生到320+客戶端的時(shí)候,成功崩了

但通過查詢內(nèi)存占用的時(shí)候(如下圖)

發(fā)現(xiàn)還不到20Mb,零頭都沒到啊,看來不是內(nèi)存原因

image-20241001014730406

30/8大概在3.8mb/s

大概問題出現(xiàn)在寬帶,

但相對(duì)傳統(tǒng)架構(gòu)(MCU)真的節(jié)省太多昂貴的服務(wù)器資源了

http://www.risenshineclean.com/news/27735.html

相關(guān)文章:

  • 四川住房和城鄉(xiāng)建設(shè)廳官網(wǎng)安全員seo主要是指優(yōu)化
  • 建設(shè)項(xiàng)目立項(xiàng)網(wǎng)站廣州百度seo排名
  • 住房和城鄉(xiāng)建設(shè)部網(wǎng)站村鎮(zhèn)建設(shè)新手電商運(yùn)營從哪開始學(xué)
  • 湛江外包做網(wǎng)站seo優(yōu)化是啥
  • 在線做banner的網(wǎng)站網(wǎng)站發(fā)布與推廣方式
  • 個(gè)人注冊(cè)公司查詢中山seo推廣優(yōu)化
  • 網(wǎng)站域名證書哪里獲取搜索引擎優(yōu)化的重要性
  • 網(wǎng)站開發(fā)架構(gòu)網(wǎng)站seo快速優(yōu)化
  • 網(wǎng)頁基礎(chǔ)優(yōu)化站點(diǎn)
  • 專做裝修的網(wǎng)站凡科建站怎么導(dǎo)出網(wǎng)頁
  • 找網(wǎng)站開發(fā)公司需要注意那幾點(diǎn)產(chǎn)品推廣文案
  • 帝國建設(shè)網(wǎng)站成功營銷十大經(jīng)典案例
  • 怎么做網(wǎng)站客服彈窗專業(yè)提升關(guān)鍵詞排名工具
  • 深圳58同城網(wǎng)站建設(shè)站長(zhǎng)網(wǎng)站提交
  • 旅游網(wǎng)站的后臺(tái)管理系統(tǒng)怎么做推銷網(wǎng)站
  • 網(wǎng)站 色調(diào)手機(jī)網(wǎng)站自助建站系統(tǒng)
  • 重慶金融網(wǎng)站建設(shè)一級(jí)域名二級(jí)域名三級(jí)域名的區(qū)別
  • 網(wǎng)站建設(shè)是屬于軟件開發(fā)費(fèi)嗎百度推廣怎么收費(fèi)的
  • 市環(huán)保局網(wǎng)站建設(shè)方案南寧seo手段
  • 頭像 wordpress天津seo博客
  • 做網(wǎng)站 我們的工人怎么寫中國營銷傳播網(wǎng)
  • 微信做淘寶優(yōu)惠券但網(wǎng)站是怎么建設(shè)但seo整站排名
  • dedecms 倒計(jì)時(shí) 天數(shù) 網(wǎng)站首頁免費(fèi)b站推廣網(wǎng)站短視頻
  • 如何制作簡(jiǎn)易個(gè)人網(wǎng)站網(wǎng)絡(luò)運(yùn)營推廣
  • 百度云服務(wù)器做asp網(wǎng)站免費(fèi)建網(wǎng)站的平臺(tái)
  • 網(wǎng)站的建設(shè)方法包括什么問題如何制作一個(gè)網(wǎng)站
  • 如何辦理網(wǎng)站上海搜索引擎關(guān)鍵詞優(yōu)化
  • 福州網(wǎng)站設(shè)計(jì)十年樂云seo網(wǎng)站seo站長(zhǎng)工具
  • 做網(wǎng)站首先必須切割圖片嗎新聞發(fā)布的網(wǎng)站
  • cms做網(wǎng)站可以做些什么網(wǎng)站快速排名軟件seo系統(tǒng)