一.redis的適用場景?
1择份、緩存——熱數(shù)據(jù)
select 數(shù)據(jù)庫前查詢redis,有的話使?redis數(shù)據(jù)脑豹,放棄select 數(shù)據(jù)庫舟茶,沒有的話,
select 數(shù)據(jù)庫饱亮,然后將數(shù)據(jù)插?redis
update或者delete數(shù)據(jù)庫錢,查詢redis是否存在該數(shù)據(jù)绎巨,存在的話先刪除redis中數(shù)據(jù)近尚,
然后再update或者delete數(shù)據(jù)庫中的數(shù)據(jù)
2蠕啄、計數(shù)器
3场勤、隊列
4、位操作(?數(shù)據(jù)處理)
5歼跟、分布式鎖與單線程機(jī)制
6和媳、最新列表
7、排?榜
什么是分布式鎖?
分布式鎖是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式哈街。
在分布式系統(tǒng)中留瞳,常常需要協(xié)調(diào)他們的動作。
如果不同的系統(tǒng)或是同一個系統(tǒng)的不同主機(jī)之間共享了一個或一組資源
骚秦,那么訪問這些資源的時候她倘,
往往需要互斥來防止彼此干擾來保證一致性
在這種情況下璧微,便需要使用到分布式鎖。
實現(xiàn)分布式鎖的方式
1.基于數(shù)據(jù)庫實現(xiàn)分布式鎖
2.基于緩存(redis硬梁,memcached前硫,tair)實現(xiàn)分布式鎖
3.基于Zookeeper實現(xiàn)分布式鎖
二.反爬有哪些策略,你是如何克服的荧止?
1. 限制IP地址單位時間的訪問次數(shù)
減少單位時間的訪問次數(shù)屹电,減低采集效率
2. 屏蔽ip
使?代理ip
3. ?戶登錄才能訪問?站內(nèi)容
模擬?戶提交登錄表單
4. header User-Agent 檢查?戶所?客戶端的種類和版本
設(shè)置User-Agent
5. Referer 是檢查此請求由哪?來,通吃狙玻可以做圖?的盜鏈判斷
?定義Referer字段
6. Cookies
?站可能會檢測 Cookie 中 session_id 的使?次數(shù)危号,如果超過限制,
就觸發(fā)反爬策略
定時向?標(biāo)?站發(fā)送不帶 Cookies 的請求素邪,提取響應(yīng)中 Set-cookie
字段信息并保存外莲。爬取??時,把存儲起來的 Cookies 帶?
Headers 中
7. 動態(tài)加載
?站使? ajax 動態(tài)加載內(nèi)容
可以先截取 ajax 請求分析?下娘香,有可能根據(jù) ajax 請求構(gòu)造出相應(yīng)
的 API 請求的 URL 就可以直接獲取想要的內(nèi)容苍狰,通常是 json 格式,
反?還不?去解析 HTML烘绽。
然?淋昭,很多時候 ajax 請求都會經(jīng)過后端鑒權(quán),不能直接構(gòu)造 URL
獲取安接。這時就可以通過 PhantomJS+Selenium 模擬瀏覽器?為翔忽,抓
取經(jīng)過 js 渲染后的??
三.集群與分布式的區(qū)別 ?
集群是個物理形態(tài)盏檐,分布式是個?作?式
分布式是指將不同的業(yè)務(wù)分布在不同的地?歇式。 ?集群指的是將?臺服務(wù)器集中
在?起,實現(xiàn)同?業(yè)務(wù)胡野。
四.鑒權(quán)
是指驗證?戶是否擁有訪問系統(tǒng)的權(quán)利
常?的鑒權(quán)有四種:
HTTP Basic Authentication
session-cookie
Token 驗證
OAuth(開放授權(quán))
詳情鏈接url:
https://blog.csdn.net/wang839305939/article/details/78713124/
五. Mongodb與Mysql的區(qū)別
Mysql是關(guān)系型數(shù)據(jù)庫材失,Mongodb是?關(guān)系型(nosql)數(shù)據(jù)庫
Mongodb的適?范圍
1.更?的寫?負(fù)載
默認(rèn)情況下,MongoDB更側(cè)重?數(shù)據(jù)寫?性能硫豆,??事務(wù)安全龙巨,MongoDB很適合業(yè)務(wù)系
統(tǒng)中有?量“低價值”數(shù)據(jù)的場景。但是應(yīng)當(dāng)避免在?事務(wù)安全性的系統(tǒng)中使?MongoDB熊响,
除?能從架構(gòu)設(shè)計上保證事務(wù)安全旨别。
2.?可?性
MongoDB的復(fù)副集(Master-Slave)配置?常簡潔?便,此外汗茄,MongoDB可以快速響應(yīng)的
處理單節(jié)點故障秸弛,?動、安全的完成故障轉(zhuǎn)移。這些特性使得MongoDB能在?個相對不穩(wěn)
定(如云主機(jī))的環(huán)境中递览,保持?可?性叼屠。
3.數(shù)據(jù)量很?或者未來會變得很?
依賴數(shù)據(jù)庫(MySQL)?身的特性,完成數(shù)據(jù)的擴(kuò)展是較困難的事绞铃,在MySQL中环鲤,當(dāng)?個單
達(dá)表到5-10GB時會出現(xiàn)明顯的性能降級,此時需要通過數(shù)據(jù)的?平和垂直拆分憎兽、庫的拆分
完成擴(kuò)展冷离,使?MySQL通常需要借助驅(qū)動層或代理層完成這類需求。?MongoDB內(nèi)建了
多種數(shù)據(jù)分?的特性纯命,可以很好的適應(yīng)?數(shù)據(jù)量的需求西剥。
4.基于位置的數(shù)據(jù)查詢
MongoDB?持?維空間索引,因此可以快速及精確的從指定位置獲取數(shù)據(jù)亿汞。
5.表結(jié)構(gòu)不明確瞭空,且數(shù)據(jù)在不斷變?
在?些傳統(tǒng)RDBMS中,增加?個字段會鎖住整個數(shù)據(jù)庫/表疗我,或者在執(zhí)??個重負(fù)載的請求
時會明顯造成其它請求的性能降級咆畏。通常發(fā)?在數(shù)據(jù)表?于1G的時候(當(dāng)?于1TB時更
甚)。 因MongoDB是?檔型數(shù)據(jù)庫吴裤,為?結(jié)構(gòu)貨的?檔增加?個新字段是很快速的操作旧找,
并且不會影響到已有數(shù)據(jù)。另外?個好處當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)?變化時麦牺,是將不在需要由DBA修改
表結(jié)構(gòu)