国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù)

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

前言

最近有幸參與了騰訊云舉辦的 騰訊云 TDSQL-C 產(chǎn)品體驗(yàn)活動(dòng)。在這個(gè)過程中,通過了解 TDSQL-C 的產(chǎn)品和實(shí)踐,讓我受益非淺,原來數(shù)據(jù)庫還能這么玩! 也讓我真正體會(huì)到了降本增效這個(gè)詞的意義。

在看到活動(dòng)的介紹和微信群的講解后,我馬不停蹄地開始了自己摸索。首先是跟著群里小助手發(fā)的實(shí)驗(yàn)手冊(cè),體驗(yàn)了一下整個(gè)產(chǎn)品的業(yè)務(wù)流程。

隨后又查看官方的產(chǎn)品文檔,文檔非常的簡潔明了,然后根據(jù)這些資料開始了我的第一個(gè) TDSQL-C 程序,基于 TDSQL-C 數(shù)據(jù)庫構(gòu)建了一個(gè)基于 Vue 的問卷調(diào)查系統(tǒng),親身體驗(yàn)了 TDSQL-C 帶來的高性能、彈性可靠服務(wù),整個(gè)過程十分絲滑。

下面就來整理,分享一下我的操作和感悟,希望能夠幫助到其他同學(xué)。

出現(xiàn)的背景

傳統(tǒng)數(shù)據(jù)庫為什么被云數(shù)據(jù)庫替代?

關(guān)于 TDSQL-C 的出現(xiàn),我覺得需要先從云數(shù)據(jù)庫開始了解,傳統(tǒng)的本地?cái)?shù)據(jù)庫部署需要企業(yè)自己購買、維護(hù)硬件設(shè)備和管理數(shù)據(jù)庫軟件,這對(duì)于資源有限的中小企業(yè)來說可能是一項(xiàng)昂貴和繁瑣的任務(wù)。同時(shí),傳統(tǒng)數(shù)據(jù)庫在面對(duì)大規(guī)模的數(shù)據(jù)處理和高并發(fā)訪問時(shí)可能會(huì)遇到性能瓶頸和可用性問題。云數(shù)據(jù)庫的出現(xiàn)解決了這些問題。它將數(shù)據(jù)庫部署在云平臺(tái)上,并提供彈性的計(jì)算和存儲(chǔ)資源,使用戶能夠根據(jù)實(shí)際需求按需擴(kuò)展數(shù)據(jù)庫的容量和性能。云數(shù)據(jù)庫還提供高可用性和可靠性,通過數(shù)據(jù)備份、冗余存儲(chǔ)和容災(zāi)機(jī)制來保護(hù)數(shù)據(jù)的安全和可恢復(fù)性。此外,云數(shù)據(jù)庫還提供了便捷的管理和監(jiān)控工具,簡化了數(shù)據(jù)庫的操作和維護(hù)過程。

serverless數(shù)據(jù)庫帶來了什么好處?

而云 Serverless 數(shù)據(jù)庫的出現(xiàn)則是為了進(jìn)一步提供更高的靈活性和經(jīng)濟(jì)效益。傳統(tǒng)的數(shù)據(jù)庫需要預(yù)先配置和維護(hù)一定數(shù)量的計(jì)算資源,而這些資源在閑置時(shí)仍然需要付費(fèi)。而 Serverless 數(shù)據(jù)庫采用按需付費(fèi)的模式,它根據(jù)實(shí)際的計(jì)算和存儲(chǔ)資源使用量來計(jì)費(fèi),無需預(yù)先配置資源。這使得用戶可以根據(jù)實(shí)際需求動(dòng)態(tài)地?cái)U(kuò)展和縮減數(shù)據(jù)庫的資源,避免了資源浪費(fèi)和額外的成本支出。Serverless 數(shù)據(jù)庫還可以自動(dòng)管理和優(yōu)化資源,用戶只需專注于應(yīng)用開發(fā),而無需關(guān)注底層基礎(chǔ)設(shè)施的管理。

TDSQL-C 是騰訊云自研的新一代云原生關(guān)系型數(shù)據(jù)庫。融合了傳統(tǒng)數(shù)據(jù)庫、云計(jì)算與新硬件技術(shù)的優(yōu)勢(shì),100%兼容 MySQL,為用戶提供極致彈性、高性能、高可用、高可靠、安全的數(shù)據(jù)庫服務(wù)。實(shí)現(xiàn)超百萬 QPS 的高吞吐、PB 級(jí)海量分布式智能存儲(chǔ)、Serverless 秒級(jí)伸縮,助力企業(yè)加速完成數(shù)字化轉(zhuǎn)型。

Serverless 服務(wù)是騰訊云自研的新一代云原生關(guān)系型數(shù)據(jù)庫 TDSQL-C MySQL 版的無服務(wù)器架構(gòu)版,是全 Serverless 架構(gòu)的云原生數(shù)據(jù)庫。Serverless 服務(wù)支持按實(shí)際計(jì)算和存儲(chǔ)資源使用量收取費(fèi)用,不用不付費(fèi),將騰訊云云原生技術(shù)普惠用戶。

