真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

B站技術(shù)選型與架構(gòu)-創(chuàng)新互聯(lián)

目錄
    • 前言
    • B站前端之路
    • B站Golang技術(shù)棧分析
    • bilibili技術(shù)總監(jiān)毛劍簡介

創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),和碩網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:和碩等地區(qū)。和碩做網(wǎng)站價格咨詢:13518219792前言

了解了一下B站的技術(shù)發(fā)展歷程:最開始是用PHP語言開發(fā)的,后來B站的中臺逐步被Node占領(lǐng),而后臺技術(shù)為了更高的并發(fā)、更穩(wěn)健,以及為了大數(shù)據(jù)分析,逐步向JAVA靠攏,這便導(dǎo)致了嗶哩嗶哩的技術(shù)整體較為混亂。B站早期幾乎天天故障,隨著團(tuán)隊(duì)和業(yè)務(wù)擴(kuò)大,各方面的壓力都增加,處處冒火。代碼混亂,框架結(jié)構(gòu)混亂,已經(jīng)到了難以維護(hù)的地步,需要理清脈絡(luò),在這樣的情況下統(tǒng)一技術(shù)棧是毫無疑問該做的事。最后發(fā)現(xiàn)重寫反而是最優(yōu)的解決方案。為什么是Go?歸根到底,重寫后臺工程是嗶哩嗶哩統(tǒng)一技術(shù)棧的一次嘗試,至于最后為啥選擇了Go,很重要的一點(diǎn)在于Go能夠滿足嗶哩嗶哩平臺重構(gòu)優(yōu)化的需求;另一點(diǎn)是其研發(fā)總監(jiān)毛劍本身是一位Go語言的忠實(shí)布道者。

在這里插入圖片描述

B站前端之路

B站,一開始做前后端分離的時候,也確實(shí)按照第一種方式去做的,現(xiàn)在還有一些頁面仍然是這種模式,例如:www.bilibili.com/account/his… (可查看網(wǎng)頁源代碼)。對于不需要seo的頁面來說,是一個不錯的方式。前端開發(fā)完成之后,通過webpack打包出對應(yīng)的js和css 上傳到cdn上面,然后將webpack打包出來的 引用了對應(yīng)的資源的html文件 上傳到一臺專門的靜態(tài)機(jī)上面,然后運(yùn)維配置路由 將頁面流量導(dǎo)過去就好了。后端的同學(xué)只需要提供對應(yīng)的api接口就可以。前后端分開維護(hù),自己按照自己的節(jié)奏走,降低了頁面與服務(wù)的耦合度
這種方式確實(shí)是一種很快能夠進(jìn)行前后端分離的方法。我們花了一段時間,在pc端使用vue 進(jìn)行重構(gòu),移動端H5端 用react進(jìn)行了重構(gòu)。 進(jìn)度很快,但是也慢慢展現(xiàn)出了弊端。
首屏的時候,因?yàn)樗却Y源加載完成,然后再進(jìn)行渲染,會導(dǎo)致了首屏有白屏,如果是單個頁面還好,如果是spa應(yīng)用 那么 他的加載時間就會變得很長,白屏?xí)r間會很影響用戶體驗(yàn),再有就是由于國內(nèi)的搜索公司 對于spa 應(yīng)用沒有很好的兼容,導(dǎo)致了客戶端渲染會對seo非常的不友好,有seo 需求的頁面就很迫切的需要服務(wù)端渲染。

(B站的首頁,右邊模塊做了服務(wù)端渲染,左邊模塊沒有做服務(wù)端渲染)
那么,依賴node 進(jìn)行服務(wù)端渲染就被提上了日程。
選型
首先進(jìn)行node 框架的選型,市面上主流框架有三種,hapi express koa ,還有一些是經(jīng)過一些封裝和定制的框架,例如 eggjs等
一開始我就把eggjs 排除在外了,第一因?yàn)閑ggjs,的功能很強(qiáng)大,有很多功能,多到有些根本用不著,從而導(dǎo)致了他會重 不輕量級,第二,eggjs對于我來說是個黑盒,如果有什么問題,我解決起來將會花費(fèi)很長的時間。(但是有很多地方 我還是借鑒了eggjs的,畢竟 很強(qiáng)大)
然后剩下的三種框架,express的使用相對簡單,文檔也比較多
比較全面,所以我就選擇了express(后來還是重構(gòu)掉了 = =!)
然后是前端框架的選型 因?yàn)榍岸丝蚣苤髁鞯挠泻芏?,ng r v 等等,我站在用的是react和vue, 他們有個優(yōu)勢就是可以進(jìn)行前后端同構(gòu),一樣的邏輯不用寫兩份,很棒