總的來說,云數(shù)據(jù)庫云 Serverless 數(shù)據(jù)庫的產(chǎn)生是為了滿足不同規(guī)模和需求的用戶對(duì)于數(shù)據(jù)存儲(chǔ)和處理的需求,并提供更靈活、可擴(kuò)展和經(jīng)濟(jì)高效的解決方案。

一、TDSQL-C數(shù)據(jù)庫是什么?

TDSQL-C MySQL 版基于 Cloud Native 設(shè)計(jì)理念,既融合了商業(yè)數(shù)據(jù)庫穩(wěn)定可靠、高性能、可擴(kuò)展的特征,又具有開源云數(shù)據(jù)庫簡單開放、高效迭代的優(yōu)勢(shì)。

我們來理解一下這段描述, Cloud Native 設(shè)計(jì)理念是什么?

Cloud Native 設(shè)計(jì)理念是一種在云計(jì)算環(huán)境下進(jìn)行應(yīng)用開發(fā)和部署的方法論和思維方式,目標(biāo)是將應(yīng)用程序和基礎(chǔ)設(shè)施解耦,使得應(yīng)用程序能夠更好地適應(yīng)云環(huán)境的動(dòng)態(tài)性和彈性,并提供更好的可伸縮性、可靠性和可管理性。它能夠幫助開發(fā)者更快速、高效地構(gòu)建和交付應(yīng)用程序,并更好地應(yīng)對(duì)日益復(fù)雜和變化的業(yè)務(wù)需求。

基于這個(gè)設(shè)計(jì)方式,所以 TDSQL-C MySQL 版可以為為用戶提供具備超高彈性、高性能、海量存儲(chǔ)、安全可靠的數(shù)據(jù)庫服務(wù),以可幫助企業(yè)輕松應(yīng)對(duì)諸如商品訂單等高頻交易、伴隨流量洪峰的快速增長業(yè)務(wù)、游戲業(yè)務(wù)、歷史訂單等大數(shù)據(jù)量低頻查詢、金融數(shù)據(jù)安全相關(guān)、開發(fā)測(cè)試、成本敏感等的業(yè)務(wù)場(chǎng)景。

二、TDSQL-C 的特點(diǎn)

我找到了一些關(guān)于我們?cè)谶x擇底層組件時(shí)候需要關(guān)注的一些特點(diǎn),憑什么 TDSQL-C 值得我們選擇呢?

  1. 完全兼容

TDSQL-C MySQL 版將開源數(shù)據(jù)庫的計(jì)算和存儲(chǔ)分離,存儲(chǔ)構(gòu)建在騰訊云分布式云存儲(chǔ)服務(wù)之上,計(jì)算層全面兼容開源數(shù)據(jù)庫引擎 MySQL 5.7、8.0,業(yè)務(wù)無需改造即可平滑遷移。

  1. 超高性能

單節(jié)點(diǎn)百萬 QPS 的超高性能,可以滿足高并發(fā)高性能的場(chǎng)景,保證關(guān)鍵業(yè)務(wù)的連續(xù)性,并可進(jìn)一步提供讀寫分離以及讀寫擴(kuò)展性。

  1. 海量存儲(chǔ)

最高支持 PB 級(jí)的海量存儲(chǔ),為用戶免去面對(duì)海量的數(shù)據(jù)時(shí)頻繁分庫分表的繁瑣操作,同時(shí)支持?jǐn)?shù)據(jù)壓縮,在海量數(shù)據(jù)檢索和寫入性能上進(jìn)行了大量優(yōu)化。

  1. 秒級(jí)故障恢復(fù)

計(jì)算節(jié)點(diǎn)實(shí)現(xiàn)了無狀態(tài),支持秒級(jí)的故障切換和恢復(fù),即便計(jì)算節(jié)點(diǎn)所在的物理機(jī)宕機(jī)也可以在一分鐘之內(nèi)恢復(fù)。

  1. 數(shù)據(jù)高可靠

集群支持安全組和 VPC 網(wǎng)絡(luò)隔離。自動(dòng)維護(hù)數(shù)據(jù)和備份的多個(gè)副本,保障數(shù)據(jù)安全可靠,可靠性達(dá)99.9999999%。

  1. 彈性擴(kuò)展

計(jì)算節(jié)點(diǎn)可根據(jù)業(yè)務(wù)需要快速升降配,秒級(jí)完成擴(kuò)容,結(jié)合彈性存儲(chǔ),實(shí)現(xiàn)計(jì)算資源的成本最優(yōu)。

  1. 快速只讀擴(kuò)展

計(jì)算節(jié)點(diǎn)可根據(jù)業(yè)務(wù)需要快速添加只讀節(jié)點(diǎn),一個(gè)集群支持秒級(jí)添加或刪除1個(gè) - 15個(gè)只讀節(jié)點(diǎn),快速應(yīng)對(duì)業(yè)務(wù)峰值和變化場(chǎng)景。

  1. 快照備份回檔

基于數(shù)據(jù)多版本的秒級(jí)快照備份對(duì)用戶的數(shù)據(jù)進(jìn)行連續(xù)備份保護(hù),免去主從架構(gòu)備份回檔數(shù)據(jù)的同步和搬遷,最高以GB/秒的速度極速并行回檔,保證業(yè)務(wù)數(shù)據(jù)迅速恢復(fù)。

  1. Serverless 架構(gòu)

Serverless 是騰訊自研云原生數(shù)據(jù)庫 TDSQL-C MySQL 版的無服務(wù)器架構(gòu)版,自動(dòng)擴(kuò)縮容,僅按照實(shí)際使用量計(jì)費(fèi),不用不計(jì)費(fèi),輕松應(yīng)對(duì)業(yè)務(wù)數(shù)據(jù)量動(dòng)態(tài)變化和持續(xù)增長。

三、TDSQL-C的應(yīng)用場(chǎng)景

TDSQL-C MySQL版廣泛適用于多個(gè)行業(yè)和應(yīng)用場(chǎng)景,具備以下條件和優(yōu)勢(shì):

  1. 互聯(lián)網(wǎng)移動(dòng)應(yīng)用:

    • 提供商用數(shù)據(jù)庫級(jí)別的高性能和高可靠性,保證業(yè)務(wù)的平穩(wěn)高效運(yùn)行。
    • 解決了傳統(tǒng)主備架構(gòu)在彈性能力、同步效率和主備切換時(shí)間等方面的問題,保證系統(tǒng)的高可用性和業(yè)務(wù)的連續(xù)性。
    • 全面兼容開源數(shù)據(jù)庫MySQL,無需更改現(xiàn)有業(yè)務(wù)應(yīng)用即可接入TDSQL-C MySQL版,助力企業(yè)平滑上云。
  2. 游戲應(yīng)用:

    • 提供敏捷靈活的彈性擴(kuò)展,根據(jù)業(yè)務(wù)需求快速升降級(jí)和擴(kuò)容,應(yīng)對(duì)業(yè)務(wù)峰值。
    • 支持PB級(jí)的海量存儲(chǔ),按存儲(chǔ)量計(jì)費(fèi),自動(dòng)擴(kuò)容,減少了合區(qū)合服的繁瑣操作,實(shí)現(xiàn)資源和成本的最優(yōu)配置。
    • 提供秒級(jí)的快照備份和快速回檔能力,對(duì)用戶數(shù)據(jù)進(jìn)行連續(xù)保護(hù)。
  3. 電商、直播、教育行業(yè):

    • 支持秒級(jí)的升配,最多可擴(kuò)展至15個(gè)節(jié)點(diǎn),快速增加QPS的能力,解決了傳統(tǒng)數(shù)據(jù)庫升配時(shí)間隨存儲(chǔ)量和宿主機(jī)資源增加而上升的問題。
    • 提供優(yōu)化的IOPS能力,保證在高并發(fā)狀態(tài)下的出色數(shù)據(jù)寫入能力,適應(yīng)業(yè)務(wù)峰值需求。
    • 通過物理復(fù)制方式連接讀寫節(jié)點(diǎn)和只讀節(jié)點(diǎn),大大降低了只讀節(jié)點(diǎn)與讀寫節(jié)點(diǎn)之間的延遲,滿足電商場(chǎng)景中買家和賣家數(shù)據(jù)的一致性讀取需求。
  4. 金融、保險(xiǎn)企業(yè):

    • 采用多可用區(qū)架構(gòu),在多個(gè)可用區(qū)備份數(shù)據(jù),提供容災(zāi)和備份功能。
    • 提供全方位的安全保障措施,如白名單VPC網(wǎng)絡(luò)等,保護(hù)數(shù)據(jù)庫數(shù)據(jù)的訪問、存儲(chǔ)和管理。
    • 通過共享分布式存儲(chǔ)設(shè)計(jì),徹底解決了主從異步復(fù)制帶來的備庫數(shù)據(jù)非強(qiáng)一致性問題。

這些條件和優(yōu)勢(shì)使TDSQL-C MySQL版適用于各種業(yè)務(wù)場(chǎng)景,包括高頻交易、快速增長業(yè)務(wù)、大數(shù)據(jù)量低頻查詢、金融數(shù)據(jù)安全、開發(fā)測(cè)試和成本敏感場(chǎng)景。

四、基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù)

我這次準(zhǔn)備使用 TDSQL-C Serverless MySQL 快速搭建一個(gè)爬蟲應(yīng)用,這里我們打算使用 Python來實(shí)現(xiàn),來體驗(yàn) 云原生數(shù)據(jù)庫 TDSQL-C 給我們帶來的優(yōu)勢(shì)。

如下為最項(xiàng)目代碼如下:
【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