(同構(gòu)邏輯大概如此吧)
由于之前前后端分離的時候,pc上面已經(jīng)再用vue 進(jìn)行了重構(gòu),所以自然,這次服務(wù)端渲染也建立在vue上面 用的是vue ssr (這也為我后面的一個想法埋下了伏筆)
首先 我們選擇一個簡單的頁面來做打樣,就用tag頁吧(被神選中的孩子:www.bilibili.com/tag/3503159 )

B站Golang技術(shù)棧分析
技術(shù)棧技術(shù)選型參考鏈接
RPC基于grpc封裝的warden框架, 已開源 https://github.com/bilibili/kratos
HTTP框架基于gin封裝的blade master框架, 已開源 同上
服務(wù)注冊與發(fā)現(xiàn)初期為zk, 后面逐步改為參考Spring Cloud體系Eureka自研的discovery 已開源 https://github.com/bilibili/discovery
存儲DB, redis, memcache, hbase存儲一些用戶kv信息和歷史流水, 已封裝好庫 library/database/ client庫已開源 https://github.com/bilibili/kratos
搜索B站視頻, 用戶, 歷史記錄等使用es搜索, 客戶端已封裝在基礎(chǔ)庫中 library/database/elastic
小文件存儲毛劍個人研發(fā)的bfs, 已開源. https://www.toutiao.com/i6272104949560115714/ https://github.com/Terry-Mao/bfs
消息隊(duì)列基于kafka封裝的databus
log基于uber的zap封裝的日志框架
配置及配置中心支持從環(huán)境變量讀取配置, 從toml中解析配置, 支持遠(yuǎn)程配置中心(自研, mysql存儲, 本地落地,http協(xié)議, long poll, 客戶端有更新事件, 類似于攜程開源的Apollo)
監(jiān)控使用開源的prometheus, 框架和庫(sql, redis, hbase等)中已預(yù)埋計(jì)數(shù)點(diǎn)和時間統(tǒng)計(jì)點(diǎn), 同時也可以在業(yè)務(wù)邏輯中打點(diǎn). library/stat/stat.go
tracetrace似乎是基于agent的方式, 使用unix domain socket進(jìn)行傳送, 框架和庫已預(yù)埋點(diǎn). library/net/trace.go
研發(fā)流程管理TAPD, 哈哈, 有相關(guān)的tapd struct信息

其中RPC, HTTP框架, 數(shù)據(jù)訪問的一些庫封裝, 包括生成工具, 均以kratos項(xiàng)目在github開源了(https://github.com/bilibili/kratos Kratos是bilibili開源的一套Go微服務(wù)框架,包含大量微服務(wù)相關(guān)框架及工具)

B站目前使用及封裝的中間件的詳細(xì)介紹在Gopher China 2017 B站的分享有提到原理和使用情況.
https://mp.weixin.qq.com/s/4uA6iE7HC_SAfdIATAdrrA
bfs介紹
https://www.jianshu.com/p/923917220d23
B站運(yùn)維體系發(fā)展
https://myslide.cn/slides/3840

bilibili技術(shù)總監(jiān)毛劍簡介

毛劍,bilibili技術(shù)總監(jiān),2015年起,在 bilibili(B站)負(fù)責(zé) UGC平臺和基礎(chǔ)架構(gòu),開發(fā)了直播彈幕開源推送服務(wù) goim ,B站分布式存儲 BFS ,引導(dǎo)開發(fā)了B站 cache proxy,bili twemproxy 等,對歷史主站架構(gòu)進(jìn)行迭代和重構(gòu),之前六年在獵豹移動工作,當(dāng)過MySQL DBA,做過C開發(fā),其中開發(fā)了gopush-cluster用于獵豹移動的推送體系。喜歡應(yīng)用服務(wù)性能診斷,內(nèi)核研究,穩(wěn)定的服務(wù)端架構(gòu)演變。騰訊云最具價值專家(TVP)。負(fù)責(zé)bilibili數(shù)據(jù)平臺部,擁有近十年的服務(wù)端研發(fā)經(jīng)驗(yàn)。擅長高性能、高可用的服務(wù)端研發(fā),熟悉Go、Java、C等語言。在B站參與了,從巨石架構(gòu)到微服務(wù)的完整轉(zhuǎn)型,包含微服務(wù)治理、微服務(wù)可用性設(shè)計(jì),微服務(wù)數(shù)據(jù)一致性設(shè)計(jì),微服務(wù)中間件,微服務(wù)監(jiān)控,微服務(wù)日志收集,微服務(wù)負(fù)載均衡,和微服務(wù)RPC框架開發(fā)等。
開源業(yè)內(nèi)比較有影響力的項(xiàng)目:

  • goim https://github.com/Terry-Mao/goim 分布式IM長連接廣播服務(wù);
  • bfs https://github.com/Terry-Mao/bfs 分布式小文件存儲;

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


新聞標(biāo)題:B站技術(shù)選型與架構(gòu)-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/jgdep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部