讓我們開始構(gòu)建吧?。?!

1、創(chuàng)建TDSQL-C Serverless數(shù)據(jù)庫

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

一直下一步購買后就能在TDSQL-C集群列表中看見

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

  • 為了方便后續(xù)我們開發(fā)程序,我們需要先將數(shù)據(jù)庫的外網(wǎng)訪問打開

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

2、創(chuàng)建所需數(shù)據(jù)庫并通過DMC進(jìn)行數(shù)據(jù)庫管理

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

  • 通過 DMC 創(chuàng)建數(shù)據(jù)表
CREATE TABLE `cate` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL COMMENT 'kg | kw | wyy | qq',
  `cate` varchar(255) DEFAULT NULL COMMENT '分類',
  `primary_key` bigint(255) DEFAULT NULL COMMENT '平臺(tái)主鍵',
  `create_date` datetime DEFAULT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `u` (`type`,`primary_key`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

CREATE TABLE `playlist` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL COMMENT '標(biāo)題',
  `desc` longtext COMMENT '描述',
  `cate` varchar(255) DEFAULT NULL COMMENT '類型',
  `cate_id` varchar(255) DEFAULT NULL,
  `is_own` tinyint(255) DEFAULT '1' COMMENT '1 第三方創(chuàng)建的  2自己創(chuàng)建的',
  `primary_key` varchar(255) DEFAULT NULL COMMENT '第三方歌單主鍵',
  `key_type` char(10) DEFAULT NULL COMMENT 'qq | kg | wyy | kw ',
  `thumb_img` longtext COMMENT '封面',
  `tag` text COMMENT '標(biāo)簽 ,',
  `tag_id` text COMMENT '標(biāo)簽id ,拆分',
  `author` varchar(255) DEFAULT NULL COMMENT '作者',
  `author_id` bigint(255) DEFAULT NULL COMMENT '作者id',
  `collect_num` bigint(20) DEFAULT '0' COMMENT '收藏?cái)?shù)量',
  `share_num` bigint(20) DEFAULT '0' COMMENT '分享數(shù)量',
  `comment_num` bigint(255) DEFAULT '0' COMMENT '評(píng)論數(shù)量',
  `play_num` bigint(20) DEFAULT '0' COMMENT '歌單播放次數(shù)',
  `song_num` bigint(20) DEFAULT '0' COMMENT '歌單歌曲數(shù)量',
  `platform_create_date` datetime DEFAULT NULL COMMENT '第三方歌單創(chuàng)建時(shí)間',
  `create_date` datetime DEFAULT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

一個(gè)是分類表,用于存儲(chǔ)歌單的分類信息,然后通過分類去獲取歌單列表
另一個(gè)是歌單表,用于存儲(chǔ)爬取的歌單數(shù)據(jù)

3、構(gòu)建QQ音樂歌單爬蟲

3.1 初始化框架環(huán)境

這里我采用了 feapder 這個(gè)輕量級(jí)框架

  • 安裝 feapder 爬蟲框架
pip3 install feapder[all]
  • 創(chuàng)建爬蟲項(xiàng)目
feapder create -p QQSpider
  • setting.py 中配置TDSQL-C數(shù)據(jù)庫以及 redis 信息
# # MYSQL
MYSQL_IP = "gz-xxxxxx"
MYSQL_PORT = 28671
MYSQL_DB = "questionnaire"
MYSQL_USER_NAME = "root"
MYSQL_USER_PASS = "123456"

# # REDIS
# # ip:port 多個(gè)可寫為列表或者逗號(hào)隔開 如 ip1:port1,ip2:port2 或 ["ip1:port1", "ip2:port2"]
REDISDB_IP_PORTS = "x"
REDISDB_USER_PASS = "x"
REDISDB_DB = 7
  • 安裝依賴 requirements.txt
feapder~=1.7.7
pycryptodome
Flask~=2.2.2
pillow~=9.2.0
requests-toolbelt
requests~=2.27.1
apscheduler~=3.9.1
js2py~=0.71
urllib3~=1.26.11
pytz~=2022.1
gevent~=21.12.0
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

為了方便可以把這個(gè) shell 寫在項(xiàng)目的根目錄

3.2 在spiders下創(chuàng)建分類爬蟲
  • category.py
import feapder
import urllib.parse

from feapder import Request

from items.cateItem import CateItem


class CategorySpider(feapder.Spider):
    commonParams = {
        'g_tk': 1124214810,
        'loginUin': '0',
        'hostUin': 0,
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': 0,
        'platform': 'yqq.json',
        'needNewCode': 0,
    }

    apiHeader = {
        'referer': 'https://c.y.qq.com/',
        'host': 'c.y.qq.com'
    }

    domain = 'https://c.y.qq.com'

    def start_requests(self):
        url = "/splcloud/fcgi-bin/fcg_get_diss_tag_conf.fcg?" + self.getParams({
            'format': 'json',
            'outCharset': 'utf-8',
        })
        yield self.request(url, method="GET")

    def request(self, path, **kwargs):
        req = Request(self.domain + path, **kwargs)
        return self.downloadMidware(req)

    def downloadMidware(self, request):
        if request.url.startswith('https://y.qq.com/n/ryqq/playlist'):
            return request
        request.headers = self.apiHeader
        return request
    def getParams(self, params):
        data = params
        data.update(self.commonParams)
        return urllib.parse.urlencode(data)

    def validate(self, request, response):
        jsonData = response.json
        if jsonData['code'] != 0:
            raise Exception(jsonData['message'])
        return True

    def parse(self, request, response):
        jsonData = response.json
        for cate in jsonData['data']['categories']:
            cateName = cate['categoryGroupName']
            for item in cate['items']:
                cateItem = CateItem()
                cateItem.primary_key = item['categoryId']
                cateItem.title = item['categoryName']
                cateItem.type = "qq"
                cateItem.cate = cateName
                yield cateItem



if __name__ == "__main__":
    CategorySpider(redis_key="qq_category:spider").start()

這里我們還要配置一下 ORM,在itmes目錄下創(chuàng)建 cateItem,用于映射數(shù)據(jù)庫表,方便直接入庫,不用編寫原生SQL

  • items/cateItem.py
from feapder import Item
from feapder.utils import tools


class CateItem(Item):
    """
    This class was generated by feapder.
    command: feapder create -i spider_data.
    """
    __unique_key__ = ["title", "cate", "type", 'primary_key']  # 指定去重的key為 title、url,最后的指紋為title與url值聯(lián)合計(jì)算的md5

    def __init__(self, *args, **kwargs):
        # self.id = None
        super().__init__(**kwargs)
        self.table_name = "cate"
        self.title = None
        self.cate = None
        self.primary_key = None
        self.type = None
        self.create_date = None
        self.update_date = None

    def pre_to_db(self):
        """
        入庫前的處理
        """
        self.create_date = tools.format_time("剛剛")
        self.update_date = tools.format_time("剛剛")

  • 運(yùn)行測(cè)試爬取分類數(shù)據(jù)

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless
可以看到數(shù)據(jù)已經(jīng)全部入庫了
【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

3.3 在spiders下創(chuàng)建歌單爬蟲

同理,我們先建立一下歌單表的 ORM

  • items/playlistItem.py
from feapder import Item
from feapder.utils import tools


class PlaylistItem(Item):


    def __init__(self, *args, **kwargs):
        # self.id = None
        super().__init__(**kwargs)
        self.table_name = "playlist"
        self.title = None
        self.desc = None
        self.primary_key = None
        self.cate = None
        self.cate_id = None
        self.key_type = None
        self.thumb_img = None
        self.tag = None
        self.tag_id = None
        self.author = None
        self.author_id = None
        self.collect_num = None
        self.share_num = None
        self.comment_num = None
        self.play_num = None
        self.song_num = None
        self.platform_create_date = None
        self.create_date = None
        self.update_date = None

    def pre_to_db(self):
        """
        入庫前的處理
        """
        self.create_date = tools.format_time("剛剛")
        self.update_date = tools.format_time("剛剛")

然后創(chuàng)建爬蟲

  • spiders/playlist.py
import urllib.parse


import feapder
from feapder import Request
from feapder.db.mysqldb import MysqlDB

from items.playlistItem import PlaylistItem


class PlayListSpider(feapder.Spider):
    commonParams = {
        'g_tk': 1124214810,
        'loginUin': '0',
        'hostUin': 0,
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': 0,
        'platform': 'yqq.json',
        'needNewCode': 0,
    }

    apiHeader = {
        'referer': 'https://c.y.qq.com/',
        'host': 'c.y.qq.com'
    }

    domain = 'https://c.y.qq.com'

    def start_requests(self):
        db = MysqlDB()
        cateList = db.find(sql="select * from cate where type = 'qq'", to_json=True)
        for cate in cateList:
            yield self.getPlaylistByCateId(cate['primary_key'], cate['title'])

    def getPlaylistByCateId(self, cateId, cateTitle, page=0, limit=50, sortId=5):
        sin = +page * +limit
        ein = +limit * (+page + 1) - 1
        params = self.getParams({
            'format': 'json',
            'outCharset': 'utf-8',
            'picmid': 1,
            'categoryId': cateId,
            'sortId': sortId,
            'sin': sin,
            'ein': ein,
        })
        url = "/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg?" + params
        return self.request(url, method="GET", page=page, limit=limit, cateId=cateId, cateTitle=cateTitle)

    def getParams(self, params):
        data = params
        data.update(self.commonParams)
        return urllib.parse.urlencode(data)
    # 構(gòu)造請(qǐng)求
    def request(self, path, **kwargs):
        req = Request(self.domain + path, **kwargs)
        return self.downloadMidware(req)

    # 構(gòu)造請(qǐng)求頭
    def downloadMidware(self, request):
        if request.url.startswith('https://y.qq.com/n/ryqq/playlist'):
            return request
        request.headers = self.apiHeader
        return request

    def validate(self, request, response):
        jsonData = response.json
        if jsonData['code'] != 0:
            raise Exception(jsonData['message'])
        return True

    def parse(self, request, response):
        jsonData = response.json

        playlist = jsonData['data']['list']
        for item in playlist:
            playlist = PlaylistItem()
            playlist.title = item.get('dissname')
            playlist.thumb_img = item.get('imgurl')
            playlist.create_date = item.get('createtime')
            playlist.primary_key = item.get('dissid')
            playlist.desc = item.get('introduction')
            playlist.play_num = item.get('listennum')
            playlist.cate = request.cateTitle

            yield playlist

        # 分頁處理
        if len(playlist) != 0:
            yield self.getPlaylistByCateId(request.cateId, request.cateTitle, request.page + 1, request.limit)

        # 通過分類id獲取歌單列表


if __name__ == "__main__":
    PlayListSpider(redis_key="qq_playlist:spider").start()

運(yùn)行爬蟲后可以看到數(shù)據(jù)庫的吞吐率很高,一會(huì)就有幾千條數(shù)據(jù)了

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

4、進(jìn)行數(shù)據(jù)庫狀態(tài)觀察

在爬取的過程中,我一直擔(dān)心數(shù)據(jù)庫會(huì)成為應(yīng)用的瓶頸,沒想到最低配的 TDSQL-C 性能也是異常的強(qiáng)悍,期間通過自帶的監(jiān)控告警,也是很方便觀察到秒級(jí)性能波動(dòng)

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless
然后 TDSQL-C 旁邊還有個(gè) 數(shù)據(jù)庫智能管家,這是一個(gè)非常利于我們?cè)诰€運(yùn)維的工具,他可以看到當(dāng)前實(shí)例的:異常、性能趨勢(shì)、實(shí)時(shí)會(huì)話、慢SQL分析、SQL優(yōu)化、審計(jì)日志等等

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless
【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless
他還可以為我們根據(jù)時(shí)間區(qū)間創(chuàng)建健康報(bào)告,讓我們清晰地了解到數(shù)據(jù)庫實(shí)例的健康狀態(tài),針對(duì)重要項(xiàng)目,我們可以設(shè)置定期報(bào)告,然后通過郵箱接收?qǐng)?bào)告內(nèi)容,從而減輕我們的運(yùn)維負(fù)擔(dān)

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

總結(jié)

本次案例主要讓大家對(duì)云原生數(shù)據(jù)庫 TDSQL-C Serverless 有一個(gè)基本的認(rèn)識(shí),可以看到 TDSQL-C Serverless 與平時(shí)所使用的 Sql 語法差不多一致,基本上沒有什么學(xué)習(xí)成本,開箱即用,可以快速上手,真正的無縫接入, 異常的絲滑!!

針對(duì)本次體驗(yàn),我也總結(jié)了一些優(yōu)點(diǎn)與遇到的一些問題,希望分享給大家,能給大家?guī)硪恍┘夹g(shù)選型建議:

  • 其中優(yōu)點(diǎn)有:
  1. 其中在 TDSQL-C 的特點(diǎn)中:高性能海量存儲(chǔ)、完全兼容Mysql快照備份等都能夠非常直接感受到,確實(shí)如描述所說,屬于名副其實(shí)了,這個(gè)我也不過多贅述。
  2. 通過對(duì)傳統(tǒng)數(shù)據(jù)庫的了解,實(shí)際上對(duì)于采用 ServerLess 架構(gòu)的數(shù)據(jù)庫,是對(duì)中小公司的更好選擇,通過靈活的計(jì)費(fèi)模式,按量付費(fèi)不需要承擔(dān)過多的人力成本、運(yùn)維成本就可以獲得一個(gè)高可用、高性能基礎(chǔ)設(shè)施,從而實(shí)現(xiàn)降本增效
  3. TDSQL-C 還可以非常簡單面對(duì)各種大流量場(chǎng)景,其中有一個(gè)非常簡單易用的功能就輸數(shù)據(jù)庫的流量負(fù)載均衡,通過設(shè)置 RO 組只讀實(shí)例的集合,然后通過權(quán)重進(jìn)行流量負(fù)載均衡,相應(yīng)的讀請(qǐng)求按一定規(guī)則發(fā)送到只讀實(shí)例,能夠顯著提高數(shù)據(jù)庫的讀負(fù)載能力。
  4. 在產(chǎn)品上比較完備,感覺很細(xì)節(jié),在提供數(shù)據(jù)庫的同時(shí)也提供了數(shù)據(jù)庫的可視化管理,不用再去下載數(shù)據(jù)庫管理客戶端就可以實(shí)現(xiàn)庫表級(jí)操作、實(shí)時(shí)監(jiān)控、實(shí)例會(huì)話管理、SQL 窗口等操作;同時(shí)也有智能監(jiān)控、健康管理分析等輔助工具,非常適合我這種懶人。
  • 遇到的一些小問題:
  1. 將這個(gè)程序部署到騰訊云服務(wù)器的時(shí)候,發(fā)現(xiàn)使用內(nèi)網(wǎng)地址連接不了這個(gè) TDSQL-C 數(shù)據(jù)庫,但是公網(wǎng)沒問題,可是想著內(nèi)網(wǎng)可以有更高的效率,于是一直排查,最后也是從文檔上發(fā)現(xiàn),原來輕量型不能直接通過內(nèi)網(wǎng)地址連接 TDSQL-C MySQL 版進(jìn)行訪問,使用 云聯(lián)網(wǎng) 互通

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

  1. 期間在對(duì)數(shù)據(jù)庫進(jìn)行壓力測(cè)試的時(shí)候,出現(xiàn) Too many connections,后續(xù)排查發(fā)現(xiàn)是因?yàn)閿?shù)據(jù)庫默認(rèn)連接數(shù)是 80

【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless
后面將這個(gè)默認(rèn)值改大之后就再也沒出現(xiàn)過了:
【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù),騰訊云,c語言,serverless

參考文獻(xiàn)

騰訊云TDSQL-C官方文檔
feapder框架文章來源地址http://www.zghlxwxcb.cn/news/detail-656008.html

到了這里,關(guān)于【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】基于TDSQL-C 存儲(chǔ)爬取的QQ音樂歌單數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless最佳實(shí)踐

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless最佳實(shí)踐

    隨著云計(jì)算技術(shù)的不斷發(fā)展,越來越多的企業(yè)開始選擇將自己的數(shù)據(jù)庫部署在云上,以更好了的支持企業(yè)數(shù)字化轉(zhuǎn)型以及業(yè)務(wù)創(chuàng)新,在這個(gè)過程中,很多客戶會(huì)遇到這樣一個(gè)問題,業(yè)務(wù)會(huì)存在高峰期和低谷期,同樣數(shù)據(jù)庫的訪問量也是會(huì)存在相應(yīng)的高峰期和低谷期。 序號(hào) 業(yè)

    2024年02月07日
    瀏覽(38)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless實(shí)踐之路

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless實(shí)踐之路

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless實(shí)踐之路 騰訊云TDSQL-C聯(lián)合CSDN推出了一款云數(shù)據(jù)庫產(chǎn)品測(cè)評(píng)活動(dòng),讓我們一起來體驗(yàn)一下。 云數(shù)據(jù)庫是指被優(yōu)化或部署到一個(gè)虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫,可以實(shí)現(xiàn)按需付費(fèi)、按需擴(kuò)展、高可用性以及存儲(chǔ)整合等優(yōu)勢(shì)。 云數(shù)

    2024年02月08日
    瀏覽(27)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】| 實(shí)戰(zhàn)分享

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】| 實(shí)戰(zhàn)分享

    在當(dāng)今云計(jì)算時(shí)代,不同類型的業(yè)務(wù)對(duì)高彈性、高可用性和可擴(kuò)展性的需求越來越強(qiáng)烈,按需使用資源成為企業(yè)所需要的關(guān)鍵功能。為了滿足這些需求,云原生數(shù)據(jù)庫的Serverless化已經(jīng)成為云數(shù)據(jù)庫發(fā)展的重要方向之一。 過去,云數(shù)據(jù)庫的發(fā)展經(jīng)歷了幾個(gè)時(shí)代。在1.0時(shí)代, 主

    2024年02月11日
    瀏覽(22)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless“隨心所欲”的彈性計(jì)費(fèi)

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless“隨心所欲”的彈性計(jì)費(fèi)

    數(shù)據(jù)庫作為公司軟件業(yè)務(wù)應(yīng)用中最重要的基礎(chǔ)軟件之一,在整個(gè)IT生態(tài)體系中具有舉足輕重的作用,隨著業(yè)務(wù)數(shù)據(jù)量的增大和算力的限制,單臺(tái)MySQL實(shí)例越來越滿足不了需求,騰訊云 TDSQL-C Serverless是騰訊云自研的云原生關(guān)系型數(shù)據(jù)庫 TDSQL-C MySQL版的無服務(wù)器架構(gòu)版。按實(shí)際計(jì)算

    2024年02月08日
    瀏覽(20)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless云數(shù)據(jù)庫化繁為簡

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless云數(shù)據(jù)庫化繁為簡

    隨著互聯(lián)網(wǎng)的發(fā)展,企業(yè)的規(guī)模也在不斷的發(fā)展,企業(yè)內(nèi)部的在線業(yè)務(wù)量也隨之驟增,海量的數(shù)據(jù)訪問和存儲(chǔ)壓力已經(jīng)日益不滿足公司業(yè)務(wù)的需求了,而且搭建傳統(tǒng)集中式數(shù)據(jù)庫也增加運(yùn)維工作量和公司軟硬件成本,對(duì)于突發(fā)的業(yè)務(wù),無法滿足更快更穩(wěn)定的業(yè)務(wù)性能。 企業(yè)級(jí)

    2024年02月08日
    瀏覽(27)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless助力企業(yè)降本增效直播讀后感

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】TDSQL-C MySQL Serverless助力企業(yè)降本增效直播讀后感

    本人接觸互聯(lián)網(wǎng)也有差不多10個(gè)年頭,從個(gè)人的博客、商城、電商、教育、淘寶客等,手里大大小小的項(xiàng)目也不在少數(shù),接觸過的技術(shù)棧也是比較多,從.net、php、java、go、python等都有涉獵,接觸的規(guī)模也是逐漸由小到大,從簡單的單機(jī)應(yīng)用部署到SOA架構(gòu),再到目前公司業(yè)務(wù)的

    2024年02月07日
    瀏覽(29)
  • 【騰訊云TDSQL-C Serverless 產(chǎn)品體驗(yàn)】使用 Python向TDSQL-C添加讀取數(shù)據(jù)實(shí)現(xiàn)詞云圖

    【騰訊云TDSQL-C Serverless 產(chǎn)品體驗(yàn)】使用 Python向TDSQL-C添加讀取數(shù)據(jù)實(shí)現(xiàn)詞云圖

    TDSQL-C 是騰訊云自主研發(fā)的新一代云原生關(guān)系型數(shù)據(jù)庫。 它融合了傳統(tǒng)數(shù)據(jù)庫、云計(jì)算和新硬件技術(shù)的優(yōu)勢(shì),100%兼容 MySQL,為用戶提供具有極致彈性、高性能、高可用性、高可靠性和安全性的數(shù)據(jù)庫服務(wù)。 TDSQL-C 實(shí)現(xiàn)了超過百萬每秒的高吞吐量,支持 PB 級(jí)海量分布式智能存儲(chǔ),并

    2024年02月10日
    瀏覽(62)
  • 【騰訊云TDSQL-C Serverless產(chǎn)品體驗(yàn)】使用 Python 向 TDSQL-C-添加讀取數(shù)據(jù)-實(shí)現(xiàn)詞云圖

    【騰訊云TDSQL-C Serverless產(chǎn)品體驗(yàn)】使用 Python 向 TDSQL-C-添加讀取數(shù)據(jù)-實(shí)現(xiàn)詞云圖

    目錄 前言 一,TDSQL-C Serverless產(chǎn)品介紹 二,學(xué)到什么 三,準(zhǔn)備階段 ?1.申請(qǐng)TDSQL-C數(shù)據(jù)庫(第一種方式) 1.1 進(jìn)行注冊(cè)登錄 1.2點(diǎn)擊紅圈進(jìn)行選購 1.3選購頁面的配置 1.4基礎(chǔ)信息填寫 2.申請(qǐng)TDSQL-C數(shù)據(jù)庫(第二種方式成為測(cè)試者) 2.1如何成為測(cè)試者 2.2成為測(cè)試者的福利 福利1: 福利2:

    2024年02月12日
    瀏覽(22)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】 使用 Python 向 TDSQL-C 添加讀取數(shù)據(jù) 實(shí)現(xiàn)詞云圖

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】 使用 Python 向 TDSQL-C 添加讀取數(shù)據(jù) 實(shí)現(xiàn)詞云圖

    TDSQL-C MySQL 版(TDSQL-C for MySQL)是騰訊云自研的新一代云原生關(guān)系型數(shù)據(jù)庫。融合了傳統(tǒng)數(shù)據(jù)庫、云計(jì)算與新硬件技術(shù)的優(yōu)勢(shì),為用戶提供具備高彈性、高性能、海量存儲(chǔ)、安全可靠的數(shù)據(jù)庫服務(wù)。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。實(shí)現(xiàn)超百萬級(jí) QPS 的高吞吐,最高 PB 級(jí)智能

    2024年02月13日
    瀏覽(27)
  • 【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】以TDSQL-C Mysql Serverless 作為數(shù)據(jù)中心爬取豆瓣圖書數(shù)據(jù)

    【騰訊云 TDSQL-C Serverless 產(chǎn)品體驗(yàn)】以TDSQL-C Mysql Serverless 作為數(shù)據(jù)中心爬取豆瓣圖書數(shù)據(jù)

    最近我一直在研究 python 爬蟲,公司需要很多數(shù)據(jù)源的數(shù)據(jù),但遇到一個(gè)很大的障礙,就是沒有合適的數(shù)據(jù)庫儲(chǔ)存這些數(shù)據(jù),因?yàn)槠胀ǖ臋C(jī)器的性能瓶頸非常明顯,而且爬蟲數(shù)據(jù)性能的要求也不是非常穩(wěn)定,如果購買一臺(tái)高配按月付費(fèi)的機(jī)器,那無疑浪費(fèi)了沒有使用到的性能

    2024年02月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包