亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

文章采集api

文章采集api

分享文章:微信公眾號文章爬蟲(chóng)采集

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 102 次瀏覽 ? 2022-11-27 05:30 ? 來(lái)自相關(guān)話(huà)題

  分享文章:微信公眾號文章爬蟲(chóng)采集
  捕捉場(chǎng)景
  進(jìn)入搜狗微信首頁(yè),(),采集【熱點(diǎn)】分類(lèi)下的文章列表數據。同時(shí)點(diǎn)擊每篇文章的鏈接,進(jìn)入文章詳情頁(yè),采集
文章的文字和圖片。
  集合字段
  標題、文章鏈接、封面圖片、介紹、出處、發(fā)布時(shí)間、正文、圖片鏈接。
  將鼠標放在圖片上,點(diǎn)擊鼠標右鍵,選擇【在新標簽頁(yè)中打開(kāi)圖片】即可查看高分辨率大圖
  下面的其他圖片也一樣
  采集結果
  采集結果可以導出為Excel、CSV、HTML、數據庫等格式。導出到 Excel 的示例:
  教程說(shuō)明
  本文制作時(shí)間:2020/4/24 優(yōu)采云
版本:V8.1.8
  如因網(wǎng)頁(yè)改版導致網(wǎng)址或步驟失效,導致無(wú)法采集目標數據,請聯(lián)系官方客服,我們會(huì )及時(shí)更正。
  采集步驟
  第一步:打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  Step 2. 調整使用【智能識別】生成的采集流程
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  步驟 4. 開(kāi)始采集
  以下是具體步驟:
  Step 1. 打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  在首頁(yè)【輸入框】輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集
】,優(yōu)采云
會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
  點(diǎn)擊【自動(dòng)識別網(wǎng)頁(yè)】,成功識別文章列表中的數據和翻頁(yè)。
  點(diǎn)擊【生成采集
設置】,將自動(dòng)識別的列表數據和翻頁(yè)生成為一個(gè)采集
過(guò)程,方便我們使用和修改。
  特別提示:
  
  一個(gè)。本文使用【自動(dòng)識別】自動(dòng)識別網(wǎng)頁(yè)上的列表、滾動(dòng)和翻頁(yè)。識別成功后會(huì )生成采集規則,然后調整采集規則采集目標數據。如果【自動(dòng)識別】結果與上圖不同,您可以點(diǎn)擊【取消識別】自行配置采集流程或聯(lián)系客服反饋。詳情點(diǎn)擊查看【自動(dòng)識別】教程
  Step 2. 調整使用【智能識別】生成的采集流程
  【智能識別】對我們建立收款規則很有幫助,可以調整優(yōu)化規則。
  2.編輯字段
  在【當前頁(yè)數據預覽】面板中,可以刪除多余字段、修改字段名稱(chēng)、移動(dòng)字段順序等。
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  1.點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè)
  進(jìn)入【循環(huán)列表】設置頁(yè)面,查看當前文章列表(當前列表為藍色背景,其他項目為白色背景),在網(wǎng)頁(yè)中找到對應的當前文章列表(藍色高亮顯示)。
  在當前文章列表中選擇文章鏈接,在操作提示框中點(diǎn)擊【點(diǎn)擊鏈接】,優(yōu)采云
會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。
  特別提示:
  一個(gè)。一定要選擇當前文章列表中的文章鏈接做【點(diǎn)擊鏈接】,否則【點(diǎn)擊元素】步驟無(wú)法與【循環(huán)】中的文章列表鏈接,會(huì )一直點(diǎn)擊某個(gè)文章鏈接多次進(jìn)入其文章詳情頁(yè),無(wú)法依次點(diǎn)擊每篇文章鏈接。
  b. 如何找到當前的文章列表?【流通】中當前文章列表為藍色背景,其他條目為白色背景。網(wǎng)頁(yè)當前文章列表會(huì )以藍色高亮顯示,與【循環(huán)】中的當前列表一一對應。
  2.采集
文字
  選中一個(gè)段落,在操作提示框中點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊),然后點(diǎn)擊【采集
該元素的文本】,文本就會(huì )被采集
。
  特別提示:
  一個(gè)。為什么先選一個(gè)段落,再選DIV?搜狗微信文章格式復雜,文字也選不好。我們先選擇一個(gè)段落,然后直接點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊)來(lái)選擇文本。這里涉及到一定的XPath知識。點(diǎn)擊查看XPath學(xué)習和實(shí)例教程
  3.創(chuàng )建【循環(huán)列表】,提取文本中所有圖片地址
  一篇文章中可能有多張圖片。通過(guò)以下步驟采集
文章中的所有圖片地址:
 ?、?文本提取步驟后,點(diǎn)擊+號添加循環(huán)步驟
 ?、?將循環(huán)方式改為【不固定元素列表】,輸入XPath://div[@id='js_content']//img,點(diǎn)擊應用,采集
所有文章中的所有圖片地址。
 ?、?點(diǎn)擊頁(yè)面第一張圖片,在操作提示框中點(diǎn)擊【采集
圖片鏈接】,會(huì )自動(dòng)生成采集
圖片鏈接的步驟
  
  特別提示:
  一個(gè)。經(jīng)過(guò)以上3個(gè)連續的步驟,【循環(huán)-提取數據】就創(chuàng )建好了。[Loop]中的項對應頁(yè)面中的所有圖片,[Extract Data]中的字段對應每張圖片的圖片地址。開(kāi)始抓取后,優(yōu)采云
會(huì )按照循環(huán)中的順序依次提取每張圖片的地址。
  b. 為什么可以通過(guò)以上3步建立【循環(huán)-提取數據】?點(diǎn)擊查看榜單數據采集教程。
  特別提示:
  一個(gè)。為什么要修改[Circular List 1]的XPath?這是因為默認生成的XPath無(wú)法采集
到所有文章的圖片地址。我們需要手動(dòng)寫(xiě)一個(gè)XPath來(lái)定位所有的圖片。這里需要一些 XPath 知識。點(diǎn)擊查看XPath學(xué)習和示例教程。
  b. 默認是一個(gè)圖像地址和一個(gè)數據。如果要將同一篇文章的圖片地址合并到同一個(gè)數據中,需要進(jìn)入【提取列表數據1】設置頁(yè)面,勾選【自定義數據合并方式】【多次提取同一字段和一個(gè)排]。
  步驟 4. 開(kāi)始采集
  1.啟動(dòng)本地采集,查找并修正圖片地址亂碼問(wèn)題
  點(diǎn)擊【采集
】和【開(kāi)始本地采集
】。啟動(dòng)后,優(yōu)采云
開(kāi)始自動(dòng)采集
數據。
  采集
了部分數據導出到excel后,發(fā)現圖片地址有很多重復的亂碼,并不是真實(shí)的圖片地址。
  特別提示:
  一個(gè)?!颈镜夭杉渴鞘褂米约旱碾娔X進(jìn)行采集,【云采集】是使用優(yōu)采云
提供的云服務(wù)器進(jìn)行采集,點(diǎn)擊查看本地采集和云端采集的詳細說(shuō)明。
  這是因為打開(kāi)詳情頁(yè)后,需要滾動(dòng)頁(yè)面才能采集
真實(shí)圖片地址。進(jìn)入【點(diǎn)擊元素】步驟的設置頁(yè)面,勾選【頁(yè)面加載后向下滾動(dòng)】,滾動(dòng)方式為【向下滾動(dòng)一屏】,【滾動(dòng)次數】為20次,【每次間隔】為1秒,設置完成稍后保存。
  特別提示:
  一個(gè)。真實(shí)圖片地址是什么?微信文章中的圖片,需要先滾動(dòng)頁(yè)面,讓圖片在當前屏幕顯示一段時(shí)間,然后再加載真實(shí)圖片地址,否則會(huì )出現重復亂碼。請根據采集需求和網(wǎng)頁(yè)圖片加載情況,在設置中設置滾動(dòng)次數和時(shí)間間隔。它們不是靜態(tài)的。詳情請點(diǎn)擊查看處理滾動(dòng)加載數據的網(wǎng)頁(yè)教程
  2.重新開(kāi)始采集
  優(yōu)采云
打開(kāi)文章詳情頁(yè),滾動(dòng)到采集
實(shí)圖地址,如下圖:
  3.導出數據
  采集完成后,選擇合適的導出方式導出數據。支持導出為Excel、CSV、HTML、數據庫等,這里導出為Excel,示例數據:
  分享文章:如何一鍵采集網(wǎng)頁(yè)的文章到自己的網(wǎng)站
  首先需要懂編程語(yǔ)言,采集軟件的開(kāi)發(fā)比較簡(jiǎn)單。如果要采集
某個(gè)網(wǎng)站,需要先采集
源碼內容,然后取需要的內容,然后寫(xiě)后臺動(dòng)作打開(kāi)自己的網(wǎng)站,包括自動(dòng)填寫(xiě)賬號密碼,然后打開(kāi)發(fā)帖界面, 然后選擇列。
  公眾號采集
文章插件,什么是公眾號文章采集
插件,公眾號文章采集
插件有什么用?公眾號采集
插件是一款可以自動(dòng)采集
公眾號文章的插件工具。市面上采集
公眾號的工具或軟件很多,并不是所有的都能適合你的網(wǎng)站,滿(mǎn)足你的需求。今天給大家介紹一個(gè)。一款免費全能的公眾號采集
插件,支持各大公眾號采集
并發(fā)布到各大網(wǎng)站??梢灾苯釉诰庉嬈髦芯庉嫲l(fā)布,也可以將收錄的文章自動(dòng)偽原創(chuàng )發(fā)布。詳見(jiàn)圖1、圖2、圖3、圖4、圖5、
  對于企業(yè)網(wǎng)站來(lái)說(shuō),產(chǎn)品展示是網(wǎng)站最重要的部分,也是我們內鏈的一部分。對各種商品進(jìn)行分類(lèi),可以很好的建立導航鏈之間的聯(lián)系,同時(shí)進(jìn)行商品搜索或者站內搜索,在很大程度上增加了鏈接。
  企業(yè)網(wǎng)站的另一個(gè)重要板塊是文章頁(yè)。很多人喜歡在文章底部留下關(guān)鍵詞錨文本鏈接,以增加網(wǎng)站權重。但是我認為,這當然可以提高關(guān)鍵詞的排名,但是在一個(gè)有200篇文章的站點(diǎn)中,很容易產(chǎn)生過(guò)多的關(guān)鍵詞優(yōu)化。盡量在文章的內頁(yè)放置超鏈接,減少內頁(yè)的權重來(lái)增加所有站點(diǎn)的權重。
  百度官方優(yōu)化指南中提到,在頁(yè)面中添加導航欄,可以方便搜索引擎定位各個(gè)頁(yè)面在網(wǎng)站結構中的層級,起到鏈接作用。在頁(yè)面內容過(guò)多的地方,采用面包屑填充的方式。比如百度知道在數據包芯片導航中:
  
  在對歌曲進(jìn)行排名時(shí),我們總是關(guān)注關(guān)注的問(wèn)題。如何更好的積累網(wǎng)站權重,提高關(guān)鍵詞的排名,穩定關(guān)鍵詞的排名,這些關(guān)鍵點(diǎn)是搜索引擎優(yōu)化研究的目的。很多姐妹城市都會(huì )遇到這樣的問(wèn)題。網(wǎng)站上的文章數量繼續穩步增長(cháng)。每天都有很多PV和獨立訪(fǎng)客。為什么關(guān)鍵字排名不能提高?關(guān)于這些問(wèn)題,筆者今天就對問(wèn)題進(jìn)行全面的分析,找出問(wèn)題的根源。
  很多公司在大量的頁(yè)面上都使用同一個(gè)標題,這樣對搜索引擎是很不友好的。當搜索引擎抓取頁(yè)面時(shí),標題將直接出現在搜索結果中。如果標題反復出現,對用戶(hù)體驗來(lái)說(shuō)是倒霉的。關(guān)鍵詞 散布運氣不好。頁(yè)面的每個(gè)部分都有一組不同的關(guān)鍵字,可以實(shí)現出色的關(guān)鍵字分布。死鏈接就不多說(shuō)了,網(wǎng)站會(huì )實(shí)時(shí)處理死鏈接,能收錄和不能收錄的頁(yè)面就是收錄的頁(yè)面。如果頁(yè)面無(wú)法訪(fǎng)問(wèn),會(huì )設置所有404,及時(shí)處理丟失。
  關(guān)于seo,雖然互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展取得了長(cháng)足的進(jìn)步,網(wǎng)站和線(xiàn)下實(shí)體的使用同步提升已經(jīng)成為企業(yè)或者團隊建設的基本方式,但是做網(wǎng)站的時(shí)候,面臨著(zhù)激烈的競爭,各種行業(yè)網(wǎng)站,還必須考慮你的網(wǎng)站如何吸引客戶(hù)。SEO優(yōu)化是網(wǎng)站管理和維護的根本方法。要保證更好的優(yōu)化效果,一定要把握好優(yōu)化的內容,尤其是關(guān)鍵詞要找到合適的,這樣起點(diǎn)就醒目,吸引人。
  如何使用軟件對網(wǎng)站文章進(jìn)行采集和采集
?
  網(wǎng)站做的好不好是專(zhuān)業(yè)建站者要求的,但是網(wǎng)站管理和維護的好不好就是另外一回事了。為了使網(wǎng)站不斷更新,它總是可以非常有特色。除了考慮基本的優(yōu)化方法外,就是把握住關(guān)鍵詞的內容,保證常量?jì)?yōu)化準確可靠。. SEO優(yōu)化的重點(diǎn)是關(guān)鍵詞,關(guān)鍵詞也可以擴展關(guān)鍵詞,有了這一點(diǎn),就可以從源頭完成更有效的引渡。
  
  關(guān)鍵詞很重要,如果內容可以很豐富很吸引人,可以提高轉化率。這是在一系列seo優(yōu)化服務(wù)過(guò)程中,可以充分利用網(wǎng)站建設的基本標準,達到更可靠的優(yōu)化服務(wù)條件。許多網(wǎng)站的成功經(jīng)驗證明,選擇正確的方式,優(yōu)化提供外包等專(zhuān)業(yè)服務(wù),可以節省能源和人力,確保效果。尤其是把握關(guān)鍵詞這一點(diǎn),一定要分離網(wǎng)站引擎的支持,正確識別和使用。
  尋找關(guān)鍵詞是利用互聯(lián)網(wǎng)的基本功能實(shí)現的,使用關(guān)鍵詞成為SEO優(yōu)化內容的重點(diǎn)。注重適應網(wǎng)絡(luò )平臺特點(diǎn),有效實(shí)現網(wǎng)絡(luò )提升。這種以專(zhuān)業(yè)的優(yōu)化服務(wù)為基礎的方法,在相對專(zhuān)業(yè)的層面上,給人更好的機會(huì ),更多的享受專(zhuān)業(yè)的服務(wù),輕松打造一流的網(wǎng)站。目的。當然,任何網(wǎng)絡(luò )功能都具有網(wǎng)絡(luò )特性,關(guān)鍵詞成為網(wǎng)站優(yōu)化的核心。
  采集
采集
網(wǎng)站文章,現在市面上有很多工具,不僅可以采集
保存在本地,還可以發(fā)送到網(wǎng)站優(yōu)采云
智能文章采集
系統等,不需要代碼基礎,這也是可能的。
  目前采集
器很多,需要自己去探索和學(xué)習,比如優(yōu)采云
、VG瀏覽器、優(yōu)采云
采集
器等,都可以使用。 查看全部

  分享文章:微信公眾號文章爬蟲(chóng)采集
  捕捉場(chǎng)景
  進(jìn)入搜狗微信首頁(yè),(),采集【熱點(diǎn)】分類(lèi)下的文章列表數據。同時(shí)點(diǎn)擊每篇文章的鏈接,進(jìn)入文章詳情頁(yè),采集
文章的文字和圖片。
  集合字段
  標題、文章鏈接、封面圖片、介紹、出處、發(fā)布時(shí)間、正文、圖片鏈接。
  將鼠標放在圖片上,點(diǎn)擊鼠標右鍵,選擇【在新標簽頁(yè)中打開(kāi)圖片】即可查看高分辨率大圖
  下面的其他圖片也一樣
  采集結果
  采集結果可以導出為Excel、CSV、HTML、數據庫等格式。導出到 Excel 的示例:
  教程說(shuō)明
  本文制作時(shí)間:2020/4/24 優(yōu)采云
版本:V8.1.8
  如因網(wǎng)頁(yè)改版導致網(wǎng)址或步驟失效,導致無(wú)法采集目標數據,請聯(lián)系官方客服,我們會(huì )及時(shí)更正。
  采集步驟
  第一步:打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  Step 2. 調整使用【智能識別】生成的采集流程
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  步驟 4. 開(kāi)始采集
  以下是具體步驟:
  Step 1. 打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  在首頁(yè)【輸入框】輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集
】,優(yōu)采云
會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
  點(diǎn)擊【自動(dòng)識別網(wǎng)頁(yè)】,成功識別文章列表中的數據和翻頁(yè)。
  點(diǎn)擊【生成采集
設置】,將自動(dòng)識別的列表數據和翻頁(yè)生成為一個(gè)采集
過(guò)程,方便我們使用和修改。
  特別提示:
  
  一個(gè)。本文使用【自動(dòng)識別】自動(dòng)識別網(wǎng)頁(yè)上的列表、滾動(dòng)和翻頁(yè)。識別成功后會(huì )生成采集規則,然后調整采集規則采集目標數據。如果【自動(dòng)識別】結果與上圖不同,您可以點(diǎn)擊【取消識別】自行配置采集流程或聯(lián)系客服反饋。詳情點(diǎn)擊查看【自動(dòng)識別】教程
  Step 2. 調整使用【智能識別】生成的采集流程
  【智能識別】對我們建立收款規則很有幫助,可以調整優(yōu)化規則。
  2.編輯字段
  在【當前頁(yè)數據預覽】面板中,可以刪除多余字段、修改字段名稱(chēng)、移動(dòng)字段順序等。
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  1.點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè)
  進(jìn)入【循環(huán)列表】設置頁(yè)面,查看當前文章列表(當前列表為藍色背景,其他項目為白色背景),在網(wǎng)頁(yè)中找到對應的當前文章列表(藍色高亮顯示)。
  在當前文章列表中選擇文章鏈接,在操作提示框中點(diǎn)擊【點(diǎn)擊鏈接】,優(yōu)采云
會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。
  特別提示:
  一個(gè)。一定要選擇當前文章列表中的文章鏈接做【點(diǎn)擊鏈接】,否則【點(diǎn)擊元素】步驟無(wú)法與【循環(huán)】中的文章列表鏈接,會(huì )一直點(diǎn)擊某個(gè)文章鏈接多次進(jìn)入其文章詳情頁(yè),無(wú)法依次點(diǎn)擊每篇文章鏈接。
  b. 如何找到當前的文章列表?【流通】中當前文章列表為藍色背景,其他條目為白色背景。網(wǎng)頁(yè)當前文章列表會(huì )以藍色高亮顯示,與【循環(huán)】中的當前列表一一對應。
  2.采集
文字
  選中一個(gè)段落,在操作提示框中點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊),然后點(diǎn)擊【采集
該元素的文本】,文本就會(huì )被采集
。
  特別提示:
  一個(gè)。為什么先選一個(gè)段落,再選DIV?搜狗微信文章格式復雜,文字也選不好。我們先選擇一個(gè)段落,然后直接點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊)來(lái)選擇文本。這里涉及到一定的XPath知識。點(diǎn)擊查看XPath學(xué)習和實(shí)例教程
  3.創(chuàng )建【循環(huán)列表】,提取文本中所有圖片地址
  一篇文章中可能有多張圖片。通過(guò)以下步驟采集
文章中的所有圖片地址:
 ?、?文本提取步驟后,點(diǎn)擊+號添加循環(huán)步驟
 ?、?將循環(huán)方式改為【不固定元素列表】,輸入XPath://div[@id='js_content']//img,點(diǎn)擊應用,采集
所有文章中的所有圖片地址。
 ?、?點(diǎn)擊頁(yè)面第一張圖片,在操作提示框中點(diǎn)擊【采集
圖片鏈接】,會(huì )自動(dòng)生成采集
圖片鏈接的步驟
  
  特別提示:
  一個(gè)。經(jīng)過(guò)以上3個(gè)連續的步驟,【循環(huán)-提取數據】就創(chuàng )建好了。[Loop]中的項對應頁(yè)面中的所有圖片,[Extract Data]中的字段對應每張圖片的圖片地址。開(kāi)始抓取后,優(yōu)采云
會(huì )按照循環(huán)中的順序依次提取每張圖片的地址。
  b. 為什么可以通過(guò)以上3步建立【循環(huán)-提取數據】?點(diǎn)擊查看榜單數據采集教程。
  特別提示:
  一個(gè)。為什么要修改[Circular List 1]的XPath?這是因為默認生成的XPath無(wú)法采集
到所有文章的圖片地址。我們需要手動(dòng)寫(xiě)一個(gè)XPath來(lái)定位所有的圖片。這里需要一些 XPath 知識。點(diǎn)擊查看XPath學(xué)習和示例教程。
  b. 默認是一個(gè)圖像地址和一個(gè)數據。如果要將同一篇文章的圖片地址合并到同一個(gè)數據中,需要進(jìn)入【提取列表數據1】設置頁(yè)面,勾選【自定義數據合并方式】【多次提取同一字段和一個(gè)排]。
  步驟 4. 開(kāi)始采集
  1.啟動(dòng)本地采集,查找并修正圖片地址亂碼問(wèn)題
  點(diǎn)擊【采集
】和【開(kāi)始本地采集
】。啟動(dòng)后,優(yōu)采云
開(kāi)始自動(dòng)采集
數據。
  采集
了部分數據導出到excel后,發(fā)現圖片地址有很多重復的亂碼,并不是真實(shí)的圖片地址。
  特別提示:
  一個(gè)?!颈镜夭杉渴鞘褂米约旱碾娔X進(jìn)行采集,【云采集】是使用優(yōu)采云
提供的云服務(wù)器進(jìn)行采集,點(diǎn)擊查看本地采集和云端采集的詳細說(shuō)明。
  這是因為打開(kāi)詳情頁(yè)后,需要滾動(dòng)頁(yè)面才能采集
真實(shí)圖片地址。進(jìn)入【點(diǎn)擊元素】步驟的設置頁(yè)面,勾選【頁(yè)面加載后向下滾動(dòng)】,滾動(dòng)方式為【向下滾動(dòng)一屏】,【滾動(dòng)次數】為20次,【每次間隔】為1秒,設置完成稍后保存。
  特別提示:
  一個(gè)。真實(shí)圖片地址是什么?微信文章中的圖片,需要先滾動(dòng)頁(yè)面,讓圖片在當前屏幕顯示一段時(shí)間,然后再加載真實(shí)圖片地址,否則會(huì )出現重復亂碼。請根據采集需求和網(wǎng)頁(yè)圖片加載情況,在設置中設置滾動(dòng)次數和時(shí)間間隔。它們不是靜態(tài)的。詳情請點(diǎn)擊查看處理滾動(dòng)加載數據的網(wǎng)頁(yè)教程
  2.重新開(kāi)始采集
  優(yōu)采云
打開(kāi)文章詳情頁(yè),滾動(dòng)到采集
實(shí)圖地址,如下圖:
  3.導出數據
  采集完成后,選擇合適的導出方式導出數據。支持導出為Excel、CSV、HTML、數據庫等,這里導出為Excel,示例數據:
  分享文章:如何一鍵采集網(wǎng)頁(yè)的文章到自己的網(wǎng)站
  首先需要懂編程語(yǔ)言,采集軟件的開(kāi)發(fā)比較簡(jiǎn)單。如果要采集
某個(gè)網(wǎng)站,需要先采集
源碼內容,然后取需要的內容,然后寫(xiě)后臺動(dòng)作打開(kāi)自己的網(wǎng)站,包括自動(dòng)填寫(xiě)賬號密碼,然后打開(kāi)發(fā)帖界面, 然后選擇列。
  公眾號采集
文章插件,什么是公眾號文章采集
插件,公眾號文章采集
插件有什么用?公眾號采集
插件是一款可以自動(dòng)采集
公眾號文章的插件工具。市面上采集
公眾號的工具或軟件很多,并不是所有的都能適合你的網(wǎng)站,滿(mǎn)足你的需求。今天給大家介紹一個(gè)。一款免費全能的公眾號采集
插件,支持各大公眾號采集
并發(fā)布到各大網(wǎng)站??梢灾苯釉诰庉嬈髦芯庉嫲l(fā)布,也可以將收錄的文章自動(dòng)偽原創(chuàng )發(fā)布。詳見(jiàn)圖1、圖2、圖3、圖4、圖5、
  對于企業(yè)網(wǎng)站來(lái)說(shuō),產(chǎn)品展示是網(wǎng)站最重要的部分,也是我們內鏈的一部分。對各種商品進(jìn)行分類(lèi),可以很好的建立導航鏈之間的聯(lián)系,同時(shí)進(jìn)行商品搜索或者站內搜索,在很大程度上增加了鏈接。
  企業(yè)網(wǎng)站的另一個(gè)重要板塊是文章頁(yè)。很多人喜歡在文章底部留下關(guān)鍵詞錨文本鏈接,以增加網(wǎng)站權重。但是我認為,這當然可以提高關(guān)鍵詞的排名,但是在一個(gè)有200篇文章的站點(diǎn)中,很容易產(chǎn)生過(guò)多的關(guān)鍵詞優(yōu)化。盡量在文章的內頁(yè)放置超鏈接,減少內頁(yè)的權重來(lái)增加所有站點(diǎn)的權重。
  百度官方優(yōu)化指南中提到,在頁(yè)面中添加導航欄,可以方便搜索引擎定位各個(gè)頁(yè)面在網(wǎng)站結構中的層級,起到鏈接作用。在頁(yè)面內容過(guò)多的地方,采用面包屑填充的方式。比如百度知道在數據包芯片導航中:
  
  在對歌曲進(jìn)行排名時(shí),我們總是關(guān)注關(guān)注的問(wèn)題。如何更好的積累網(wǎng)站權重,提高關(guān)鍵詞的排名,穩定關(guān)鍵詞的排名,這些關(guān)鍵點(diǎn)是搜索引擎優(yōu)化研究的目的。很多姐妹城市都會(huì )遇到這樣的問(wèn)題。網(wǎng)站上的文章數量繼續穩步增長(cháng)。每天都有很多PV和獨立訪(fǎng)客。為什么關(guān)鍵字排名不能提高?關(guān)于這些問(wèn)題,筆者今天就對問(wèn)題進(jìn)行全面的分析,找出問(wèn)題的根源。
  很多公司在大量的頁(yè)面上都使用同一個(gè)標題,這樣對搜索引擎是很不友好的。當搜索引擎抓取頁(yè)面時(shí),標題將直接出現在搜索結果中。如果標題反復出現,對用戶(hù)體驗來(lái)說(shuō)是倒霉的。關(guān)鍵詞 散布運氣不好。頁(yè)面的每個(gè)部分都有一組不同的關(guān)鍵字,可以實(shí)現出色的關(guān)鍵字分布。死鏈接就不多說(shuō)了,網(wǎng)站會(huì )實(shí)時(shí)處理死鏈接,能收錄和不能收錄的頁(yè)面就是收錄的頁(yè)面。如果頁(yè)面無(wú)法訪(fǎng)問(wèn),會(huì )設置所有404,及時(shí)處理丟失。
  關(guān)于seo,雖然互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展取得了長(cháng)足的進(jìn)步,網(wǎng)站和線(xiàn)下實(shí)體的使用同步提升已經(jīng)成為企業(yè)或者團隊建設的基本方式,但是做網(wǎng)站的時(shí)候,面臨著(zhù)激烈的競爭,各種行業(yè)網(wǎng)站,還必須考慮你的網(wǎng)站如何吸引客戶(hù)。SEO優(yōu)化是網(wǎng)站管理和維護的根本方法。要保證更好的優(yōu)化效果,一定要把握好優(yōu)化的內容,尤其是關(guān)鍵詞要找到合適的,這樣起點(diǎn)就醒目,吸引人。
  如何使用軟件對網(wǎng)站文章進(jìn)行采集和采集
?
  網(wǎng)站做的好不好是專(zhuān)業(yè)建站者要求的,但是網(wǎng)站管理和維護的好不好就是另外一回事了。為了使網(wǎng)站不斷更新,它總是可以非常有特色。除了考慮基本的優(yōu)化方法外,就是把握住關(guān)鍵詞的內容,保證常量?jì)?yōu)化準確可靠。. SEO優(yōu)化的重點(diǎn)是關(guān)鍵詞,關(guān)鍵詞也可以擴展關(guān)鍵詞,有了這一點(diǎn),就可以從源頭完成更有效的引渡。
  
  關(guān)鍵詞很重要,如果內容可以很豐富很吸引人,可以提高轉化率。這是在一系列seo優(yōu)化服務(wù)過(guò)程中,可以充分利用網(wǎng)站建設的基本標準,達到更可靠的優(yōu)化服務(wù)條件。許多網(wǎng)站的成功經(jīng)驗證明,選擇正確的方式,優(yōu)化提供外包等專(zhuān)業(yè)服務(wù),可以節省能源和人力,確保效果。尤其是把握關(guān)鍵詞這一點(diǎn),一定要分離網(wǎng)站引擎的支持,正確識別和使用。
  尋找關(guān)鍵詞是利用互聯(lián)網(wǎng)的基本功能實(shí)現的,使用關(guān)鍵詞成為SEO優(yōu)化內容的重點(diǎn)。注重適應網(wǎng)絡(luò )平臺特點(diǎn),有效實(shí)現網(wǎng)絡(luò )提升。這種以專(zhuān)業(yè)的優(yōu)化服務(wù)為基礎的方法,在相對專(zhuān)業(yè)的層面上,給人更好的機會(huì ),更多的享受專(zhuān)業(yè)的服務(wù),輕松打造一流的網(wǎng)站。目的。當然,任何網(wǎng)絡(luò )功能都具有網(wǎng)絡(luò )特性,關(guān)鍵詞成為網(wǎng)站優(yōu)化的核心。
  采集
采集
網(wǎng)站文章,現在市面上有很多工具,不僅可以采集
保存在本地,還可以發(fā)送到網(wǎng)站優(yōu)采云
智能文章采集
系統等,不需要代碼基礎,這也是可能的。
  目前采集
器很多,需要自己去探索和學(xué)習,比如優(yōu)采云
、VG瀏覽器、優(yōu)采云
采集
器等,都可以使用。

解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-11-27 05:19 ? 來(lái)自相關(guān)話(huà)題

  解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!
  說(shuō)到消息隊列,心里還是有些波瀾。
  消息隊列、緩存和分庫分表是高并發(fā)解決方案的三把劍,而消息隊列是我最喜歡的,也是我思考最多的技術(shù)。
  下面分享一下我在消息隊列這四個(gè)階段的故事,也是對自己技術(shù)成長(cháng)經(jīng)歷的回顧。
  1 認識ActiveMQ1.1異步&解耦
  2011年初,我在一家互聯(lián)網(wǎng)彩票公司做研發(fā)。
  我負責用戶(hù)中心系統,提供用戶(hù)注冊、查詢(xún)、修改等基本功能。用戶(hù)注冊成功后,需要給用戶(hù)發(fā)送一條短信。
  因為本來(lái)就是面向過(guò)程的編程,所以我把新建用戶(hù)模塊和短信發(fā)送模塊組合在一起。
  一開(kāi)始還好,但是慢慢的問(wèn)題就出現了。
  第一個(gè)問(wèn)題,我可以采取線(xiàn)程池的方式來(lái)做,主要是異步的。但是第二個(gè)問(wèn)題讓我很困惑。
  于是向技術(shù)經(jīng)理請教,他讓我引入消息隊列來(lái)解決這個(gè)問(wèn)題。
  這時(shí)候我才明白,消息隊列的核心功能就是異步和解耦。
  1.2 調度中心
  彩票系統的業(yè)務(wù)比較復雜。在彩票訂單的生命周期中,有創(chuàng )建、子訂單拆分、出票、中獎?dòng)嬎愕榷鄠€(gè)環(huán)節。每個(gè)環(huán)節需要不同的業(yè)務(wù)處理,每個(gè)系統都有自己獨立的表,業(yè)務(wù)功能相對獨立。如果每個(gè)應用程序都修改訂單主表中的信息,那將是相當混亂的。
  該公司的建筑師設計了調度中心的服務(wù)。調度中心的職責是維護訂單核心狀態(tài)機、訂單獎勵流程、彩票核心數據的生成。
  調度中心通過(guò)消息隊列、票務(wù)網(wǎng)關(guān)、獎品計算服務(wù)等系統進(jìn)行信息傳遞和交換。
  在我當時(shí)幼小的眼里,這種設計就像是水滴對戰人類(lèi)艦隊,降維打擊。
  隨著(zhù)對業(yè)務(wù)理解的不斷加深,我隱約感覺(jué)到:“好的架構是簡(jiǎn)潔的,應該是易于維護的”。
  當彩票業(yè)務(wù)日均交易量幾千萬(wàn)的時(shí)候,調度中心只有兩個(gè)研發(fā)和維護人員。調度中心源碼中的業(yè)務(wù)邏輯、日志、代碼規范都很優(yōu)秀。
  在以后的編程生活中,我也會(huì )下意識地模仿調度中心的編碼方式,“別?;?,代碼是給人看的”。
  1.3 重啟大法
  隨著(zhù)彩票業(yè)務(wù)的爆發(fā)式增長(cháng),日新聞量從30萬(wàn)條猛增到150萬(wàn)到200萬(wàn)條左右,一切似乎都趨于平穩。
  某一天,雙色球投注結束,調度中心無(wú)法消費消息隊列中的數據。消息總線(xiàn)處于發(fā)送狀態(tài),沒(méi)有接收狀態(tài)。整個(gè)技術(shù)團隊都處于極度焦急的狀態(tài),“如果不能出票,那將是幾百萬(wàn)的損失,如果用戶(hù)中了兩個(gè)雙色球?那就是幾千萬(wàn)了?!?每個(gè)人都急得像熱鍋上的螞蟻。
  這也是整個(gè)技術(shù)團隊第一次遇到消費積累,大家都沒(méi)有經(jīng)驗。
  首先想到的是多部署幾個(gè)調度中心服務(wù)。部署完成后,調度中心消費了上千條消息還是掛了。這時(shí)架構師只能采用重啟策略。你沒(méi)看錯,就是重啟大法。說(shuō)起來(lái)真的很慚愧,但當時(shí)真的是只能這樣了。
  調度中心重啟后,花了1萬(wàn)到2萬(wàn)元又掛了。只能重新開(kāi)始。來(lái)回20多次,像擠牙膏一樣。而隨著(zhù)開(kāi)票期限的臨近,這種精神上的緊張和恐懼也變得更加強烈。最后,經(jīng)過(guò)1個(gè)小時(shí)的手動(dòng)重啟,消息終于被消費了。
  當時(shí)剛好在看畢軒的《分布式Java應用基礎與實(shí)踐》。想是不是線(xiàn)程被阻塞了,于是用Jstack命令查看堆棧狀態(tài)。果然不出所料,線(xiàn)程阻塞在提交數據的方法上。
  我們第一時(shí)間與DBA溝通,發(fā)現oracle數據庫執行了很多大事務(wù),每個(gè)大事務(wù)執行需要30多分鐘,導致調度中心的調度票線(xiàn)程阻塞。
  技術(shù)部門(mén)后來(lái)采用了以下方案來(lái)避免堆積問(wèn)題:
  生產(chǎn)者發(fā)送消息時(shí),將超大消息拆分成多批消息,降低調度中心執行大事務(wù)的概率;數據源配置參數,如果事務(wù)執行超過(guò)一定時(shí)間,則自動(dòng)拋出異常并回滾。1.4 回顧
  Spring封裝的ActiveMQ API非常簡(jiǎn)單易用,用起來(lái)真的很舒服。
  受限于當時(shí)彩票技術(shù)團隊的技術(shù)水平和眼界,我們在使用ActiveMQ的過(guò)程中遇到了一些問(wèn)題。
  高吞吐量,當消息累積到一定數量時(shí)很容易hold
  技術(shù)團隊發(fā)現,在吞吐量特別高的場(chǎng)景下,如果消息的堆積越大,ActiveMQ Hanging的幾率就越低。
  票務(wù)網(wǎng)關(guān)消息量很大,有些消息不需要立即消費,但是為了避免消息隊列Hang的問(wèn)題,票務(wù)網(wǎng)關(guān)在消費數據時(shí),先將消息持久化到本地磁盤(pán),生成本地 XML 文件,然后異步和周期性地執行消息。這樣,我們大大提高了票務(wù)網(wǎng)關(guān)的消費速度,基本消除了票務(wù)網(wǎng)關(guān)排隊的堆積。
  但是這個(gè)方法感覺(jué)很奇怪。消費新聞時(shí),必須在本地存儲另一份數據。新聞存儲在本地。如果磁盤(pán)出現故障,也有丟失消息的風(fēng)險。
  高可用機制有待完善
  我們采用master/slave部署方式,一主一從,服務(wù)器配置為4核8G。
  這種部署方式可以同時(shí)運行兩個(gè)ActiveMQ,并且只允許一個(gè)slave連接Master,也就是說(shuō)一個(gè)集群只能有2個(gè)MQ,兩個(gè)服務(wù)之間有數據備份通道. 單向數據備份。該方案在實(shí)際生產(chǎn)線(xiàn)上使用不便,因為當Master掛掉后,Slave無(wú)法自動(dòng)接收Client發(fā)送的邀請,需要人工干預,必須先停止Slave再重啟恢復負載集群。
  還有一些非常奇怪的消息丟失事件。producer發(fā)送消息成功,但是master控制臺查詢(xún)不到,但是slave控制臺確實(shí)可以查詢(xún)到消息。
  但是消費者沒(méi)有辦法消費slave上的消息,只能手動(dòng)處理。
  2 進(jìn)階Redis&RabbitMQ
  2014年在藝龍網(wǎng)從事紅包系統和優(yōu)惠券系統的優(yōu)化工作。
  2.1 Redis可以做消息隊列嗎?
  酒店優(yōu)惠券計算服務(wù)采用第一代流式計算框架Storm。Storm這里就不詳細介紹了,可以參考下面的邏輯圖:
  這里我們Storm集群的水源(數據源)是redis集群,使用list數據結構實(shí)現消息隊列的push/pop功能。
  流式計算的整體流程:
  酒店信息服務(wù)向Redis集群A/B發(fā)送酒店信息;Storm的spout組件從Redis集群A/B獲取數據,獲取成功后發(fā)送tuple消息給Bolt組件;數據被清理;最后,Storm將處理后的數據發(fā)送到Redis集群C;存儲服務(wù)從Redis集群C獲取數據,存儲到數據庫中;搜索團隊掃描數據庫表并生成索引。
  風(fēng)暴的描述
  這個(gè)流計算服務(wù)每天處理數千萬(wàn)條數據,處理起來(lái)比較流暢。但該計劃在團隊內部仍有不同的聲音:
  我認為使用Redis作為消息隊列應該滿(mǎn)足以下條件:
  容忍小概率消息丟失,通過(guò)定時(shí)任務(wù)/手動(dòng)觸發(fā)實(shí)現最終一致的業(yè)務(wù)場(chǎng)景;消息堆積概率低,有相關(guān)告警監控;消費者的消費模式應該足夠簡(jiǎn)單。2.2 RabbitMQ 是管道而不是池
  
  RabbitMQ 是用 erlang 語(yǔ)言編寫(xiě)的。RabbitMQ 滿(mǎn)足了我的兩個(gè)需求:
  高可用性機制。藝龍內部采用的是鏡像高可用模式,這種模式在藝龍內部已經(jīng)使用了很長(cháng)時(shí)間,其穩定性也得到了一定程度的驗證。在我負責的紅包系統中,RabbitMQ的日吞吐量在百萬(wàn)條消息左右,消息的發(fā)送和消費都相當完善。
  優(yōu)惠券服務(wù)最初使用的是SqlServer。由于數據量大,技術(shù)團隊決定采用分庫分表的策略,使用公司自研的分布式數據庫DDA。
  因為是第一次使用分布式數據庫,為了測試DDA的穩定性,我們模擬發(fā)送1000萬(wàn)條消息到RabbitMQ,然后優(yōu)惠券重構服務(wù)消費消息后,根據hash到不同的mysql庫用戶(hù)號碼。
  RabbitMQ集群模式是鏡像高可用,3臺服務(wù)器,每臺配置4核8G。
  我們以每小時(shí) 300 萬(wàn)條消息的速度發(fā)送消息。第一個(gè)小時(shí)生產(chǎn)者和消費者的表現都很好,但是由于消費者的速度跟不上生產(chǎn)者的速度,消息隊列出現了積壓。第三個(gè)小時(shí),消息隊列已經(jīng)積累了超過(guò)500萬(wàn)條消息,生產(chǎn)者發(fā)送消息的速度從最初的2毫秒提升到500毫秒左右。RabbitMQ的控制臺當場(chǎng)有血濺,紅標告警。
  這是一個(gè)無(wú)意的測試。從測試情況來(lái)看,RabbitMQ是優(yōu)秀的,但是RabbitMQ對消息堆積的支持不是很好。當大量消息積壓時(shí),RabbitMQ的性能會(huì )急劇下降。
  有朋友跟我說(shuō):“RabbitMQ明明是個(gè)管道,你非要把他當成池子嗎?”
  隨著(zhù)整個(gè)互聯(lián)網(wǎng)數據量的快速增長(cháng),在很多業(yè)務(wù)場(chǎng)景中允許適當的積累,只要消費者消費順暢,整個(gè)業(yè)務(wù)波動(dòng)不大。
  我心里越來(lái)越相信:消息隊列既可以作為管道,也可以作為池。
  3 升華 MetaQ
  Metamorphosis的由來(lái)是我從學(xué)習linkedin的開(kāi)源MQ開(kāi)始的——現在轉入apache的kafka。這是一個(gè)設計獨特的MQ系統。它使用拉機制而不是一般的 MQ 推模型。它大量使用Zookeeper做服務(wù)發(fā)現和偏移量存儲。我很欣賞也很認同它的設計理念。我強烈建議您閱讀它的設計文檔??偟膩?lái)說(shuō),蛻變的設計是完全符合它的。---莊曉丹,MetaQ作者
  3.1 驚人的消費模式
  2015年主要從事中國專(zhuān)用車(chē)訂單的研發(fā)工作。
  MetaQ滿(mǎn)足了我對消息隊列的幻想:“分布式、高吞吐、高積累”。
  MetaQ支持兩種消費模型:集群消費和廣播消費,因為之前使用的消費模型都是使用隊列模型。剛開(kāi)始接觸這種發(fā)布-訂閱模式的時(shí)候,我還是很驚嘆的。
  集群消費
  訂單創(chuàng )建成功后,發(fā)送消息給MetaQ。此消息可由調度服務(wù)或 BI 服務(wù)使用。
  廣播消費
  當調度服務(wù)將訂單分配給司機時(shí),它會(huì )向司機發(fā)送一條推送消息。推送是使用廣播消費的方式實(shí)現的。
  一般過(guò)程是:
  驅動(dòng)端的推送服務(wù)是一個(gè)TCP服務(wù)。啟動(dòng)后,以廣播方式消費MetaQ的PushTopic;驅動(dòng)端會(huì )定時(shí)向推送服務(wù)發(fā)送TCP請求。認證成功后,推送服務(wù)會(huì )保存司機號和通道的引用;單服務(wù)向MetaQ發(fā)送推送消息;推送服務(wù)的每臺機器都會(huì )收到消息,然后判斷內存中是否有驅動(dòng)程序的通道引用,如果有則推送消息。
  這是一個(gè)非常經(jīng)典的廣播消費案例。我曾經(jīng)研究過(guò)京麥TCP網(wǎng)關(guān)的設計,它的推送也是類(lèi)似的方式。
  3.2 積極削峰
  2015年是出租車(chē)大戰硝煙彌漫的一年。
  就神州專(zhuān)車(chē)而言,隨著(zhù)訂單的不斷增長(cháng),業(yè)績(jì)壓力與日俱增。早晚高峰時(shí)段,用戶(hù)打車(chē)時(shí),往往點(diǎn)擊下單,往往沒(méi)有反應。在系統層面,私家車(chē)API網(wǎng)關(guān)發(fā)現大范圍超時(shí),訂單服務(wù)性能急劇下降。數據庫層面的壓力就更大了,高峰期插入一條記錄需要8秒。
  整個(gè)技術(shù)團隊需要盡快提升私家車(chē)系統的性能,之前已經(jīng)按照模塊字段拆分了數據庫。但是系統的瓶頸還是很明顯的。
  我們設計了現在看起來(lái)有點(diǎn)激進(jìn)的東西:
  設計訂單緩存。如果大家對緩存的方案感興趣,我們以后再說(shuō),有很多點(diǎn)可以詳細討論;在訂單的生命周期中,訂單的修改操作首先修改緩存,然后發(fā)送消息給MetaQ,下單服務(wù)消費消息,判斷訂單信息是否正常(如是否亂序), 如果訂單數據是正確的,它將被存儲在數據庫中。
  這里有兩個(gè)細節:
  消費者消費時(shí),需要順序消費。實(shí)現方式是根據訂單號路由到不同分區。相同序號的消息每次發(fā)送到同一個(gè)分區;
  一個(gè)守護任務(wù),定時(shí)輪詢(xún)當前順序,當緩存與數據不一致時(shí),修復數據,并發(fā)出告警。
  本次優(yōu)化大大提升了訂單服務(wù)的整體性能,也為后續的訂單服務(wù)分庫分表、異構化打下了堅實(shí)的基礎。根據我們的統計數據,緩存和數據庫之間基本沒(méi)有最后的不一致。但是這個(gè)方案對緩存的高可用要求比較高,有點(diǎn)激進(jìn)。
  3.3 消息SDK包
  做過(guò)基礎架構的同學(xué)可能會(huì )有這樣的體會(huì ):“三方組件都會(huì )封裝一層”,中國架構團隊也將metaq-client封裝在一層。
  在我看來(lái),封裝一層可以減少研發(fā)人員使用第三方組件的心智投入,統一技術(shù)棧,僅此而已。
  直到一場(chǎng)意外發(fā)生,我的思維升級了。那是一個(gè)下午,整個(gè)乘車(chē)服務(wù)崩潰了很長(cháng)一段時(shí)間。技術(shù)團隊發(fā)現:“專(zhuān)車(chē)使用zookeeper進(jìn)行服務(wù)發(fā)現,zk集群的leader機器掛了,一直在選舉leader?!?br />   經(jīng)過(guò)臨時(shí)解決,我們發(fā)現MetaQ和服務(wù)發(fā)現都使用了同一套zk集群,消費者的offset提交和負載均衡都會(huì )對zk集群進(jìn)行大量的寫(xiě)操作。
  為了減少MetaQ對zk集群的影響,我們的目標是:“MetaQ使用獨立的zk集群”。
  需要部署一個(gè)新的zk集群;MetaQ的zk數據需要同步到新集群;保證切換到新集群,應用服務(wù)基本無(wú)感知。
  好奇的問(wèn)了建筑系的同學(xué)。他說(shuō)新集群已經(jīng)部署好了,但是zk數據需要同步到新集群。他在客戶(hù)端添加了雙寫(xiě)操作。也就是說(shuō):除了在原來(lái)的zk集群中寫(xiě)一份數據,我們還要在新的zk集群中寫(xiě)一份數據。幾周后,MetaQ 使用單獨的 zk 集群的任務(wù)已經(jīng)完成。
  這次經(jīng)歷給我帶來(lái)了很多感慨:“我還能這樣玩嗎?” 這也讓我想到:三方組件的封裝并沒(méi)有想象的那么簡(jiǎn)單。
  我們可以看看快手消息的SDK打包策略:
  對外只提供了最基本的API,所有訪(fǎng)問(wèn)都必須通過(guò)SDK提供的接口。簡(jiǎn)潔的 API 就像冰山一角。除了簡(jiǎn)單的外部接口外,以下所有內容都可以在不破壞兼容性的情況下進(jìn)行升級和替換;業(yè)務(wù)開(kāi)發(fā)也很簡(jiǎn)單,只要提供Topic(全局唯一)和Group即可生產(chǎn)和消費,無(wú)需提供環(huán)境、NameServer地址等。在SDK內部,會(huì )根據需要解析集群NameServer的地址到主題,然后連接到相應的集群。生產(chǎn)環(huán)境和測試環(huán)境會(huì )解析不同的地址,從而實(shí)現隔離;上圖分為3層,第二層一般,第三層對應具體的MQ實(shí)現。因此理論上可以用其他Message中間件替代,客戶(hù)端程序不需要修改;SDK集成了熱改機制,可以在不重啟Client的情況下動(dòng)態(tài)配置,比如下發(fā)路由策略(更換集群NameServer的地址,或者連接到另一個(gè)集群Go),Client的線(xiàn)程數,超時(shí)時(shí)間期等。通過(guò)Maven的強制更新機制,可以保證業(yè)務(wù)使用的SDK基本是最新的。
  3.4 重構MetaQ,形成自成一體的系統
  我有一個(gè)習慣:“我經(jīng)常找運維、DBA、架構師,了解當前系統有沒(méi)有問(wèn)題,以及他們解決問(wèn)題的思路,這樣我就有了另一個(gè)角度來(lái)審視運維公司系統?!?br />   MetaQ也有他的缺點(diǎn)。
  MetaQ的基礎通信框架是gecko,MetaQ偶爾會(huì )出現rpc無(wú)響應,應用卡頓的情況,不易定位問(wèn)題;MetaQ的運維能力較弱,只有簡(jiǎn)單的Dashboard界面,無(wú)法實(shí)現自動(dòng)主題申請、消息追蹤等功能。
  有一天,我發(fā)現測試環(huán)境的一臺消費者服務(wù)器啟動(dòng)后,一直報鏈接異常,CPU占用率高。我立即用 netstat 命令查看,發(fā)現已經(jīng)創(chuàng )建了數百個(gè)鏈接。出于好奇,打開(kāi)源碼,發(fā)現網(wǎng)絡(luò )通信框架gecko已經(jīng)被netty取代了。我們會(huì )第一時(shí)間聯(lián)系建筑系的同學(xué)。
  那時(shí)我才意識到:他們已經(jīng)開(kāi)始重構 MetaQ。我從來(lái)沒(méi)有想過(guò)重構一個(gè)開(kāi)源軟件,因為它離我太遠了?;蛘吣莻€(gè)時(shí)候覺(jué)得自己能力不行。
  后來(lái)中國自研的消息隊列成為了自己的系統,在生產(chǎn)環(huán)境中一直運行的很好。
  時(shí)至今日,我仍然很佩服中國建筑團隊。他們自己開(kāi)發(fā)了消息隊列、DataLink(數據異構中間件)、分庫分表中間件等。他們樂(lè )于創(chuàng )新,勇于做出更好的技術(shù)產(chǎn)品。
  我從他們身上學(xué)到了很多。
  
  可能是看到他們重構MetaQ的那一刻,心里就種下了一顆種子。
  4 熱愛(ài)RocketMQ4.1開(kāi)源盛宴
  2014年的時(shí)候,搜了很多關(guān)于淘寶消息隊列的資料。我知道MetaQ的版本已經(jīng)升級到MetaQ 3.0,但是開(kāi)源版本還沒(méi)有發(fā)布。
  大約在秋天,我加入了 RocketMQ 技術(shù)組。石佳(RocketMQ創(chuàng )始人)在群里說(shuō):“最近開(kāi)源要發(fā)布了,發(fā)布了大家抓緊fork一下?!?他這句話(huà)發(fā)到群里后,群里炸開(kāi)了鍋。心里更加高興了,期待早日看到阿里自己的內部消息中間件。
  最后,RocketMQ終于開(kāi)源了。我迫不及待地想看他一眼。
  因為想學(xué)網(wǎng)絡(luò )編程,而RocketMQ的通訊模塊remoting底層也是Netty寫(xiě)的。因此,RocketMQ的通信層是我學(xué)習的起點(diǎn)。
  我模仿了RocketMQ的remoting,寫(xiě)了一個(gè)玩具rpc,大大提升了自信心。巧合的是,藝龍舉辦了科技創(chuàng )新活動(dòng)。我想了想,不如試試用Netty重寫(xiě)Cobar的通信模塊。于是參考Cobar的源碼,花了兩周的時(shí)間寫(xiě)了一個(gè)netty版的proxy,其實(shí)很粗糙,很多功能還不完善。后來(lái)這次活動(dòng)給了我一個(gè)鼓勵獎,現在想想都覺(jué)得有趣。
  因為在UCAR中使用了MetaQ,所以我在學(xué)習RocketMQ方面也比較得心應手。為了真正理解源碼,我經(jīng)常參考RocketMQ的源碼,寫(xiě)一些輪子來(lái)驗證自己的學(xué)習效果。
  雖然自己也做過(guò)一些練習,但是從來(lái)沒(méi)有在商業(yè)環(huán)境中使用過(guò)。2018年是我真正使用RocketMQ的一年,也是收獲的一年。
  短信服務(wù)
  短信服務(wù)應用廣泛,比如用戶(hù)注冊登錄驗證碼、營(yíng)銷(xiāo)短信、下單成功短信通知等。當初設計短信服務(wù)的時(shí)候,想了解一下業(yè)界是怎么做的。于是目標就鎖定在了騰訊云的短信服務(wù)上。騰訊云的短信服務(wù)具有以下特點(diǎn):
  所以,我參考了這個(gè)設計思路。
  模仿騰訊云SDK設計,提供簡(jiǎn)單易用的短信接口;設計短信服務(wù)API,接收短信請求,發(fā)送短信信息到消息隊列;worker服務(wù)消費消息,根據負載均衡算法Interface調用不同通道提供者的SMS消息;Dashboard可以查看短信發(fā)送記錄,配置渠道商信息。
  短信服務(wù)是我第一次真正意義上在生產(chǎn)環(huán)境中使用RocketMQ。當短信一條一條發(fā)出去的時(shí)候,還是挺有成就感的。
  MQ控制臺
  用過(guò)RocketMQ的朋友一定對上圖的控制臺不陌生。當時(shí)團隊有多個(gè) RocketMQ 集群,每個(gè)集群需要部署一個(gè)單獨的控制臺。所以我想:我能不能稍微修改一下控制臺來(lái)支持多集群。
  所以,我卷起袖子開(kāi)始工作。在開(kāi)源版本的基礎上修改了可以支持多組集群的版本,用了大概20天。做完之后,雖然能滿(mǎn)足我最初的想法,但是很粗糙。而且,搜狐還開(kāi)源了自己的MQCloud??戳怂麄兊脑O計,感覺(jué)離一個(gè)消息管理平臺還差得很遠。
  后來(lái)又看了兩篇《網(wǎng)易云音樂(lè )的消息隊列改造之路》和《今日頭條在消息服務(wù)平臺和容災體系建設中的實(shí)踐與思考》。我越癢,我就越想做。它是一個(gè)真正的消息管理平臺??上б恢睕](méi)有場(chǎng)景和機會(huì )。
  最近看了單車(chē)架構專(zhuān)家梁勇的一篇《Hello在分布式消息治理和微服務(wù)治理方面的實(shí)踐》,推薦大家閱讀。
  一個(gè)窗口,啟動(dòng)自研組件
  后來(lái)嘗試用RocketMQ更進(jìn)一步。
  這些做完之后,我們就自己開(kāi)發(fā)了注冊中心,配置中心,任務(wù)調度系統。在設計這些系統的時(shí)候,我從RocketMQ的源碼中汲取了很多營(yíng)養。雖然看起來(lái)設計上還有很多不完善的地方,代碼質(zhì)量也有待提高,但是在做完這些系統之后,我的自信心得到了很大的提升。
  RocketMQ為我打開(kāi)了一扇窗,讓我看到了更廣闊的Java世界。對我來(lái)說(shuō),這是開(kāi)源的盛宴。
  4.2 Kafka:大數據生態(tài)不可或缺的一部分
  Kafka是一個(gè)分布式消息流處理中間件,具有高吞吐、持久、水平可擴展、支持流式數據處理等特點(diǎn)。、在線(xiàn)/離線(xiàn)系統分析、實(shí)時(shí)監控等領(lǐng)域有著(zhù)廣泛的應用。
  日志同步
  在大型業(yè)務(wù)系統設計中,為了快速定位問(wèn)題,全鏈路跟蹤日志,及時(shí)監控故障,通常需要對各個(gè)系統應用的日志進(jìn)行集中分析處理。
  Kafka設計的初衷是為了應對大量的日志傳輸場(chǎng)景。應用程序將日志消息以可靠和異步的方式同步到消息服務(wù),然后使用其他組件實(shí)時(shí)或離線(xiàn)分析日志。它還可以用于采集
關(guān)鍵日志信息以進(jìn)行應用程序監控。
  日志同步主要有三個(gè)關(guān)鍵部分:日志采集客戶(hù)端、Kafka消息隊列、后端日志處理應用。
  日志采集客戶(hù)端負責用戶(hù)各種應用服務(wù)的日志數據采集,將日志以消息的形式“批量”、“異步”發(fā)送給Kafka客戶(hù)端。Kafka客戶(hù)端批量提交和壓縮消息,對應用服務(wù)的性能影響很小。Kafka 將日志存儲在消息文件中以提供持久性。一個(gè)日志處理應用程序,如Logstash,在Kafka中訂閱和消費日志消息,最后提供文件搜索服務(wù)來(lái)檢索日志,或者Kafka將消息傳遞給其他大數據應用程序,如Hadoop進(jìn)行系統存儲和分析。
  日志同步示意圖:
  流計算處理
  在股市走勢分析、氣象數據測控、網(wǎng)站用戶(hù)行為分析等諸多領(lǐng)域,由于數據生成速度快、實(shí)時(shí)性強、體量大,很難統一采集這些數據并進(jìn)行分析。加工前將它們存放在倉庫中。因此,傳統的數據處理架構無(wú)法滿(mǎn)足需求。Kafka、Storm、Samza、Spark等流計算引擎的出現,就是為了更好的解決這類(lèi)數據處理過(guò)程中遇到的問(wèn)題。流計算模型可以在數據流動(dòng)過(guò)程中實(shí)現對數據的實(shí)時(shí)捕獲和處理。處理,并根據業(yè)務(wù)需求進(jìn)行計算分析,最后將結果保存或分發(fā)到需要的組件中。
  數據傳輸中心
  近10年來(lái),KV存儲(HBase)、搜索(ElasticSearch)、流處理(Storm、Spark、Samza)、時(shí)序數據庫(OpenTSDB)等專(zhuān)用系統應運而生。這些系統誕生時(shí)心中只有一個(gè)目標,因為它們的簡(jiǎn)單性使得在商品硬件上構建分布式系統變得更加容易和更具成本效益。通常,需要將相同的數據集注入多個(gè)專(zhuān)用系統。例如,當應用日志用于離線(xiàn)日志分析時(shí),搜索單獨的日志記錄也是必不可少的,建立獨立的工作流來(lái)采集
每一類(lèi)數據,然后將它們導入到自己的專(zhuān)用系統中顯然是不切實(shí)際的。使用消息隊列 Kafka 版本充當數據傳輸中心,
  下圖是美團MySQL數據實(shí)時(shí)同步到Hive的架構圖,也是一個(gè)非常經(jīng)典的案例。
  4.3 如何選擇技術(shù)
  2018年去哪兒QMQ開(kāi)源,2019年騰訊TubeMQ開(kāi)源,2020年P(guān)ulsar如火如荼。
  消息隊列的生態(tài)如此繁榮,那么我們該如何選擇模型呢?
  我認為我們不必局限于消息隊列,我們??可以擴展它。只是談?wù)勎业目捶ā?br />   數據庫正在專(zhuān)業(yè)化——“一刀切”的方法不再適用 ----- MongoDB 設計哲學(xué)
  第一點(diǎn):先有場(chǎng)景,再有適應這個(gè)場(chǎng)景的技術(shù)。什么樣的場(chǎng)景選擇什么樣的技術(shù)。
  第二點(diǎn):現實(shí)往往很復雜。當我們真正進(jìn)行技術(shù)選型并需要實(shí)施時(shí),技術(shù)儲備和成本是我們需要重點(diǎn)關(guān)注的兩個(gè)因素。
  技術(shù)儲備
  成本
  最后一點(diǎn)是人的因素,尤其是管理者的因素。每一次重大的技術(shù)選型,都考驗著(zhù)技術(shù)管理者的眼光、布局和管理智慧。
  5 寫(xiě)到最后
  我覺(jué)得這個(gè)世界上沒(méi)有不合理的事情。真的,沒(méi)有多多的積累,多多的思考,是做不成事情的。. . 總之,體驗了這部電影,感覺(jué)自己要學(xué)習的東西太多了。這個(gè)世界上有能力的人太多了。你認為的極限,如果沒(méi)有做好,只是別人的起點(diǎn)。所以唯有不斷進(jìn)取,才能不丟人。好吧,人們不必上學(xué),但他們必須學(xué)習,真的。------韓寒《未來(lái)永無(wú)止境》演講
  我學(xué)習消息隊列的過(guò)程就是一個(gè)不斷思考和實(shí)踐的過(guò)程。雖然我覺(jué)得極限不好,只是別人的起點(diǎn),但至少現在,當我面對這個(gè)技術(shù)的時(shí)候,我的內心充滿(mǎn)了好奇。心亦無(wú)懼。
  我始終相信:每天學(xué)一點(diǎn),就是比昨天好一點(diǎn)。
  微信8.0讓好友達到10000,好友可以加我plus size,先到先得,過(guò)后就沒(méi)了
  掃描下方二維碼加我微信,2022,抱在一起取暖,一起帥。
  案例研究:強化學(xué)習如何做數據分析?新加坡國立等TKDE 2022綜述論文
  【新致遠簡(jiǎn)介】數據分析是現在必備的技能之一。傳統上,靜態(tài)算法或規則多用于數據分析,但在現實(shí)場(chǎng)景中,往往面臨復雜的交互環(huán)境,如何學(xué)習更好的策略是一個(gè)非?,F實(shí)的問(wèn)題。幸運的是,強化學(xué)習可以作為解決此類(lèi)問(wèn)題的有效方法。新加坡南洋理工大學(xué)的學(xué)者在 TKDE 發(fā)表了一篇關(guān)于“深度強化學(xué)習數據處理和分析”的綜述論文,全面回顧了近期的工作,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  數據處理和分析是基礎和普遍的。算法在數據處理和分析中起著(zhù)至關(guān)重要的作用,許多算法設計結合了人類(lèi)知識和經(jīng)驗的啟發(fā)式和一般規則以提高其有效性。
  近年來(lái),強化學(xué)習,尤其是深度強化學(xué)習(DRL)在許多領(lǐng)域得到了越來(lái)越多的探索和利用,因為與靜態(tài)設計的算法相比,它可以在復雜的交互環(huán)境中學(xué)習到更好的策略。在這種趨勢的推動(dòng)下,我們對最近的工作進(jìn)行了全面回顧,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  首先,我們介紹 DRL 中的關(guān)鍵概念、理論和方法。接下來(lái),我們將討論DRL在數據庫系統上的部署,以方便數據組織、調度、調優(yōu)和索引等各個(gè)方面的數據處理和分析。
  然后,我們研究 DRL 在數據處理和分析中的應用,從數據準備和自然語(yǔ)言處理到醫療保健、金融科技等。
  最后,我們討論了在數據處理和分析中使用 DRL 的重要挑戰和未來(lái)的研究方向。
  論文鏈接:
  在大數據時(shí)代,數據處理和分析是基本的、無(wú)處不在的,對于許多正在數字化旅程中改善和轉變其業(yè)務(wù)和運營(yíng)的組織來(lái)說(shuō)至關(guān)重要。數據分析通常需要其他關(guān)鍵操作,例如數據采集、數據清理、數據集成、建模等,然后才能提取見(jiàn)解。
  從醫療保健到零售,大數據可以在許多行業(yè)釋放巨大的價(jià)值創(chuàng )造。然而,數據的復雜性(例如,大容量、高速度和高多樣性)對數據分析提出了許多挑戰,使其難以獲得有意義的見(jiàn)解。為了迎接這一挑戰,促進(jìn)高效、有效的數據處理和分析,研究人員和從業(yè)者設計了大量的算法和技術(shù),也開(kāi)發(fā)了大量的學(xué)習系統,如Spark MLlib和Rafiki。
  為了支持快速的數據處理和準確的數據分析,大量算法依賴(lài)于基于人類(lèi)知識和經(jīng)驗制定的規則。例如,“最短作業(yè)優(yōu)先”是一種調度算法,選擇執行時(shí)間最短的作業(yè)進(jìn)行下一次執行。但與沒(méi)有充分利用工作負載特性的基于學(xué)習的調度算法相比,其性能較差。另一個(gè)例子是計算機網(wǎng)絡(luò )中的數據包分類(lèi),它將數據包與一組規則中的一個(gè)相匹配。一種解決方案是使用手動(dòng)調整的分類(lèi)啟發(fā)式方法來(lái)構建決策樹(shù)。具體來(lái)說(shuō),啟發(fā)式算法是為一組特定的規則而設計的,因此可能不適用于具有不同特征的其他工作負載。
  
  我們觀(guān)察到現有算法的三個(gè)局限性:
  首先,該算法是次優(yōu)的。規則可能會(huì )忽略或未充分利用數據分布等有用信息。其次,該算法缺乏自適應能力。為特定工作負載設計的算法在不同的工作負載中表現不佳。第三,算法設計是一個(gè)耗時(shí)的過(guò)程。開(kāi)發(fā)人員必須花費大量時(shí)間嘗試許多規則才能找到一個(gè)憑經(jīng)驗行得通的規則。
  基于學(xué)習的算法也用于數據處理和分析。常用的學(xué)習方法有兩種:監督學(xué)習和強化學(xué)習。他們通過(guò)直接優(yōu)化性能目標來(lái)實(shí)現更好的性能。監督學(xué)習通常需要一組豐富的高質(zhì)量帶注釋的訓練數據,而獲取這些數據既困難又具有挑戰性。例如,配置調整對于優(yōu)化數據庫管理系統 (DBMS) 的整體性能非常重要。在離散和連續空間中可能有數百個(gè)相互關(guān)聯(lián)的調諧旋鈕。此外,不同的數據庫實(shí)例、查詢(xún)工作負載和硬件特性使得數據采集
不可用,尤其是在云環(huán)境中。
  強化學(xué)習比監督學(xué)習具有更好的性能,因為它采用試錯法搜索并且需要更少的訓練樣本來(lái)為云數據庫找到良好的配置。
  另一個(gè)具體的例子是查詢(xún)處理中的查詢(xún)優(yōu)化。數據庫系統優(yōu)化器的任務(wù)是為查詢(xún)找到最佳的執行計劃,以降低查詢(xún)成本。傳統的優(yōu)化器通常會(huì )枚舉許多候選計劃并使用成本模型來(lái)找到成本最低的計劃。優(yōu)化過(guò)程可能緩慢且不準確。
  在不依賴(lài)不準確的成本模型的情況下,深度強化學(xué)習 (DRL) 方法通過(guò)與數據庫交互(例如,更改表連接順序)來(lái)改進(jìn)執行計劃。
  當查詢(xún)被發(fā)送到代理(即 DRL 優(yōu)化器)時(shí),代理通過(guò)表征基本信息(例如訪(fǎng)問(wèn)的關(guān)系和表)來(lái)生成狀態(tài)向量。代理將狀態(tài)作為輸入,并使用神經(jīng)網(wǎng)絡(luò )生成一個(gè)動(dòng)作集的概率分布,其中可以收錄
所有可能的連接操作作為潛在動(dòng)作。
  每個(gè)操作代表一對表的部分連接計劃,一旦執行操作,狀態(tài)就會(huì )更新。在采取可能的行動(dòng)之后,生成一個(gè)完整的計劃,然后由 DBMS 執行以獲得獎勵。
  在這個(gè)查詢(xún)優(yōu)化問(wèn)題中,可以根據實(shí)際延遲計算獎勵。在使用獎勵信號進(jìn)行訓練期間,代理可以改進(jìn)其策略,從而產(chǎn)生更好的連接順序(即更少的延遲)和更高的獎勵。
  用于查詢(xún)優(yōu)化的 DRL 工作流
  強化學(xué)習 (RL) 側重于學(xué)習在環(huán)境中智能地行動(dòng)。RL 算法通過(guò)基于探索和開(kāi)發(fā)的環(huán)境反饋來(lái)改進(jìn)自身。在過(guò)去的幾十年里,強化學(xué)習在理論和技術(shù)上都取得了長(cháng)足的進(jìn)步。
  
  值得注意的是,DRL 結合了深度學(xué)習 (DL) 技術(shù)來(lái)處理復雜的非結構化數據,旨在從歷史數據中學(xué)習和自我探索,以解決眾所周知的困難和大規模問(wèn)題(例如 AlphaGo)。
  近年來(lái),來(lái)自不同社區的研究人員提出了 DRL 解決方案,以解決數據處理和分析中的問(wèn)題。我們從系統和應用程序的角度使用 DRL 對現有作品進(jìn)行分類(lèi)。
  從系統的角度來(lái)看,我們專(zhuān)注于基礎研究主題,從一般的(例如調度)到特定于系統的(例如數據庫查詢(xún)優(yōu)化)。我們還應該強調它是如何被表述為馬爾可夫決策過(guò)程的,并討論與傳統方法相比如何更有效地解決 DRL 問(wèn)題。由于實(shí)際系統中的工作負載執行和數據獲取時(shí)間比較長(cháng),因此采用采樣、模擬等技術(shù)來(lái)提高DRL訓練的效率。
  從應用的角度,我們將涵蓋數據處理和數據分析中的各種關(guān)鍵應用,以全面了解 DRL 的可用性和適應性。許多領(lǐng)域通過(guò)采用 DRL 進(jìn)行轉換,這有助于學(xué)習有關(guān)應用程序的特定領(lǐng)域知識。
  在這篇綜述中,我們旨在對使用深度強化學(xué)習解決數據系統、數據處理和分析問(wèn)題的最新進(jìn)展進(jìn)行廣泛而系統的綜述。
  強化學(xué)習技術(shù)分類(lèi)
  參考:
  [1] J. Manyika、M. Chui、B. Brown、J. Bughin、R. Dobbs、C. Roxburgh、A. Hung Byers 等,大數據:創(chuàng )新、競爭和生產(chǎn)力的下一個(gè)前沿。麥肯錫全球研究院,2011 年。
  [2] X. Meng、J. Bradley、B. Yavuz、E. Sparks、S. Venkataraman、D. Liu、J. Freeman、D. Tsai、M. Amde、S. Owen 等人,“Mllib:機器在 apache spark 中學(xué)習,”機器學(xué)習研究雜志,卷。17,沒(méi)有。1,第 1235–1241 頁(yè),2016 年。
  [3] W.Wang、J. Gao、M. Zhang、S.Wang、G. Chen、TK Ng、BC Ooi、J. Shao 和 M. Reyad,“Rafiki:機器學(xué)習作為分析服務(wù)系統”, VLDB,卷。12,沒(méi)有。2,第 128–140 頁(yè),2018 年。 查看全部

  解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!
  說(shuō)到消息隊列,心里還是有些波瀾。
  消息隊列、緩存和分庫分表是高并發(fā)解決方案的三把劍,而消息隊列是我最喜歡的,也是我思考最多的技術(shù)。
  下面分享一下我在消息隊列這四個(gè)階段的故事,也是對自己技術(shù)成長(cháng)經(jīng)歷的回顧。
  1 認識ActiveMQ1.1異步&解耦
  2011年初,我在一家互聯(lián)網(wǎng)彩票公司做研發(fā)。
  我負責用戶(hù)中心系統,提供用戶(hù)注冊、查詢(xún)、修改等基本功能。用戶(hù)注冊成功后,需要給用戶(hù)發(fā)送一條短信。
  因為本來(lái)就是面向過(guò)程的編程,所以我把新建用戶(hù)模塊和短信發(fā)送模塊組合在一起。
  一開(kāi)始還好,但是慢慢的問(wèn)題就出現了。
  第一個(gè)問(wèn)題,我可以采取線(xiàn)程池的方式來(lái)做,主要是異步的。但是第二個(gè)問(wèn)題讓我很困惑。
  于是向技術(shù)經(jīng)理請教,他讓我引入消息隊列來(lái)解決這個(gè)問(wèn)題。
  這時(shí)候我才明白,消息隊列的核心功能就是異步和解耦。
  1.2 調度中心
  彩票系統的業(yè)務(wù)比較復雜。在彩票訂單的生命周期中,有創(chuàng )建、子訂單拆分、出票、中獎?dòng)嬎愕榷鄠€(gè)環(huán)節。每個(gè)環(huán)節需要不同的業(yè)務(wù)處理,每個(gè)系統都有自己獨立的表,業(yè)務(wù)功能相對獨立。如果每個(gè)應用程序都修改訂單主表中的信息,那將是相當混亂的。
  該公司的建筑師設計了調度中心的服務(wù)。調度中心的職責是維護訂單核心狀態(tài)機、訂單獎勵流程、彩票核心數據的生成。
  調度中心通過(guò)消息隊列、票務(wù)網(wǎng)關(guān)、獎品計算服務(wù)等系統進(jìn)行信息傳遞和交換。
  在我當時(shí)幼小的眼里,這種設計就像是水滴對戰人類(lèi)艦隊,降維打擊。
  隨著(zhù)對業(yè)務(wù)理解的不斷加深,我隱約感覺(jué)到:“好的架構是簡(jiǎn)潔的,應該是易于維護的”。
  當彩票業(yè)務(wù)日均交易量幾千萬(wàn)的時(shí)候,調度中心只有兩個(gè)研發(fā)和維護人員。調度中心源碼中的業(yè)務(wù)邏輯、日志、代碼規范都很優(yōu)秀。
  在以后的編程生活中,我也會(huì )下意識地模仿調度中心的編碼方式,“別?;?,代碼是給人看的”。
  1.3 重啟大法
  隨著(zhù)彩票業(yè)務(wù)的爆發(fā)式增長(cháng),日新聞量從30萬(wàn)條猛增到150萬(wàn)到200萬(wàn)條左右,一切似乎都趨于平穩。
  某一天,雙色球投注結束,調度中心無(wú)法消費消息隊列中的數據。消息總線(xiàn)處于發(fā)送狀態(tài),沒(méi)有接收狀態(tài)。整個(gè)技術(shù)團隊都處于極度焦急的狀態(tài),“如果不能出票,那將是幾百萬(wàn)的損失,如果用戶(hù)中了兩個(gè)雙色球?那就是幾千萬(wàn)了?!?每個(gè)人都急得像熱鍋上的螞蟻。
  這也是整個(gè)技術(shù)團隊第一次遇到消費積累,大家都沒(méi)有經(jīng)驗。
  首先想到的是多部署幾個(gè)調度中心服務(wù)。部署完成后,調度中心消費了上千條消息還是掛了。這時(shí)架構師只能采用重啟策略。你沒(méi)看錯,就是重啟大法。說(shuō)起來(lái)真的很慚愧,但當時(shí)真的是只能這樣了。
  調度中心重啟后,花了1萬(wàn)到2萬(wàn)元又掛了。只能重新開(kāi)始。來(lái)回20多次,像擠牙膏一樣。而隨著(zhù)開(kāi)票期限的臨近,這種精神上的緊張和恐懼也變得更加強烈。最后,經(jīng)過(guò)1個(gè)小時(shí)的手動(dòng)重啟,消息終于被消費了。
  當時(shí)剛好在看畢軒的《分布式Java應用基礎與實(shí)踐》。想是不是線(xiàn)程被阻塞了,于是用Jstack命令查看堆棧狀態(tài)。果然不出所料,線(xiàn)程阻塞在提交數據的方法上。
  我們第一時(shí)間與DBA溝通,發(fā)現oracle數據庫執行了很多大事務(wù),每個(gè)大事務(wù)執行需要30多分鐘,導致調度中心的調度票線(xiàn)程阻塞。
  技術(shù)部門(mén)后來(lái)采用了以下方案來(lái)避免堆積問(wèn)題:
  生產(chǎn)者發(fā)送消息時(shí),將超大消息拆分成多批消息,降低調度中心執行大事務(wù)的概率;數據源配置參數,如果事務(wù)執行超過(guò)一定時(shí)間,則自動(dòng)拋出異常并回滾。1.4 回顧
  Spring封裝的ActiveMQ API非常簡(jiǎn)單易用,用起來(lái)真的很舒服。
  受限于當時(shí)彩票技術(shù)團隊的技術(shù)水平和眼界,我們在使用ActiveMQ的過(guò)程中遇到了一些問(wèn)題。
  高吞吐量,當消息累積到一定數量時(shí)很容易hold
  技術(shù)團隊發(fā)現,在吞吐量特別高的場(chǎng)景下,如果消息的堆積越大,ActiveMQ Hanging的幾率就越低。
  票務(wù)網(wǎng)關(guān)消息量很大,有些消息不需要立即消費,但是為了避免消息隊列Hang的問(wèn)題,票務(wù)網(wǎng)關(guān)在消費數據時(shí),先將消息持久化到本地磁盤(pán),生成本地 XML 文件,然后異步和周期性地執行消息。這樣,我們大大提高了票務(wù)網(wǎng)關(guān)的消費速度,基本消除了票務(wù)網(wǎng)關(guān)排隊的堆積。
  但是這個(gè)方法感覺(jué)很奇怪。消費新聞時(shí),必須在本地存儲另一份數據。新聞存儲在本地。如果磁盤(pán)出現故障,也有丟失消息的風(fēng)險。
  高可用機制有待完善
  我們采用master/slave部署方式,一主一從,服務(wù)器配置為4核8G。
  這種部署方式可以同時(shí)運行兩個(gè)ActiveMQ,并且只允許一個(gè)slave連接Master,也就是說(shuō)一個(gè)集群只能有2個(gè)MQ,兩個(gè)服務(wù)之間有數據備份通道. 單向數據備份。該方案在實(shí)際生產(chǎn)線(xiàn)上使用不便,因為當Master掛掉后,Slave無(wú)法自動(dòng)接收Client發(fā)送的邀請,需要人工干預,必須先停止Slave再重啟恢復負載集群。
  還有一些非常奇怪的消息丟失事件。producer發(fā)送消息成功,但是master控制臺查詢(xún)不到,但是slave控制臺確實(shí)可以查詢(xún)到消息。
  但是消費者沒(méi)有辦法消費slave上的消息,只能手動(dòng)處理。
  2 進(jìn)階Redis&RabbitMQ
  2014年在藝龍網(wǎng)從事紅包系統和優(yōu)惠券系統的優(yōu)化工作。
  2.1 Redis可以做消息隊列嗎?
  酒店優(yōu)惠券計算服務(wù)采用第一代流式計算框架Storm。Storm這里就不詳細介紹了,可以參考下面的邏輯圖:
  這里我們Storm集群的水源(數據源)是redis集群,使用list數據結構實(shí)現消息隊列的push/pop功能。
  流式計算的整體流程:
  酒店信息服務(wù)向Redis集群A/B發(fā)送酒店信息;Storm的spout組件從Redis集群A/B獲取數據,獲取成功后發(fā)送tuple消息給Bolt組件;數據被清理;最后,Storm將處理后的數據發(fā)送到Redis集群C;存儲服務(wù)從Redis集群C獲取數據,存儲到數據庫中;搜索團隊掃描數據庫表并生成索引。
  風(fēng)暴的描述
  這個(gè)流計算服務(wù)每天處理數千萬(wàn)條數據,處理起來(lái)比較流暢。但該計劃在團隊內部仍有不同的聲音:
  我認為使用Redis作為消息隊列應該滿(mǎn)足以下條件:
  容忍小概率消息丟失,通過(guò)定時(shí)任務(wù)/手動(dòng)觸發(fā)實(shí)現最終一致的業(yè)務(wù)場(chǎng)景;消息堆積概率低,有相關(guān)告警監控;消費者的消費模式應該足夠簡(jiǎn)單。2.2 RabbitMQ 是管道而不是池
  
  RabbitMQ 是用 erlang 語(yǔ)言編寫(xiě)的。RabbitMQ 滿(mǎn)足了我的兩個(gè)需求:
  高可用性機制。藝龍內部采用的是鏡像高可用模式,這種模式在藝龍內部已經(jīng)使用了很長(cháng)時(shí)間,其穩定性也得到了一定程度的驗證。在我負責的紅包系統中,RabbitMQ的日吞吐量在百萬(wàn)條消息左右,消息的發(fā)送和消費都相當完善。
  優(yōu)惠券服務(wù)最初使用的是SqlServer。由于數據量大,技術(shù)團隊決定采用分庫分表的策略,使用公司自研的分布式數據庫DDA。
  因為是第一次使用分布式數據庫,為了測試DDA的穩定性,我們模擬發(fā)送1000萬(wàn)條消息到RabbitMQ,然后優(yōu)惠券重構服務(wù)消費消息后,根據hash到不同的mysql庫用戶(hù)號碼。
  RabbitMQ集群模式是鏡像高可用,3臺服務(wù)器,每臺配置4核8G。
  我們以每小時(shí) 300 萬(wàn)條消息的速度發(fā)送消息。第一個(gè)小時(shí)生產(chǎn)者和消費者的表現都很好,但是由于消費者的速度跟不上生產(chǎn)者的速度,消息隊列出現了積壓。第三個(gè)小時(shí),消息隊列已經(jīng)積累了超過(guò)500萬(wàn)條消息,生產(chǎn)者發(fā)送消息的速度從最初的2毫秒提升到500毫秒左右。RabbitMQ的控制臺當場(chǎng)有血濺,紅標告警。
  這是一個(gè)無(wú)意的測試。從測試情況來(lái)看,RabbitMQ是優(yōu)秀的,但是RabbitMQ對消息堆積的支持不是很好。當大量消息積壓時(shí),RabbitMQ的性能會(huì )急劇下降。
  有朋友跟我說(shuō):“RabbitMQ明明是個(gè)管道,你非要把他當成池子嗎?”
  隨著(zhù)整個(gè)互聯(lián)網(wǎng)數據量的快速增長(cháng),在很多業(yè)務(wù)場(chǎng)景中允許適當的積累,只要消費者消費順暢,整個(gè)業(yè)務(wù)波動(dòng)不大。
  我心里越來(lái)越相信:消息隊列既可以作為管道,也可以作為池。
  3 升華 MetaQ
  Metamorphosis的由來(lái)是我從學(xué)習linkedin的開(kāi)源MQ開(kāi)始的——現在轉入apache的kafka。這是一個(gè)設計獨特的MQ系統。它使用拉機制而不是一般的 MQ 推模型。它大量使用Zookeeper做服務(wù)發(fā)現和偏移量存儲。我很欣賞也很認同它的設計理念。我強烈建議您閱讀它的設計文檔??偟膩?lái)說(shuō),蛻變的設計是完全符合它的。---莊曉丹,MetaQ作者
  3.1 驚人的消費模式
  2015年主要從事中國專(zhuān)用車(chē)訂單的研發(fā)工作。
  MetaQ滿(mǎn)足了我對消息隊列的幻想:“分布式、高吞吐、高積累”。
  MetaQ支持兩種消費模型:集群消費和廣播消費,因為之前使用的消費模型都是使用隊列模型。剛開(kāi)始接觸這種發(fā)布-訂閱模式的時(shí)候,我還是很驚嘆的。
  集群消費
  訂單創(chuàng )建成功后,發(fā)送消息給MetaQ。此消息可由調度服務(wù)或 BI 服務(wù)使用。
  廣播消費
  當調度服務(wù)將訂單分配給司機時(shí),它會(huì )向司機發(fā)送一條推送消息。推送是使用廣播消費的方式實(shí)現的。
  一般過(guò)程是:
  驅動(dòng)端的推送服務(wù)是一個(gè)TCP服務(wù)。啟動(dòng)后,以廣播方式消費MetaQ的PushTopic;驅動(dòng)端會(huì )定時(shí)向推送服務(wù)發(fā)送TCP請求。認證成功后,推送服務(wù)會(huì )保存司機號和通道的引用;單服務(wù)向MetaQ發(fā)送推送消息;推送服務(wù)的每臺機器都會(huì )收到消息,然后判斷內存中是否有驅動(dòng)程序的通道引用,如果有則推送消息。
  這是一個(gè)非常經(jīng)典的廣播消費案例。我曾經(jīng)研究過(guò)京麥TCP網(wǎng)關(guān)的設計,它的推送也是類(lèi)似的方式。
  3.2 積極削峰
  2015年是出租車(chē)大戰硝煙彌漫的一年。
  就神州專(zhuān)車(chē)而言,隨著(zhù)訂單的不斷增長(cháng),業(yè)績(jì)壓力與日俱增。早晚高峰時(shí)段,用戶(hù)打車(chē)時(shí),往往點(diǎn)擊下單,往往沒(méi)有反應。在系統層面,私家車(chē)API網(wǎng)關(guān)發(fā)現大范圍超時(shí),訂單服務(wù)性能急劇下降。數據庫層面的壓力就更大了,高峰期插入一條記錄需要8秒。
  整個(gè)技術(shù)團隊需要盡快提升私家車(chē)系統的性能,之前已經(jīng)按照模塊字段拆分了數據庫。但是系統的瓶頸還是很明顯的。
  我們設計了現在看起來(lái)有點(diǎn)激進(jìn)的東西:
  設計訂單緩存。如果大家對緩存的方案感興趣,我們以后再說(shuō),有很多點(diǎn)可以詳細討論;在訂單的生命周期中,訂單的修改操作首先修改緩存,然后發(fā)送消息給MetaQ,下單服務(wù)消費消息,判斷訂單信息是否正常(如是否亂序), 如果訂單數據是正確的,它將被存儲在數據庫中。
  這里有兩個(gè)細節:
  消費者消費時(shí),需要順序消費。實(shí)現方式是根據訂單號路由到不同分區。相同序號的消息每次發(fā)送到同一個(gè)分區;
  一個(gè)守護任務(wù),定時(shí)輪詢(xún)當前順序,當緩存與數據不一致時(shí),修復數據,并發(fā)出告警。
  本次優(yōu)化大大提升了訂單服務(wù)的整體性能,也為后續的訂單服務(wù)分庫分表、異構化打下了堅實(shí)的基礎。根據我們的統計數據,緩存和數據庫之間基本沒(méi)有最后的不一致。但是這個(gè)方案對緩存的高可用要求比較高,有點(diǎn)激進(jìn)。
  3.3 消息SDK包
  做過(guò)基礎架構的同學(xué)可能會(huì )有這樣的體會(huì ):“三方組件都會(huì )封裝一層”,中國架構團隊也將metaq-client封裝在一層。
  在我看來(lái),封裝一層可以減少研發(fā)人員使用第三方組件的心智投入,統一技術(shù)棧,僅此而已。
  直到一場(chǎng)意外發(fā)生,我的思維升級了。那是一個(gè)下午,整個(gè)乘車(chē)服務(wù)崩潰了很長(cháng)一段時(shí)間。技術(shù)團隊發(fā)現:“專(zhuān)車(chē)使用zookeeper進(jìn)行服務(wù)發(fā)現,zk集群的leader機器掛了,一直在選舉leader?!?br />   經(jīng)過(guò)臨時(shí)解決,我們發(fā)現MetaQ和服務(wù)發(fā)現都使用了同一套zk集群,消費者的offset提交和負載均衡都會(huì )對zk集群進(jìn)行大量的寫(xiě)操作。
  為了減少MetaQ對zk集群的影響,我們的目標是:“MetaQ使用獨立的zk集群”。
  需要部署一個(gè)新的zk集群;MetaQ的zk數據需要同步到新集群;保證切換到新集群,應用服務(wù)基本無(wú)感知。
  好奇的問(wèn)了建筑系的同學(xué)。他說(shuō)新集群已經(jīng)部署好了,但是zk數據需要同步到新集群。他在客戶(hù)端添加了雙寫(xiě)操作。也就是說(shuō):除了在原來(lái)的zk集群中寫(xiě)一份數據,我們還要在新的zk集群中寫(xiě)一份數據。幾周后,MetaQ 使用單獨的 zk 集群的任務(wù)已經(jīng)完成。
  這次經(jīng)歷給我帶來(lái)了很多感慨:“我還能這樣玩嗎?” 這也讓我想到:三方組件的封裝并沒(méi)有想象的那么簡(jiǎn)單。
  我們可以看看快手消息的SDK打包策略:
  對外只提供了最基本的API,所有訪(fǎng)問(wèn)都必須通過(guò)SDK提供的接口。簡(jiǎn)潔的 API 就像冰山一角。除了簡(jiǎn)單的外部接口外,以下所有內容都可以在不破壞兼容性的情況下進(jìn)行升級和替換;業(yè)務(wù)開(kāi)發(fā)也很簡(jiǎn)單,只要提供Topic(全局唯一)和Group即可生產(chǎn)和消費,無(wú)需提供環(huán)境、NameServer地址等。在SDK內部,會(huì )根據需要解析集群NameServer的地址到主題,然后連接到相應的集群。生產(chǎn)環(huán)境和測試環(huán)境會(huì )解析不同的地址,從而實(shí)現隔離;上圖分為3層,第二層一般,第三層對應具體的MQ實(shí)現。因此理論上可以用其他Message中間件替代,客戶(hù)端程序不需要修改;SDK集成了熱改機制,可以在不重啟Client的情況下動(dòng)態(tài)配置,比如下發(fā)路由策略(更換集群NameServer的地址,或者連接到另一個(gè)集群Go),Client的線(xiàn)程數,超時(shí)時(shí)間期等。通過(guò)Maven的強制更新機制,可以保證業(yè)務(wù)使用的SDK基本是最新的。
  3.4 重構MetaQ,形成自成一體的系統
  我有一個(gè)習慣:“我經(jīng)常找運維、DBA、架構師,了解當前系統有沒(méi)有問(wèn)題,以及他們解決問(wèn)題的思路,這樣我就有了另一個(gè)角度來(lái)審視運維公司系統?!?br />   MetaQ也有他的缺點(diǎn)。
  MetaQ的基礎通信框架是gecko,MetaQ偶爾會(huì )出現rpc無(wú)響應,應用卡頓的情況,不易定位問(wèn)題;MetaQ的運維能力較弱,只有簡(jiǎn)單的Dashboard界面,無(wú)法實(shí)現自動(dòng)主題申請、消息追蹤等功能。
  有一天,我發(fā)現測試環(huán)境的一臺消費者服務(wù)器啟動(dòng)后,一直報鏈接異常,CPU占用率高。我立即用 netstat 命令查看,發(fā)現已經(jīng)創(chuàng )建了數百個(gè)鏈接。出于好奇,打開(kāi)源碼,發(fā)現網(wǎng)絡(luò )通信框架gecko已經(jīng)被netty取代了。我們會(huì )第一時(shí)間聯(lián)系建筑系的同學(xué)。
  那時(shí)我才意識到:他們已經(jīng)開(kāi)始重構 MetaQ。我從來(lái)沒(méi)有想過(guò)重構一個(gè)開(kāi)源軟件,因為它離我太遠了?;蛘吣莻€(gè)時(shí)候覺(jué)得自己能力不行。
  后來(lái)中國自研的消息隊列成為了自己的系統,在生產(chǎn)環(huán)境中一直運行的很好。
  時(shí)至今日,我仍然很佩服中國建筑團隊。他們自己開(kāi)發(fā)了消息隊列、DataLink(數據異構中間件)、分庫分表中間件等。他們樂(lè )于創(chuàng )新,勇于做出更好的技術(shù)產(chǎn)品。
  我從他們身上學(xué)到了很多。
  
  可能是看到他們重構MetaQ的那一刻,心里就種下了一顆種子。
  4 熱愛(ài)RocketMQ4.1開(kāi)源盛宴
  2014年的時(shí)候,搜了很多關(guān)于淘寶消息隊列的資料。我知道MetaQ的版本已經(jīng)升級到MetaQ 3.0,但是開(kāi)源版本還沒(méi)有發(fā)布。
  大約在秋天,我加入了 RocketMQ 技術(shù)組。石佳(RocketMQ創(chuàng )始人)在群里說(shuō):“最近開(kāi)源要發(fā)布了,發(fā)布了大家抓緊fork一下?!?他這句話(huà)發(fā)到群里后,群里炸開(kāi)了鍋。心里更加高興了,期待早日看到阿里自己的內部消息中間件。
  最后,RocketMQ終于開(kāi)源了。我迫不及待地想看他一眼。
  因為想學(xué)網(wǎng)絡(luò )編程,而RocketMQ的通訊模塊remoting底層也是Netty寫(xiě)的。因此,RocketMQ的通信層是我學(xué)習的起點(diǎn)。
  我模仿了RocketMQ的remoting,寫(xiě)了一個(gè)玩具rpc,大大提升了自信心。巧合的是,藝龍舉辦了科技創(chuàng )新活動(dòng)。我想了想,不如試試用Netty重寫(xiě)Cobar的通信模塊。于是參考Cobar的源碼,花了兩周的時(shí)間寫(xiě)了一個(gè)netty版的proxy,其實(shí)很粗糙,很多功能還不完善。后來(lái)這次活動(dòng)給了我一個(gè)鼓勵獎,現在想想都覺(jué)得有趣。
  因為在UCAR中使用了MetaQ,所以我在學(xué)習RocketMQ方面也比較得心應手。為了真正理解源碼,我經(jīng)常參考RocketMQ的源碼,寫(xiě)一些輪子來(lái)驗證自己的學(xué)習效果。
  雖然自己也做過(guò)一些練習,但是從來(lái)沒(méi)有在商業(yè)環(huán)境中使用過(guò)。2018年是我真正使用RocketMQ的一年,也是收獲的一年。
  短信服務(wù)
  短信服務(wù)應用廣泛,比如用戶(hù)注冊登錄驗證碼、營(yíng)銷(xiāo)短信、下單成功短信通知等。當初設計短信服務(wù)的時(shí)候,想了解一下業(yè)界是怎么做的。于是目標就鎖定在了騰訊云的短信服務(wù)上。騰訊云的短信服務(wù)具有以下特點(diǎn):
  所以,我參考了這個(gè)設計思路。
  模仿騰訊云SDK設計,提供簡(jiǎn)單易用的短信接口;設計短信服務(wù)API,接收短信請求,發(fā)送短信信息到消息隊列;worker服務(wù)消費消息,根據負載均衡算法Interface調用不同通道提供者的SMS消息;Dashboard可以查看短信發(fā)送記錄,配置渠道商信息。
  短信服務(wù)是我第一次真正意義上在生產(chǎn)環(huán)境中使用RocketMQ。當短信一條一條發(fā)出去的時(shí)候,還是挺有成就感的。
  MQ控制臺
  用過(guò)RocketMQ的朋友一定對上圖的控制臺不陌生。當時(shí)團隊有多個(gè) RocketMQ 集群,每個(gè)集群需要部署一個(gè)單獨的控制臺。所以我想:我能不能稍微修改一下控制臺來(lái)支持多集群。
  所以,我卷起袖子開(kāi)始工作。在開(kāi)源版本的基礎上修改了可以支持多組集群的版本,用了大概20天。做完之后,雖然能滿(mǎn)足我最初的想法,但是很粗糙。而且,搜狐還開(kāi)源了自己的MQCloud??戳怂麄兊脑O計,感覺(jué)離一個(gè)消息管理平臺還差得很遠。
  后來(lái)又看了兩篇《網(wǎng)易云音樂(lè )的消息隊列改造之路》和《今日頭條在消息服務(wù)平臺和容災體系建設中的實(shí)踐與思考》。我越癢,我就越想做。它是一個(gè)真正的消息管理平臺??上б恢睕](méi)有場(chǎng)景和機會(huì )。
  最近看了單車(chē)架構專(zhuān)家梁勇的一篇《Hello在分布式消息治理和微服務(wù)治理方面的實(shí)踐》,推薦大家閱讀。
  一個(gè)窗口,啟動(dòng)自研組件
  后來(lái)嘗試用RocketMQ更進(jìn)一步。
  這些做完之后,我們就自己開(kāi)發(fā)了注冊中心,配置中心,任務(wù)調度系統。在設計這些系統的時(shí)候,我從RocketMQ的源碼中汲取了很多營(yíng)養。雖然看起來(lái)設計上還有很多不完善的地方,代碼質(zhì)量也有待提高,但是在做完這些系統之后,我的自信心得到了很大的提升。
  RocketMQ為我打開(kāi)了一扇窗,讓我看到了更廣闊的Java世界。對我來(lái)說(shuō),這是開(kāi)源的盛宴。
  4.2 Kafka:大數據生態(tài)不可或缺的一部分
  Kafka是一個(gè)分布式消息流處理中間件,具有高吞吐、持久、水平可擴展、支持流式數據處理等特點(diǎn)。、在線(xiàn)/離線(xiàn)系統分析、實(shí)時(shí)監控等領(lǐng)域有著(zhù)廣泛的應用。
  日志同步
  在大型業(yè)務(wù)系統設計中,為了快速定位問(wèn)題,全鏈路跟蹤日志,及時(shí)監控故障,通常需要對各個(gè)系統應用的日志進(jìn)行集中分析處理。
  Kafka設計的初衷是為了應對大量的日志傳輸場(chǎng)景。應用程序將日志消息以可靠和異步的方式同步到消息服務(wù),然后使用其他組件實(shí)時(shí)或離線(xiàn)分析日志。它還可以用于采集
關(guān)鍵日志信息以進(jìn)行應用程序監控。
  日志同步主要有三個(gè)關(guān)鍵部分:日志采集客戶(hù)端、Kafka消息隊列、后端日志處理應用。
  日志采集客戶(hù)端負責用戶(hù)各種應用服務(wù)的日志數據采集,將日志以消息的形式“批量”、“異步”發(fā)送給Kafka客戶(hù)端。Kafka客戶(hù)端批量提交和壓縮消息,對應用服務(wù)的性能影響很小。Kafka 將日志存儲在消息文件中以提供持久性。一個(gè)日志處理應用程序,如Logstash,在Kafka中訂閱和消費日志消息,最后提供文件搜索服務(wù)來(lái)檢索日志,或者Kafka將消息傳遞給其他大數據應用程序,如Hadoop進(jìn)行系統存儲和分析。
  日志同步示意圖:
  流計算處理
  在股市走勢分析、氣象數據測控、網(wǎng)站用戶(hù)行為分析等諸多領(lǐng)域,由于數據生成速度快、實(shí)時(shí)性強、體量大,很難統一采集這些數據并進(jìn)行分析。加工前將它們存放在倉庫中。因此,傳統的數據處理架構無(wú)法滿(mǎn)足需求。Kafka、Storm、Samza、Spark等流計算引擎的出現,就是為了更好的解決這類(lèi)數據處理過(guò)程中遇到的問(wèn)題。流計算模型可以在數據流動(dòng)過(guò)程中實(shí)現對數據的實(shí)時(shí)捕獲和處理。處理,并根據業(yè)務(wù)需求進(jìn)行計算分析,最后將結果保存或分發(fā)到需要的組件中。
  數據傳輸中心
  近10年來(lái),KV存儲(HBase)、搜索(ElasticSearch)、流處理(Storm、Spark、Samza)、時(shí)序數據庫(OpenTSDB)等專(zhuān)用系統應運而生。這些系統誕生時(shí)心中只有一個(gè)目標,因為它們的簡(jiǎn)單性使得在商品硬件上構建分布式系統變得更加容易和更具成本效益。通常,需要將相同的數據集注入多個(gè)專(zhuān)用系統。例如,當應用日志用于離線(xiàn)日志分析時(shí),搜索單獨的日志記錄也是必不可少的,建立獨立的工作流來(lái)采集
每一類(lèi)數據,然后將它們導入到自己的專(zhuān)用系統中顯然是不切實(shí)際的。使用消息隊列 Kafka 版本充當數據傳輸中心,
  下圖是美團MySQL數據實(shí)時(shí)同步到Hive的架構圖,也是一個(gè)非常經(jīng)典的案例。
  4.3 如何選擇技術(shù)
  2018年去哪兒QMQ開(kāi)源,2019年騰訊TubeMQ開(kāi)源,2020年P(guān)ulsar如火如荼。
  消息隊列的生態(tài)如此繁榮,那么我們該如何選擇模型呢?
  我認為我們不必局限于消息隊列,我們??可以擴展它。只是談?wù)勎业目捶ā?br />   數據庫正在專(zhuān)業(yè)化——“一刀切”的方法不再適用 ----- MongoDB 設計哲學(xué)
  第一點(diǎn):先有場(chǎng)景,再有適應這個(gè)場(chǎng)景的技術(shù)。什么樣的場(chǎng)景選擇什么樣的技術(shù)。
  第二點(diǎn):現實(shí)往往很復雜。當我們真正進(jìn)行技術(shù)選型并需要實(shí)施時(shí),技術(shù)儲備和成本是我們需要重點(diǎn)關(guān)注的兩個(gè)因素。
  技術(shù)儲備
  成本
  最后一點(diǎn)是人的因素,尤其是管理者的因素。每一次重大的技術(shù)選型,都考驗著(zhù)技術(shù)管理者的眼光、布局和管理智慧。
  5 寫(xiě)到最后
  我覺(jué)得這個(gè)世界上沒(méi)有不合理的事情。真的,沒(méi)有多多的積累,多多的思考,是做不成事情的。. . 總之,體驗了這部電影,感覺(jué)自己要學(xué)習的東西太多了。這個(gè)世界上有能力的人太多了。你認為的極限,如果沒(méi)有做好,只是別人的起點(diǎn)。所以唯有不斷進(jìn)取,才能不丟人。好吧,人們不必上學(xué),但他們必須學(xué)習,真的。------韓寒《未來(lái)永無(wú)止境》演講
  我學(xué)習消息隊列的過(guò)程就是一個(gè)不斷思考和實(shí)踐的過(guò)程。雖然我覺(jué)得極限不好,只是別人的起點(diǎn),但至少現在,當我面對這個(gè)技術(shù)的時(shí)候,我的內心充滿(mǎn)了好奇。心亦無(wú)懼。
  我始終相信:每天學(xué)一點(diǎn),就是比昨天好一點(diǎn)。
  微信8.0讓好友達到10000,好友可以加我plus size,先到先得,過(guò)后就沒(méi)了
  掃描下方二維碼加我微信,2022,抱在一起取暖,一起帥。
  案例研究:強化學(xué)習如何做數據分析?新加坡國立等TKDE 2022綜述論文
  【新致遠簡(jiǎn)介】數據分析是現在必備的技能之一。傳統上,靜態(tài)算法或規則多用于數據分析,但在現實(shí)場(chǎng)景中,往往面臨復雜的交互環(huán)境,如何學(xué)習更好的策略是一個(gè)非?,F實(shí)的問(wèn)題。幸運的是,強化學(xué)習可以作為解決此類(lèi)問(wèn)題的有效方法。新加坡南洋理工大學(xué)的學(xué)者在 TKDE 發(fā)表了一篇關(guān)于“深度強化學(xué)習數據處理和分析”的綜述論文,全面回顧了近期的工作,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  數據處理和分析是基礎和普遍的。算法在數據處理和分析中起著(zhù)至關(guān)重要的作用,許多算法設計結合了人類(lèi)知識和經(jīng)驗的啟發(fā)式和一般規則以提高其有效性。
  近年來(lái),強化學(xué)習,尤其是深度強化學(xué)習(DRL)在許多領(lǐng)域得到了越來(lái)越多的探索和利用,因為與靜態(tài)設計的算法相比,它可以在復雜的交互環(huán)境中學(xué)習到更好的策略。在這種趨勢的推動(dòng)下,我們對最近的工作進(jìn)行了全面回顧,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  首先,我們介紹 DRL 中的關(guān)鍵概念、理論和方法。接下來(lái),我們將討論DRL在數據庫系統上的部署,以方便數據組織、調度、調優(yōu)和索引等各個(gè)方面的數據處理和分析。
  然后,我們研究 DRL 在數據處理和分析中的應用,從數據準備和自然語(yǔ)言處理到醫療保健、金融科技等。
  最后,我們討論了在數據處理和分析中使用 DRL 的重要挑戰和未來(lái)的研究方向。
  論文鏈接:
  在大數據時(shí)代,數據處理和分析是基本的、無(wú)處不在的,對于許多正在數字化旅程中改善和轉變其業(yè)務(wù)和運營(yíng)的組織來(lái)說(shuō)至關(guān)重要。數據分析通常需要其他關(guān)鍵操作,例如數據采集、數據清理、數據集成、建模等,然后才能提取見(jiàn)解。
  從醫療保健到零售,大數據可以在許多行業(yè)釋放巨大的價(jià)值創(chuàng )造。然而,數據的復雜性(例如,大容量、高速度和高多樣性)對數據分析提出了許多挑戰,使其難以獲得有意義的見(jiàn)解。為了迎接這一挑戰,促進(jìn)高效、有效的數據處理和分析,研究人員和從業(yè)者設計了大量的算法和技術(shù),也開(kāi)發(fā)了大量的學(xué)習系統,如Spark MLlib和Rafiki。
  為了支持快速的數據處理和準確的數據分析,大量算法依賴(lài)于基于人類(lèi)知識和經(jīng)驗制定的規則。例如,“最短作業(yè)優(yōu)先”是一種調度算法,選擇執行時(shí)間最短的作業(yè)進(jìn)行下一次執行。但與沒(méi)有充分利用工作負載特性的基于學(xué)習的調度算法相比,其性能較差。另一個(gè)例子是計算機網(wǎng)絡(luò )中的數據包分類(lèi),它將數據包與一組規則中的一個(gè)相匹配。一種解決方案是使用手動(dòng)調整的分類(lèi)啟發(fā)式方法來(lái)構建決策樹(shù)。具體來(lái)說(shuō),啟發(fā)式算法是為一組特定的規則而設計的,因此可能不適用于具有不同特征的其他工作負載。
  
  我們觀(guān)察到現有算法的三個(gè)局限性:
  首先,該算法是次優(yōu)的。規則可能會(huì )忽略或未充分利用數據分布等有用信息。其次,該算法缺乏自適應能力。為特定工作負載設計的算法在不同的工作負載中表現不佳。第三,算法設計是一個(gè)耗時(shí)的過(guò)程。開(kāi)發(fā)人員必須花費大量時(shí)間嘗試許多規則才能找到一個(gè)憑經(jīng)驗行得通的規則。
  基于學(xué)習的算法也用于數據處理和分析。常用的學(xué)習方法有兩種:監督學(xué)習和強化學(xué)習。他們通過(guò)直接優(yōu)化性能目標來(lái)實(shí)現更好的性能。監督學(xué)習通常需要一組豐富的高質(zhì)量帶注釋的訓練數據,而獲取這些數據既困難又具有挑戰性。例如,配置調整對于優(yōu)化數據庫管理系統 (DBMS) 的整體性能非常重要。在離散和連續空間中可能有數百個(gè)相互關(guān)聯(lián)的調諧旋鈕。此外,不同的數據庫實(shí)例、查詢(xún)工作負載和硬件特性使得數據采集
不可用,尤其是在云環(huán)境中。
  強化學(xué)習比監督學(xué)習具有更好的性能,因為它采用試錯法搜索并且需要更少的訓練樣本來(lái)為云數據庫找到良好的配置。
  另一個(gè)具體的例子是查詢(xún)處理中的查詢(xún)優(yōu)化。數據庫系統優(yōu)化器的任務(wù)是為查詢(xún)找到最佳的執行計劃,以降低查詢(xún)成本。傳統的優(yōu)化器通常會(huì )枚舉許多候選計劃并使用成本模型來(lái)找到成本最低的計劃。優(yōu)化過(guò)程可能緩慢且不準確。
  在不依賴(lài)不準確的成本模型的情況下,深度強化學(xué)習 (DRL) 方法通過(guò)與數據庫交互(例如,更改表連接順序)來(lái)改進(jìn)執行計劃。
  當查詢(xún)被發(fā)送到代理(即 DRL 優(yōu)化器)時(shí),代理通過(guò)表征基本信息(例如訪(fǎng)問(wèn)的關(guān)系和表)來(lái)生成狀態(tài)向量。代理將狀態(tài)作為輸入,并使用神經(jīng)網(wǎng)絡(luò )生成一個(gè)動(dòng)作集的概率分布,其中可以收錄
所有可能的連接操作作為潛在動(dòng)作。
  每個(gè)操作代表一對表的部分連接計劃,一旦執行操作,狀態(tài)就會(huì )更新。在采取可能的行動(dòng)之后,生成一個(gè)完整的計劃,然后由 DBMS 執行以獲得獎勵。
  在這個(gè)查詢(xún)優(yōu)化問(wèn)題中,可以根據實(shí)際延遲計算獎勵。在使用獎勵信號進(jìn)行訓練期間,代理可以改進(jìn)其策略,從而產(chǎn)生更好的連接順序(即更少的延遲)和更高的獎勵。
  用于查詢(xún)優(yōu)化的 DRL 工作流
  強化學(xué)習 (RL) 側重于學(xué)習在環(huán)境中智能地行動(dòng)。RL 算法通過(guò)基于探索和開(kāi)發(fā)的環(huán)境反饋來(lái)改進(jìn)自身。在過(guò)去的幾十年里,強化學(xué)習在理論和技術(shù)上都取得了長(cháng)足的進(jìn)步。
  
  值得注意的是,DRL 結合了深度學(xué)習 (DL) 技術(shù)來(lái)處理復雜的非結構化數據,旨在從歷史數據中學(xué)習和自我探索,以解決眾所周知的困難和大規模問(wèn)題(例如 AlphaGo)。
  近年來(lái),來(lái)自不同社區的研究人員提出了 DRL 解決方案,以解決數據處理和分析中的問(wèn)題。我們從系統和應用程序的角度使用 DRL 對現有作品進(jìn)行分類(lèi)。
  從系統的角度來(lái)看,我們專(zhuān)注于基礎研究主題,從一般的(例如調度)到特定于系統的(例如數據庫查詢(xún)優(yōu)化)。我們還應該強調它是如何被表述為馬爾可夫決策過(guò)程的,并討論與傳統方法相比如何更有效地解決 DRL 問(wèn)題。由于實(shí)際系統中的工作負載執行和數據獲取時(shí)間比較長(cháng),因此采用采樣、模擬等技術(shù)來(lái)提高DRL訓練的效率。
  從應用的角度,我們將涵蓋數據處理和數據分析中的各種關(guān)鍵應用,以全面了解 DRL 的可用性和適應性。許多領(lǐng)域通過(guò)采用 DRL 進(jìn)行轉換,這有助于學(xué)習有關(guān)應用程序的特定領(lǐng)域知識。
  在這篇綜述中,我們旨在對使用深度強化學(xué)習解決數據系統、數據處理和分析問(wèn)題的最新進(jìn)展進(jìn)行廣泛而系統的綜述。
  強化學(xué)習技術(shù)分類(lèi)
  參考:
  [1] J. Manyika、M. Chui、B. Brown、J. Bughin、R. Dobbs、C. Roxburgh、A. Hung Byers 等,大數據:創(chuàng )新、競爭和生產(chǎn)力的下一個(gè)前沿。麥肯錫全球研究院,2011 年。
  [2] X. Meng、J. Bradley、B. Yavuz、E. Sparks、S. Venkataraman、D. Liu、J. Freeman、D. Tsai、M. Amde、S. Owen 等人,“Mllib:機器在 apache spark 中學(xué)習,”機器學(xué)習研究雜志,卷。17,沒(méi)有。1,第 1235–1241 頁(yè),2016 年。
  [3] W.Wang、J. Gao、M. Zhang、S.Wang、G. Chen、TK Ng、BC Ooi、J. Shao 和 M. Reyad,“Rafiki:機器學(xué)習作為分析服務(wù)系統”, VLDB,卷。12,沒(méi)有。2,第 128–140 頁(yè),2018 年。

最新版本:android音頻開(kāi)發(fā)6

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2022-11-26 20:59 ? 來(lái)自相關(guān)話(huà)題

  最新版本:android音頻開(kāi)發(fā)6
  前面的文章介紹了如何使用Android提供的AudioRecord在Java層采集音頻,使用AudioTrack播放音頻,使用MediaCodec編解碼。這些API是Android提供的Java層API。無(wú)論是采集、播放還是編解碼,這些API接口都需要將音頻數據從Java復制到native層,或者從native層復制到Java。如果想減少拷貝,開(kāi)發(fā)更高效的Android音頻應用,推薦使用Android NDK提供的OpenSL ES API接口。它支持直接在本機層處理音頻數據。
  OpenSL ES從Android 2.3開(kāi)始就提供了,但是關(guān)于OpenSL ES的Android官方文檔很少,網(wǎng)上資料也比較少。另外,它的接口使用了面向對象的C接口,不是特別簡(jiǎn)單易懂,所以學(xué)起來(lái)也不是那么容易,我打算通過(guò)兩篇文章來(lái)介紹這個(gè)框架,希望對初學(xué)者有所幫助。
  本文無(wú)意介紹OpenSL ES的工作原理和功能使用(這些將在下一篇文章中介紹),而是從宏觀(guān)的角度簡(jiǎn)單介紹一下OpenSL ES的概況,讓初學(xué)者了解這個(gè)API是干什么的,以及可以做哪些事情,哪些事情不能做,最后給出了一些參考示例代碼和資源鏈接。
  1. 什么是 OpenSL ES?
  OpenSL ES的全稱(chēng)是:Open Sound Library for Embedded Systems,是一套免授權、跨平臺、針對嵌入式系統優(yōu)化的硬件音頻加速API。為本地應用開(kāi)發(fā)者在嵌入式移動(dòng)多媒體設備上提供標準化、高性能、低響應時(shí)間的音頻功能實(shí)現方法,實(shí)現軟硬件音頻性能的直接跨平臺部署,降低執行難度,促進(jìn)先進(jìn)音響市場(chǎng)。開(kāi)發(fā)。(來(lái)自百度百科)
  一句話(huà)概述:OpenSL ES是一套針對嵌入式平臺的音頻標準。
  2、Android和OpenSL ES有什么關(guān)系?
  Android 2.3 (API 9) 開(kāi)始支持 OpenSL ES 標準。通過(guò)NDK提供相應的API開(kāi)發(fā)接口。下圖是Android官方給出的關(guān)系圖(來(lái)源:這里):
  從圖中可以看出,Android實(shí)現的OpenSL ES只是OpenSL 1.0.1的一個(gè)子集,并進(jìn)行了擴展。因此,對于OpenSL ES API的使用,我們需要特別注意Android支持哪些,哪些不支持。有的,具體相關(guān)文檔地址位于NDK docs目錄:
  1個(gè)
  2個(gè)
  NDKroot/docs/Additional_library_docs/opensles/index.html
  
  NDKroot/docs/Additional_library_docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
  3.可以做什么?什么不能做?
  下面總結了 Android OpenSL ES 的特性和不支持的功能。
  特征:
  (1) C語(yǔ)言接口,兼容C++,需要在NDK下開(kāi)發(fā),可以更好的集成到原生應用中
  (2) 運行在native層,需要自己管理資源的申請和釋放,沒(méi)有Dalvik虛擬機的垃圾回收機制
  (3) 支持PCM數據采集,支持配置:16bit位寬,16000Hz采樣率,單通道。(其他配置不保證兼容所有平臺)
  (4) 支持PCM數據播放,支持配置:8bit/16bit位寬,單通道/雙通道,little endian模式,采樣率(8000、11025、12000、16000、22050、24000、32000、44100、48000Hz)
 ?。?)支持播放的音頻數據來(lái)源:res文件夾下的音頻、assets文件夾下的音頻、sdcard目錄下的音頻、在線(xiàn)網(wǎng)絡(luò )音頻、代碼中定義的音頻二進(jìn)制數據等。
  不支持:
  (1) 不支持Android 2.3(API 9)以下版本的設備
  (2) 并非OpenSL ES定義的所有特性和功能都得到實(shí)現
  (3) 不支持 MIDI
  (4) 不支持直接播放DRM或加密內容
  
  (5) 不支持音頻數據的編解碼器。如果需要編解碼器,則需要MediaCodec API或第三方庫
  (6) 音頻延遲方面,與上層API相比,沒(méi)有明顯改善
  4. 使用 OpenSL ES 開(kāi)發(fā)音頻應用程序有什么好處?
  (1)避免在native層和java層頻繁拷貝音頻數據,提高效率
  (2) 與Java API相比,可以更靈活地控制參數
  (3) 由于是C代碼,可以進(jìn)行深度優(yōu)化,比如使用NEON優(yōu)化
  (4) 代碼細節更難被反編譯
 ?。ㄎ澹┢渌?,待補充
  5.示例代碼
  老外(Victor Lazzarini)寫(xiě)了一篇很好的Android OpenSL ES API介紹,并給出了一些示例代碼,鏈接如下:
  我提取了其中兩個(gè)文件,對其進(jìn)行了修改,并將它們組織到我的 AudioDemo 示例中。我個(gè)人認為它具有更好的示范效果。地址如下:
  6.有什么好的資源?
  “Android.NDK.Beginner's.Guide.pdf”
  七、總結
  官方發(fā)布:seo優(yōu)化 | 網(wǎng)站被百度降權后該怎么辦?
  作為一個(gè)網(wǎng)站SEO優(yōu)化師,最不想看到也是最害怕的就是自己負責的網(wǎng)站被降級。這里說(shuō)的降級指的是多個(gè)關(guān)鍵詞排名下降,即使在前100之外,網(wǎng)站流量也大幅下降,SEO優(yōu)化的負責人會(huì )承受不小的壓力,尤其是服務(wù)的SEOer人員公司。你吃頓飯,不然直接開(kāi)除。
  這個(gè)時(shí)候,“吃苦耐勞”的SEOer人員只能忍著(zhù)了,因為這個(gè)時(shí)候你跟老板解釋就沒(méi)有意義了。他只會(huì )說(shuō)你在找借口。如果老板懂一點(diǎn)SEO知識,他可能會(huì )來(lái)找你,和你親切的聊聊,出現這種情況是什么原因,怎么解決等等。
  總之,不管是什么情況,當網(wǎng)站降級的時(shí)候,我們都應該冷靜下來(lái)想一想為什么會(huì )降級,我們在優(yōu)化網(wǎng)站的時(shí)候是不是做了什么違反搜索引擎規則的事情。思考過(guò)后,再修正優(yōu)化方法等。
  那么,網(wǎng)站降級后,您會(huì )立即做什么?我做SEO好幾年了,也經(jīng)歷過(guò)網(wǎng)站被K的情況,下面我就用SEM來(lái)分析一下這種情況,我會(huì )怎么做,給大家提供一個(gè)參考。
  1、冷靜思考分析網(wǎng)站被降級的原因
  當網(wǎng)站被確認降級后,我們應該冷靜下來(lái)分析原因,不要感到天塌下來(lái)的恐慌。說(shuō)到這里,我會(huì )回憶一下我去年優(yōu)化過(guò)的東西。一個(gè)關(guān)于SEO的企業(yè)網(wǎng)站。當時(shí),該網(wǎng)站是一個(gè)全新的網(wǎng)站。上線(xiàn)不到兩周,我用SEO工具查了一下,發(fā)現權重從2變成了0,同時(shí)發(fā)現指數也從百降到單。算起來(lái),第一頁(yè)和第二頁(yè)都找不到網(wǎng)站域名的首頁(yè)。這時(shí)候我就確定網(wǎng)站已經(jīng)降級了。也就是在這個(gè)時(shí)候,我并沒(méi)有像新手那樣驚慌失措,而是冷靜的思考分析了它功率下降的原因,那個(gè)時(shí)候,
  1.查看百度站長(cháng)平臺的消息提醒
  相信現在大部分站長(cháng)做網(wǎng)站排名優(yōu)化,主要是針對百度的。既然是為百度搜索引擎做的,那怎么能不在站長(cháng)平臺上驗證自己的網(wǎng)站呢?經(jīng)核實(shí),如果網(wǎng)站出現問(wèn)題,一般百度站長(cháng)平臺會(huì )有及時(shí)的信息通知,如:機器人封禁、抓取異常等。這些通知可能是您的網(wǎng)站被剝奪權利的原因。
  2. 分析同一IP下的站點(diǎn)
  因為同一個(gè)IP下其他網(wǎng)站如果被處罰,也會(huì )對本站產(chǎn)生影響,嚴重的還會(huì )導致網(wǎng)站降級。這種情況出現的幾率是比較小的,但是在網(wǎng)站降級的時(shí)候,我們還是需要分析每一個(gè)可能導致網(wǎng)站降級的因素,所以還是要檢查每個(gè)網(wǎng)站在同一個(gè)IP下,沒(méi)有網(wǎng)站在同一個(gè)IP下會(huì )被懲罰。那么,這個(gè)因素就可以排除了。
  3、查看每個(gè)頁(yè)面是否正常
  如果我們在站長(cháng)平臺上沒(méi)有得到任何重要的新聞提醒,那么檢查我們網(wǎng)站的首頁(yè)、欄目頁(yè)、內容頁(yè)是否正常,主要是檢查頁(yè)面中的代碼是否被黑鏈接、被攻擊、等等
  4、查看網(wǎng)站近期是否有重大改版改版
  
  網(wǎng)站大改版意味著(zhù)關(guān)鍵詞的排名和采集
會(huì )有很大的波動(dòng)。當然,這種波動(dòng)可能會(huì )讓網(wǎng)站變得更貴,也可能會(huì )降低權威。網(wǎng)站的大改版會(huì )引起波動(dòng)。百度方面也明確表示,當然如果我們的修改是基于給用戶(hù)帶來(lái)更好的體驗,那么你們網(wǎng)站的降電是短期的事情,很快就會(huì )恢復??赡軙?huì )有更好的排名。
  如果一個(gè)網(wǎng)站改版處理不當,被降權的概率是非常高的。如果處理得當,不會(huì )造成降級。那個(gè)時(shí)候百度沒(méi)有什么改版工具,很多東西基本都是靠自己的經(jīng)驗?,F在百度推出了網(wǎng)站改版工具,當您需要網(wǎng)站改版的時(shí)候,可以好好利用網(wǎng)站改版工具,減少不必要的損失。
  5.是否有作弊
  作弊行為當然包括常見(jiàn)的購買(mǎi)鏈接、黑鏈接、群發(fā)垃圾鏈接等。這些行為都是搜索引擎明令禁止的作弊行為。很有可能這個(gè)站點(diǎn)已經(jīng)被百度發(fā)現是購買(mǎi)鏈接的行為,鏈接到它的鏈接很可能會(huì )受到聯(lián)合處罰。
  6、各大搜索引擎排名
  每個(gè)搜索引擎都會(huì )有自己的一套收錄和排名規則,但是搜索引擎也會(huì )有相同的規則,比如以用戶(hù)為導向,用戶(hù)體驗好的網(wǎng)站會(huì )得到好的排名,如果你的網(wǎng)站在各種情況下的話(huà)你在搜索引擎中被降級,你的網(wǎng)站肯定有很大的問(wèn)題,而且這些問(wèn)題絕對不是一天兩天的事情,有可能你自己已經(jīng)發(fā)現了,所以你得去找及時(shí)解決這些問(wèn)題并改正。
  7、檢查服務(wù)器是否正常
  服務(wù)器的穩定性是絕對影響排名和采集
的最重要因素之一。很多網(wǎng)站經(jīng)常因為服務(wù)器不穩定而降級。這種不穩定主要體現在網(wǎng)站經(jīng)常打不開(kāi),或者只能在某些區域打開(kāi),或者打開(kāi)速度很慢,尤其是百度,非常重視服務(wù)器的穩定性。
  凡德的服務(wù)器不穩定,導致無(wú)法訪(fǎng)問(wèn)。十有八九網(wǎng)站會(huì )降級,而且宕機時(shí)間長(cháng),很難恢復到以前的狀態(tài)。當然,搜索引擎這么看重這個(gè)服務(wù)器也是正常的。因為搜索引擎是相當“用戶(hù)”的,一個(gè)用戶(hù)往往打不開(kāi)你的網(wǎng)站,那么搜索引擎把你排名上去有什么意義呢?
  用戶(hù)點(diǎn)了你的網(wǎng)站也打不開(kāi),嚴重影響用戶(hù)體驗。這嚴重違背了搜索引擎所倡導的具有良好用戶(hù)體驗的網(wǎng)站。因此,被剝奪權利也是恰當的。這個(gè)時(shí)候,我應該盡快去做?;謴筒⒋_保服務(wù)器穩定性。
  8.查看網(wǎng)站日志
  一般網(wǎng)站的服務(wù)器都會(huì )存儲每天的網(wǎng)站日志。這些日志包括用戶(hù)和搜索引擎的一些行為軌跡。從這些網(wǎng)站日志中,我們可以查看降級前后的幾天里,哪些頁(yè)面被搜索引擎蜘蛛抓取過(guò)?爬取頁(yè)面返回的信息是什么?有問(wèn)題嗎?
  目前,網(wǎng)上有相當多的網(wǎng)站日志查看工具。相信大家都知道怎么查看這個(gè)網(wǎng)站的日志。
  9、分析網(wǎng)站的外部鏈接
  因為我優(yōu)化過(guò)的SEO網(wǎng)站是改版網(wǎng)站,域名之前也優(yōu)化過(guò),所以很有可能是之前做的外鏈有問(wèn)題,所以我用百度站長(cháng)工具里的外鏈分析工具檢測并分析了外鏈,不出所料,發(fā)現了大量黃色和賭博外鏈。同時(shí)制作了大量黃色和賭博的錨文本。此類(lèi)外部鏈接有 2,000 多個(gè)。再說(shuō)說(shuō)網(wǎng)站被這種垃圾外鏈包圍會(huì )不會(huì )降級。答案將是不言而喻的,所以我將一一拒絕此類(lèi)外部鏈接。我花了將近兩天的時(shí)間。
  
  2.制定網(wǎng)站SEO策略,解決權重恢復問(wèn)題
  網(wǎng)站降級的原因找到并處理好之后,接下來(lái)就是解決恢復網(wǎng)站權重和排名的問(wèn)題了,那么一個(gè)被降級的網(wǎng)站如何恢復權重呢?這是很多站長(cháng),尤其是新手站長(cháng)每天都在站長(cháng)群里問(wèn)的問(wèn)題,也是他們最苦惱的問(wèn)題。接下來(lái),馬海翔再次以?xún)?yōu)化后的SEO網(wǎng)站為例,說(shuō)說(shuō)我是如何讓被降級的網(wǎng)站重振旗鼓的。
  1、定期定量更新網(wǎng)站原有價(jià)值內容
  網(wǎng)站內容建設的重要性已經(jīng)是老生常談了。百度官方多次強調內容質(zhì)量,并明確表示將優(yōu)先提供更優(yōu)質(zhì)、有利于用戶(hù)體驗的內容頁(yè)面。因此,我會(huì )堅持每天寫(xiě)幾篇SEO行業(yè)相關(guān)的原創(chuàng )文章,上午寫(xiě),下午發(fā)表。堅持了一段時(shí)間后,發(fā)現百度已經(jīng)開(kāi)始重新收錄了。一些長(cháng)尾關(guān)鍵詞也有排名,這是很好的體重恢復表現。
  2.優(yōu)質(zhì)外鏈建設
  與往年相比,外鏈不是很有效,但指的是一些低質(zhì)量的外鏈和一些被稱(chēng)為垃圾的外鏈。百度搜索引擎仍然更加重視高質(zhì)量的外部鏈接。權重高,那么什么是高質(zhì)量的外鏈呢?官方的標準是用戶(hù)主動(dòng)自愿給的鏈接才叫優(yōu)質(zhì)外鏈
  當時(shí)在優(yōu)化網(wǎng)站的時(shí)候,為了建設高質(zhì)量的外鏈,除了做一些相關(guān)行業(yè)的友情鏈接,馬海翔還堅持寫(xiě)了一篇跟SEO相關(guān)的文章,也跟站長(cháng)、SEO或者互聯(lián)網(wǎng)相關(guān)每天向A5站長(cháng)投稿到知名門(mén)戶(hù)網(wǎng)站如、站長(cháng)之家等,文章審核通過(guò)后將被大量轉發(fā),源源不斷帶來(lái)大量高- 優(yōu)化網(wǎng)站的優(yōu)質(zhì)外部鏈接。
  這樣不僅可以引導蜘蛛抓取網(wǎng)站,還可以增加整個(gè)網(wǎng)站的權重,提高網(wǎng)站的關(guān)鍵詞排名,對恢復權重也起到至關(guān)重要的作用。
  3、恢復網(wǎng)站權重一定要有毅力,執行力要強
  一個(gè)被剝奪權利的網(wǎng)站要想恢復,不僅要改變一些不當的優(yōu)化方式,還需要不斷重復以上兩點(diǎn):
  (1)定期、定量更新網(wǎng)站原有價(jià)值內容。
  (2) 建立高質(zhì)量的外部鏈接
  很多站長(cháng)失敗的原因就是不夠堅持。有的站長(cháng)堅持更新半個(gè)月,看網(wǎng)站沒(méi)有任何變化就放棄了。其實(shí)網(wǎng)站優(yōu)化是一個(gè)日積月累的過(guò)程,從量變到質(zhì)變。在恢復SEO站點(diǎn)權重的時(shí)候,我堅持了5個(gè)月。在這5個(gè)月的時(shí)間里,我也想過(guò)放棄,但是想了想還是要堅持做下去,這樣才能考驗自己的判斷能力,所以一直堅持了5個(gè)月,終于把網(wǎng)站做完了百花齊放,很多關(guān)鍵詞排名都很好。
  注釋?zhuān)?br />   網(wǎng)站被降級并不可怕。在我看來(lái),這是鍛煉自己,提高自身能力的最好方式。和朋友聊天的時(shí)候經(jīng)常會(huì )說(shuō)這句話(huà)。如果一個(gè)SEOer工作者沒(méi)有經(jīng)歷過(guò)網(wǎng)站降級到恢復的過(guò)程,那么你就不是一個(gè)合格的SEOer。說(shuō)實(shí)話(huà),在優(yōu)化這個(gè)SEO網(wǎng)站的過(guò)程中,從降權到恢復,我學(xué)到了很多東西。同時(shí),自身的能力也有了質(zhì)的飛躍! 查看全部

  最新版本:android音頻開(kāi)發(fā)6
  前面的文章介紹了如何使用Android提供的AudioRecord在Java層采集音頻,使用AudioTrack播放音頻,使用MediaCodec編解碼。這些API是Android提供的Java層API。無(wú)論是采集、播放還是編解碼,這些API接口都需要將音頻數據從Java復制到native層,或者從native層復制到Java。如果想減少拷貝,開(kāi)發(fā)更高效的Android音頻應用,推薦使用Android NDK提供的OpenSL ES API接口。它支持直接在本機層處理音頻數據。
  OpenSL ES從Android 2.3開(kāi)始就提供了,但是關(guān)于OpenSL ES的Android官方文檔很少,網(wǎng)上資料也比較少。另外,它的接口使用了面向對象的C接口,不是特別簡(jiǎn)單易懂,所以學(xué)起來(lái)也不是那么容易,我打算通過(guò)兩篇文章來(lái)介紹這個(gè)框架,希望對初學(xué)者有所幫助。
  本文無(wú)意介紹OpenSL ES的工作原理和功能使用(這些將在下一篇文章中介紹),而是從宏觀(guān)的角度簡(jiǎn)單介紹一下OpenSL ES的概況,讓初學(xué)者了解這個(gè)API是干什么的,以及可以做哪些事情,哪些事情不能做,最后給出了一些參考示例代碼和資源鏈接。
  1. 什么是 OpenSL ES?
  OpenSL ES的全稱(chēng)是:Open Sound Library for Embedded Systems,是一套免授權、跨平臺、針對嵌入式系統優(yōu)化的硬件音頻加速API。為本地應用開(kāi)發(fā)者在嵌入式移動(dòng)多媒體設備上提供標準化、高性能、低響應時(shí)間的音頻功能實(shí)現方法,實(shí)現軟硬件音頻性能的直接跨平臺部署,降低執行難度,促進(jìn)先進(jìn)音響市場(chǎng)。開(kāi)發(fā)。(來(lái)自百度百科)
  一句話(huà)概述:OpenSL ES是一套針對嵌入式平臺的音頻標準。
  2、Android和OpenSL ES有什么關(guān)系?
  Android 2.3 (API 9) 開(kāi)始支持 OpenSL ES 標準。通過(guò)NDK提供相應的API開(kāi)發(fā)接口。下圖是Android官方給出的關(guān)系圖(來(lái)源:這里):
  從圖中可以看出,Android實(shí)現的OpenSL ES只是OpenSL 1.0.1的一個(gè)子集,并進(jìn)行了擴展。因此,對于OpenSL ES API的使用,我們需要特別注意Android支持哪些,哪些不支持。有的,具體相關(guān)文檔地址位于NDK docs目錄:
  1個(gè)
  2個(gè)
  NDKroot/docs/Additional_library_docs/opensles/index.html
  
  NDKroot/docs/Additional_library_docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
  3.可以做什么?什么不能做?
  下面總結了 Android OpenSL ES 的特性和不支持的功能。
  特征:
  (1) C語(yǔ)言接口,兼容C++,需要在NDK下開(kāi)發(fā),可以更好的集成到原生應用中
  (2) 運行在native層,需要自己管理資源的申請和釋放,沒(méi)有Dalvik虛擬機的垃圾回收機制
  (3) 支持PCM數據采集,支持配置:16bit位寬,16000Hz采樣率,單通道。(其他配置不保證兼容所有平臺)
  (4) 支持PCM數據播放,支持配置:8bit/16bit位寬,單通道/雙通道,little endian模式,采樣率(8000、11025、12000、16000、22050、24000、32000、44100、48000Hz)
 ?。?)支持播放的音頻數據來(lái)源:res文件夾下的音頻、assets文件夾下的音頻、sdcard目錄下的音頻、在線(xiàn)網(wǎng)絡(luò )音頻、代碼中定義的音頻二進(jìn)制數據等。
  不支持:
  (1) 不支持Android 2.3(API 9)以下版本的設備
  (2) 并非OpenSL ES定義的所有特性和功能都得到實(shí)現
  (3) 不支持 MIDI
  (4) 不支持直接播放DRM或加密內容
  
  (5) 不支持音頻數據的編解碼器。如果需要編解碼器,則需要MediaCodec API或第三方庫
  (6) 音頻延遲方面,與上層API相比,沒(méi)有明顯改善
  4. 使用 OpenSL ES 開(kāi)發(fā)音頻應用程序有什么好處?
  (1)避免在native層和java層頻繁拷貝音頻數據,提高效率
  (2) 與Java API相比,可以更靈活地控制參數
  (3) 由于是C代碼,可以進(jìn)行深度優(yōu)化,比如使用NEON優(yōu)化
  (4) 代碼細節更難被反編譯
 ?。ㄎ澹┢渌?,待補充
  5.示例代碼
  老外(Victor Lazzarini)寫(xiě)了一篇很好的Android OpenSL ES API介紹,并給出了一些示例代碼,鏈接如下:
  我提取了其中兩個(gè)文件,對其進(jìn)行了修改,并將它們組織到我的 AudioDemo 示例中。我個(gè)人認為它具有更好的示范效果。地址如下:
  6.有什么好的資源?
  “Android.NDK.Beginner's.Guide.pdf”
  七、總結
  官方發(fā)布:seo優(yōu)化 | 網(wǎng)站被百度降權后該怎么辦?
  作為一個(gè)網(wǎng)站SEO優(yōu)化師,最不想看到也是最害怕的就是自己負責的網(wǎng)站被降級。這里說(shuō)的降級指的是多個(gè)關(guān)鍵詞排名下降,即使在前100之外,網(wǎng)站流量也大幅下降,SEO優(yōu)化的負責人會(huì )承受不小的壓力,尤其是服務(wù)的SEOer人員公司。你吃頓飯,不然直接開(kāi)除。
  這個(gè)時(shí)候,“吃苦耐勞”的SEOer人員只能忍著(zhù)了,因為這個(gè)時(shí)候你跟老板解釋就沒(méi)有意義了。他只會(huì )說(shuō)你在找借口。如果老板懂一點(diǎn)SEO知識,他可能會(huì )來(lái)找你,和你親切的聊聊,出現這種情況是什么原因,怎么解決等等。
  總之,不管是什么情況,當網(wǎng)站降級的時(shí)候,我們都應該冷靜下來(lái)想一想為什么會(huì )降級,我們在優(yōu)化網(wǎng)站的時(shí)候是不是做了什么違反搜索引擎規則的事情。思考過(guò)后,再修正優(yōu)化方法等。
  那么,網(wǎng)站降級后,您會(huì )立即做什么?我做SEO好幾年了,也經(jīng)歷過(guò)網(wǎng)站被K的情況,下面我就用SEM來(lái)分析一下這種情況,我會(huì )怎么做,給大家提供一個(gè)參考。
  1、冷靜思考分析網(wǎng)站被降級的原因
  當網(wǎng)站被確認降級后,我們應該冷靜下來(lái)分析原因,不要感到天塌下來(lái)的恐慌。說(shuō)到這里,我會(huì )回憶一下我去年優(yōu)化過(guò)的東西。一個(gè)關(guān)于SEO的企業(yè)網(wǎng)站。當時(shí),該網(wǎng)站是一個(gè)全新的網(wǎng)站。上線(xiàn)不到兩周,我用SEO工具查了一下,發(fā)現權重從2變成了0,同時(shí)發(fā)現指數也從百降到單。算起來(lái),第一頁(yè)和第二頁(yè)都找不到網(wǎng)站域名的首頁(yè)。這時(shí)候我就確定網(wǎng)站已經(jīng)降級了。也就是在這個(gè)時(shí)候,我并沒(méi)有像新手那樣驚慌失措,而是冷靜的思考分析了它功率下降的原因,那個(gè)時(shí)候,
  1.查看百度站長(cháng)平臺的消息提醒
  相信現在大部分站長(cháng)做網(wǎng)站排名優(yōu)化,主要是針對百度的。既然是為百度搜索引擎做的,那怎么能不在站長(cháng)平臺上驗證自己的網(wǎng)站呢?經(jīng)核實(shí),如果網(wǎng)站出現問(wèn)題,一般百度站長(cháng)平臺會(huì )有及時(shí)的信息通知,如:機器人封禁、抓取異常等。這些通知可能是您的網(wǎng)站被剝奪權利的原因。
  2. 分析同一IP下的站點(diǎn)
  因為同一個(gè)IP下其他網(wǎng)站如果被處罰,也會(huì )對本站產(chǎn)生影響,嚴重的還會(huì )導致網(wǎng)站降級。這種情況出現的幾率是比較小的,但是在網(wǎng)站降級的時(shí)候,我們還是需要分析每一個(gè)可能導致網(wǎng)站降級的因素,所以還是要檢查每個(gè)網(wǎng)站在同一個(gè)IP下,沒(méi)有網(wǎng)站在同一個(gè)IP下會(huì )被懲罰。那么,這個(gè)因素就可以排除了。
  3、查看每個(gè)頁(yè)面是否正常
  如果我們在站長(cháng)平臺上沒(méi)有得到任何重要的新聞提醒,那么檢查我們網(wǎng)站的首頁(yè)、欄目頁(yè)、內容頁(yè)是否正常,主要是檢查頁(yè)面中的代碼是否被黑鏈接、被攻擊、等等
  4、查看網(wǎng)站近期是否有重大改版改版
  
  網(wǎng)站大改版意味著(zhù)關(guān)鍵詞的排名和采集
會(huì )有很大的波動(dòng)。當然,這種波動(dòng)可能會(huì )讓網(wǎng)站變得更貴,也可能會(huì )降低權威。網(wǎng)站的大改版會(huì )引起波動(dòng)。百度方面也明確表示,當然如果我們的修改是基于給用戶(hù)帶來(lái)更好的體驗,那么你們網(wǎng)站的降電是短期的事情,很快就會(huì )恢復??赡軙?huì )有更好的排名。
  如果一個(gè)網(wǎng)站改版處理不當,被降權的概率是非常高的。如果處理得當,不會(huì )造成降級。那個(gè)時(shí)候百度沒(méi)有什么改版工具,很多東西基本都是靠自己的經(jīng)驗?,F在百度推出了網(wǎng)站改版工具,當您需要網(wǎng)站改版的時(shí)候,可以好好利用網(wǎng)站改版工具,減少不必要的損失。
  5.是否有作弊
  作弊行為當然包括常見(jiàn)的購買(mǎi)鏈接、黑鏈接、群發(fā)垃圾鏈接等。這些行為都是搜索引擎明令禁止的作弊行為。很有可能這個(gè)站點(diǎn)已經(jīng)被百度發(fā)現是購買(mǎi)鏈接的行為,鏈接到它的鏈接很可能會(huì )受到聯(lián)合處罰。
  6、各大搜索引擎排名
  每個(gè)搜索引擎都會(huì )有自己的一套收錄和排名規則,但是搜索引擎也會(huì )有相同的規則,比如以用戶(hù)為導向,用戶(hù)體驗好的網(wǎng)站會(huì )得到好的排名,如果你的網(wǎng)站在各種情況下的話(huà)你在搜索引擎中被降級,你的網(wǎng)站肯定有很大的問(wèn)題,而且這些問(wèn)題絕對不是一天兩天的事情,有可能你自己已經(jīng)發(fā)現了,所以你得去找及時(shí)解決這些問(wèn)題并改正。
  7、檢查服務(wù)器是否正常
  服務(wù)器的穩定性是絕對影響排名和采集
的最重要因素之一。很多網(wǎng)站經(jīng)常因為服務(wù)器不穩定而降級。這種不穩定主要體現在網(wǎng)站經(jīng)常打不開(kāi),或者只能在某些區域打開(kāi),或者打開(kāi)速度很慢,尤其是百度,非常重視服務(wù)器的穩定性。
  凡德的服務(wù)器不穩定,導致無(wú)法訪(fǎng)問(wèn)。十有八九網(wǎng)站會(huì )降級,而且宕機時(shí)間長(cháng),很難恢復到以前的狀態(tài)。當然,搜索引擎這么看重這個(gè)服務(wù)器也是正常的。因為搜索引擎是相當“用戶(hù)”的,一個(gè)用戶(hù)往往打不開(kāi)你的網(wǎng)站,那么搜索引擎把你排名上去有什么意義呢?
  用戶(hù)點(diǎn)了你的網(wǎng)站也打不開(kāi),嚴重影響用戶(hù)體驗。這嚴重違背了搜索引擎所倡導的具有良好用戶(hù)體驗的網(wǎng)站。因此,被剝奪權利也是恰當的。這個(gè)時(shí)候,我應該盡快去做?;謴筒⒋_保服務(wù)器穩定性。
  8.查看網(wǎng)站日志
  一般網(wǎng)站的服務(wù)器都會(huì )存儲每天的網(wǎng)站日志。這些日志包括用戶(hù)和搜索引擎的一些行為軌跡。從這些網(wǎng)站日志中,我們可以查看降級前后的幾天里,哪些頁(yè)面被搜索引擎蜘蛛抓取過(guò)?爬取頁(yè)面返回的信息是什么?有問(wèn)題嗎?
  目前,網(wǎng)上有相當多的網(wǎng)站日志查看工具。相信大家都知道怎么查看這個(gè)網(wǎng)站的日志。
  9、分析網(wǎng)站的外部鏈接
  因為我優(yōu)化過(guò)的SEO網(wǎng)站是改版網(wǎng)站,域名之前也優(yōu)化過(guò),所以很有可能是之前做的外鏈有問(wèn)題,所以我用百度站長(cháng)工具里的外鏈分析工具檢測并分析了外鏈,不出所料,發(fā)現了大量黃色和賭博外鏈。同時(shí)制作了大量黃色和賭博的錨文本。此類(lèi)外部鏈接有 2,000 多個(gè)。再說(shuō)說(shuō)網(wǎng)站被這種垃圾外鏈包圍會(huì )不會(huì )降級。答案將是不言而喻的,所以我將一一拒絕此類(lèi)外部鏈接。我花了將近兩天的時(shí)間。
  
  2.制定網(wǎng)站SEO策略,解決權重恢復問(wèn)題
  網(wǎng)站降級的原因找到并處理好之后,接下來(lái)就是解決恢復網(wǎng)站權重和排名的問(wèn)題了,那么一個(gè)被降級的網(wǎng)站如何恢復權重呢?這是很多站長(cháng),尤其是新手站長(cháng)每天都在站長(cháng)群里問(wèn)的問(wèn)題,也是他們最苦惱的問(wèn)題。接下來(lái),馬海翔再次以?xún)?yōu)化后的SEO網(wǎng)站為例,說(shuō)說(shuō)我是如何讓被降級的網(wǎng)站重振旗鼓的。
  1、定期定量更新網(wǎng)站原有價(jià)值內容
  網(wǎng)站內容建設的重要性已經(jīng)是老生常談了。百度官方多次強調內容質(zhì)量,并明確表示將優(yōu)先提供更優(yōu)質(zhì)、有利于用戶(hù)體驗的內容頁(yè)面。因此,我會(huì )堅持每天寫(xiě)幾篇SEO行業(yè)相關(guān)的原創(chuàng )文章,上午寫(xiě),下午發(fā)表。堅持了一段時(shí)間后,發(fā)現百度已經(jīng)開(kāi)始重新收錄了。一些長(cháng)尾關(guān)鍵詞也有排名,這是很好的體重恢復表現。
  2.優(yōu)質(zhì)外鏈建設
  與往年相比,外鏈不是很有效,但指的是一些低質(zhì)量的外鏈和一些被稱(chēng)為垃圾的外鏈。百度搜索引擎仍然更加重視高質(zhì)量的外部鏈接。權重高,那么什么是高質(zhì)量的外鏈呢?官方的標準是用戶(hù)主動(dòng)自愿給的鏈接才叫優(yōu)質(zhì)外鏈
  當時(shí)在優(yōu)化網(wǎng)站的時(shí)候,為了建設高質(zhì)量的外鏈,除了做一些相關(guān)行業(yè)的友情鏈接,馬海翔還堅持寫(xiě)了一篇跟SEO相關(guān)的文章,也跟站長(cháng)、SEO或者互聯(lián)網(wǎng)相關(guān)每天向A5站長(cháng)投稿到知名門(mén)戶(hù)網(wǎng)站如、站長(cháng)之家等,文章審核通過(guò)后將被大量轉發(fā),源源不斷帶來(lái)大量高- 優(yōu)化網(wǎng)站的優(yōu)質(zhì)外部鏈接。
  這樣不僅可以引導蜘蛛抓取網(wǎng)站,還可以增加整個(gè)網(wǎng)站的權重,提高網(wǎng)站的關(guān)鍵詞排名,對恢復權重也起到至關(guān)重要的作用。
  3、恢復網(wǎng)站權重一定要有毅力,執行力要強
  一個(gè)被剝奪權利的網(wǎng)站要想恢復,不僅要改變一些不當的優(yōu)化方式,還需要不斷重復以上兩點(diǎn):
  (1)定期、定量更新網(wǎng)站原有價(jià)值內容。
  (2) 建立高質(zhì)量的外部鏈接
  很多站長(cháng)失敗的原因就是不夠堅持。有的站長(cháng)堅持更新半個(gè)月,看網(wǎng)站沒(méi)有任何變化就放棄了。其實(shí)網(wǎng)站優(yōu)化是一個(gè)日積月累的過(guò)程,從量變到質(zhì)變。在恢復SEO站點(diǎn)權重的時(shí)候,我堅持了5個(gè)月。在這5個(gè)月的時(shí)間里,我也想過(guò)放棄,但是想了想還是要堅持做下去,這樣才能考驗自己的判斷能力,所以一直堅持了5個(gè)月,終于把網(wǎng)站做完了百花齊放,很多關(guān)鍵詞排名都很好。
  注釋?zhuān)?br />   網(wǎng)站被降級并不可怕。在我看來(lái),這是鍛煉自己,提高自身能力的最好方式。和朋友聊天的時(shí)候經(jīng)常會(huì )說(shuō)這句話(huà)。如果一個(gè)SEOer工作者沒(méi)有經(jīng)歷過(guò)網(wǎng)站降級到恢復的過(guò)程,那么你就不是一個(gè)合格的SEOer。說(shuō)實(shí)話(huà),在優(yōu)化這個(gè)SEO網(wǎng)站的過(guò)程中,從降權到恢復,我學(xué)到了很多東西。同時(shí),自身的能力也有了質(zhì)的飛躍!

推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2022-11-26 20:59 ? 來(lái)自相關(guān)話(huà)題

  推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建
  折騰了一周的網(wǎng)站陸續上線(xiàn)了。地址在這里
  本站主要匯集了一些優(yōu)秀IT博客的文章索引。用戶(hù)在這里可以看到很多全網(wǎng)大牛和牛X團隊的技術(shù)博客,可以說(shuō)干貨滿(mǎn)滿(mǎn)。
  對于本站的實(shí)現過(guò)程,分8篇來(lái)講解:
  0.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-大綱
  1.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——需求分析
  2.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——技術(shù)選型
  3、手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  4.寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——數據采集
  5.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-數據展示
  6、寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——域名申請及服務(wù)器采購
  7.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-系統上線(xiàn)
  8.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——網(wǎng)站優(yōu)化
  本文是本系列文章的第二篇:手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  項目框架搭建的基本過(guò)程其實(shí)就是最基本的spring boot項目的啟動(dòng)過(guò)程。網(wǎng)上有很多資料。下面簡(jiǎn)單介紹一下項目建設的關(guān)鍵過(guò)程。
  新項目
  使用idea新建一個(gè)maven項目,在pom.xml中引入核心依賴(lài):
  

org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import


org.springframework.boot
spring-boot-starter-data-jpa
${spring.boot.jpa.version}


org.springframework
spring-context-support
${springframework.version}



org.xerial
sqlite-jdbc
3.20.0


org.apache.commons
commons-dbcp2
2.1.1


org.hibernate
hibernate-entitymanager
5.0.3.Final


com.enigmabridge
<p>
hibernate4-sqlite-dialect
0.1.2



org.ehcache
ehcache
${ehcache.version}


net.sf.ehcache
ehcache-core
${ehcache.core.version}



org.projectlombok
lombok
compile
${lombok.version}



org.jsoup
jsoup
1.8.1



com.baidu.aip
java-sdk
4.4.1


org.springframework.boot
spring-boot-starter-test
test
${spring.boot.version}

</p>
  在之前的技術(shù)選型中提到:
  核心配置
  server.port=8081
#模版熱部署
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
#數據庫配置
spring.jpa.show-sql=true
<p>
spring.jpa.database-platform=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.jpa.generate-ddl=true
sqlite.url=jdbc:sqlite:/data/website/blog.db
#百度自然語(yǔ)言處理api調用參數
api.baidu.nlp.app.id=myAppid
api.baidu.nlp.app.key=myAppkey
api.baidu.nlp.secret.key=myKey
</p>
  sqlite數據庫配置
  數據庫使用sqlite,需要配置其數據源
  @Configuration
public class DataSourceConfiguration
{
@Value("${sqlite.url}")
private String sqliteUrl;
@Bean(destroyMethod = "", name = "EmbeddeddataSource")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.sqlite.JDBC");
dataSourceBuilder.url(sqliteUrl);
dataSourceBuilder.type(SQLiteDataSource.class);
return dataSourceBuilder.build();
}
}
  定時(shí)采集任務(wù)配置
  @Component
public class ScheduledCollect {
private Logger logger = LoggerFactory.getLogger(ScheduledCollect.class);
@Autowired
CollectorRepository collectorRepository;
@Autowired
private ApplicationContext applicationContext;
/**
* 每天夜里23點(diǎn)采集數據
**/
@Scheduled(cron="0 0 23 * * ?")
public void collect() {
List collectors = collectorRepository.findAllByState(true);
for(Collector collector :collectors){
AbstractCollect collect = (AbstractCollect) applicationContext.getBean(collector.getClassName());
logger.info("采集:{}",collector.getAuthor());
collect.collect();
}
}
}
  使用百度自然語(yǔ)言處理API對文章進(jìn)行分類(lèi)標注
  雖然主要抓取IT博客,但不排除有些博客會(huì )發(fā)布一些非技術(shù)文章,可以使用上述API對這些非技術(shù)文章進(jìn)行分類(lèi)。這里推薦百度自然語(yǔ)言處理API。騰訊等其他大公司也有類(lèi)似的API。百度的這些API沒(méi)有調用限制,只有QPS限制(不超過(guò)5個(gè)),基本可以滿(mǎn)足我的需求。百度上有很全的文檔介紹如何使用,這里就不贅述了。
  以上就是項目主體的關(guān)鍵配置和代碼,剩下的就是實(shí)現各個(gè)模塊:數據庫層、采集層、頁(yè)面等,就不一一贅述了。
  推薦文章:網(wǎng)站如何不被收錄(網(wǎng)站最近不收錄了怎么辦)
  今天我將與您分享該網(wǎng)站如何不是
  收錄
在知識中,這也將解釋如果最近沒(méi)有收錄的網(wǎng)站怎么辦,如果你能碰巧解決你現在面臨的問(wèn)題,別忘了關(guān)注這個(gè)網(wǎng)站,現在就開(kāi)始吧!
  本文目錄:
  如何解決網(wǎng)站未收錄的問(wèn)題?
  如何解決網(wǎng)站未收錄的問(wèn)題?
  一、新網(wǎng)站,一個(gè)月沒(méi)收錄
  首先,您需要消除服務(wù)器訪(fǎng)問(wèn)和攻擊緩慢的情況,其次排除網(wǎng)站上的灰色和非法內容,然后在網(wǎng)站源代碼中排除DIV+CSS的問(wèn)題。
  以上都沒(méi)問(wèn)題,那就去發(fā)外鏈,最簡(jiǎn)單的,百度搜索“超級外鏈工具”,這個(gè)是免費的。
  如果你覺(jué)得免費還不夠,你可以購買(mǎi)付費的外部鏈接,幾十美元和幾百個(gè)酒吧。
  然后你可以去百度站長(cháng)平臺提交反饋,請百度工作人員幫忙排查原因,發(fā)布首頁(yè)收錄。一般
  情況下,新網(wǎng)站的首頁(yè)一般在兩周到一個(gè)月之間收錄,如果超過(guò)一個(gè)月沒(méi)有收錄,大概率就是有問(wèn)題,如果你的外部鏈接、好友鏈接都做過(guò)了,文章也是每天按時(shí)發(fā)布的,那么基本上你可以判斷網(wǎng)站服務(wù)器, 網(wǎng)站內容、源碼這三者,肯定有問(wèn)題,那么就需要進(jìn)一步深入調查了!
  二、
  企業(yè)站已經(jīng)建了一段時(shí)間,首頁(yè)已經(jīng)收錄,但新發(fā)布的文章沒(méi)有收錄
  首先排查原因:
  網(wǎng)站是否
  修改或更改首頁(yè)關(guān)鍵詞中途,這是影響百度收錄的一個(gè)很大因素,盡量不要對網(wǎng)站做太大改動(dòng),關(guān)鍵詞要在網(wǎng)站開(kāi)頭就確定。
  企業(yè)站,基本上有一個(gè)通病,就是內容一般不持續更新或者更新次數少,導致百度抓取次數相對較少,如果抓取不及時(shí),會(huì )導致收錄緩慢或者沒(méi)有收錄。
  而且企業(yè)網(wǎng)站存在內容同質(zhì)化問(wèn)題的嚴重問(wèn)題,很多網(wǎng)站采集
復制內容,文章原創(chuàng )性差。
  3. 網(wǎng)站降級或K,內容頁(yè)面未收錄怎么辦?
  如果網(wǎng)站是
  KED或降級,首先要找出降級的原因,期間要保證網(wǎng)站能夠正常訪(fǎng)問(wèn),保證網(wǎng)站正常更新,及時(shí)提交新鏈接。
  一個(gè)好的網(wǎng)站被K處罰了,那一定是自己的問(wèn)題,百度官方后臺是記錄每個(gè)網(wǎng)站是否被處罰,可以查具體程度。
  如果首頁(yè)是K,請繼續通過(guò)內容頁(yè)面進(jìn)行補救,需要很長(cháng)時(shí)間;如果欄目或
  頻道頁(yè)面為K,請打開(kāi)其他欄目或二級域名救濟,時(shí)間較長(cháng);
  優(yōu)化網(wǎng)站還是需要形式化的方法,否則成本非常大!
  網(wǎng)站被K或降級的恢復周期一般從1個(gè)月開(kāi)始,3-6個(gè)月是正常的!
  
  4.
  網(wǎng)站新添加的聚合頁(yè)面不包括或排名聚合頁(yè)面
  想要有索引和排名,最常見(jiàn)的是標簽實(shí)踐,它通過(guò)標簽的超鏈接增加聚合頁(yè)面的權重。
  在分析了許多客戶(hù)的網(wǎng)站后,標簽頁(yè)面的收錄和排名通常優(yōu)于文章頁(yè)面。
  如果您的聚合網(wǎng)頁(yè)未編入索引和排名,則問(wèn)題可能是:
  1.標題的寫(xiě)作方式有問(wèn)題
  例如,TDK沒(méi)有設置,標題只是一堆關(guān)鍵詞或幾個(gè)關(guān)鍵詞,并沒(méi)有擴展和延伸其他相關(guān)需求。
  2、聚合頁(yè)面內容相關(guān)性低,內容質(zhì)量小
  作為聚合頁(yè)面,
  它必須需要大量的文章內容來(lái)支持,建議每個(gè)聚合頁(yè)面至少有10條內容,并且盡可能沒(méi)有空白頁(yè)。
  3.網(wǎng)站本身權重低
  網(wǎng)站的首頁(yè)沒(méi)有權限,更別說(shuō)二次聚合頁(yè)面了,建議適當交換一些內部頁(yè)面友情鏈接,最好是相關(guān),10個(gè)左右,不要太多!
  5. 企業(yè)站分類(lèi)欄目排名的SEO優(yōu)化方法
  企業(yè)網(wǎng)站的重心一般會(huì )集中在產(chǎn)品列表頁(yè),但一般來(lái)說(shuō),產(chǎn)品列表頁(yè)很難獲得比較大的流量,所以可以直接將產(chǎn)品頁(yè)面設置為首頁(yè),因為首頁(yè)的收錄會(huì )比欄目頁(yè)面快很多, 并且通過(guò)主頁(yè)上的營(yíng)銷(xiāo)頁(yè)面,有助于更快地對產(chǎn)品關(guān)鍵詞進(jìn)行排名,但應該注意的是,主頁(yè)必須始終更新!
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果收錄
網(wǎng)站的主頁(yè),
  但是不包括網(wǎng)站的內部頁(yè)面,這對網(wǎng)站優(yōu)化也是極其不利的。因為對于一個(gè)網(wǎng)站來(lái)說(shuō),搜索引擎只是一個(gè)收錄
網(wǎng)站的空殼。鑒于網(wǎng)站上頁(yè)面未收錄的情況,本文將提出幾點(diǎn)。
  一、內頁(yè)處于審核期
  搜索引擎中內頁(yè)的顯示并不意味著(zhù)百度不包括在內。有時(shí)百度可能已經(jīng)收錄
了內頁(yè),但尚未發(fā)布。因為百度收錄的文章也需要審核時(shí)間,蜘蛛抓到成功的索引內容會(huì )被錄入數據庫,這也需要兩次審核是否判斷為SPAM,然后發(fā)布和參與排名,具體的發(fā)布時(shí)間和網(wǎng)站的權重有相對直接的關(guān)系, 而百度循環(huán)更新只發(fā)布收錄在新網(wǎng)站中更為常見(jiàn)。
  解決方案:如果希望內頁(yè)盡快發(fā)布,需要保證內容定時(shí)定量更新,并對網(wǎng)站日志進(jìn)行觀(guān)察和分析。只要蜘蛛正常爬行,那么就可以靜靜等待,百度會(huì )給你驚喜。
  二、機器人設置問(wèn)題
  機器人設置還可能導致網(wǎng)站內的頁(yè)面無(wú)法被搜索引擎索引。如果機器人、搜索引擎蜘蛛在設置網(wǎng)站機器人時(shí)受到太大限制,自然搜索引擎蜘蛛就不會(huì )抓取網(wǎng)站內部的頁(yè)面。
  解決方案:檢查語(yǔ)法錯誤是否阻止爬蟲(chóng)爬行,包括元機器人和nofollow標簽。
  三、內部鏈接有問(wèn)題
  不正確的網(wǎng)站內部鏈接也會(huì )給搜索引擎爬行帶來(lái)極大的困擾。例如,如果大量的不良鏈接,不良鏈接,蜘蛛爬行順暢,或者根本無(wú)法抓取,那么這些不良URL也會(huì )導致網(wǎng)站降級。
  解決方案:百度會(huì )檢查網(wǎng)站首頁(yè)、頻道等重要頁(yè)面的錯誤鏈接,會(huì )檢查留言板、評論區等網(wǎng)友可以互動(dòng)功能的不良鏈接,因此站長(cháng)需要盡量避免不良的網(wǎng)站鏈接。
  
  4. 在網(wǎng)站內部頁(yè)面作弊
  如果網(wǎng)站的頁(yè)面是設置的,則有很多作弊方法。例如,通過(guò)設置黑色鏈接,關(guān)鍵詞堆疊等作弊方法,自然搜索引擎蜘蛛也會(huì )減少此類(lèi)頁(yè)面的抓取。
  解決方案:不做關(guān)鍵詞堆,不分組發(fā)送,不做黑鏈等黑帽行為,網(wǎng)站保持穩定,網(wǎng)站優(yōu)化是一步一步進(jìn)行的,不進(jìn)行一些作弊,那么網(wǎng)站優(yōu)化會(huì )越來(lái)越好。
  4. 與文章原創(chuàng )性的相關(guān)性
  標題標簽的設置會(huì )導致類(lèi)似的重復頁(yè)面,或者當采集
的頁(yè)面太多時(shí),百度的數據庫中已經(jīng)有大量類(lèi)似的信息并且不包括你,如果是長(cháng)期操作,會(huì )導致百度降級。
  解決方法:保持文章原創(chuàng )性(高度偽原創(chuàng ))質(zhì)量比數量更重要,最好能夠每天定時(shí)定量更新,這樣百度也有守時(shí)的好習慣。
  5. 服務(wù)器訪(fǎng)問(wèn)
  如果網(wǎng)站服務(wù)器出現問(wèn)題,例如無(wú)法訪(fǎng)問(wèn),速度慢,掛起等。當百度蜘蛛來(lái)索引內容時(shí),反復識別出網(wǎng)站有大量服務(wù)器無(wú)法訪(fǎng)問(wèn)的亂碼或遭遇,那么該網(wǎng)站也會(huì )被列入觀(guān)察名單。
  解決方案:做好網(wǎng)站代碼優(yōu)化,提高頁(yè)面閱讀速度,選擇安全空間服務(wù)商,成熟網(wǎng)站程序編碼,定期更新補丁,定期跟蹤修改文件的痕跡。
  ;
  如何防止您的網(wǎng)站被納入百度
  百度嚴格遵循搜索引擎機器人協(xié)議。用戶(hù)可以設置漫游器文件,以限制您網(wǎng)站的所有頁(yè)面或目錄中的某些頁(yè)面收錄
在百度中。
  如果系統在將“漫游器”文件設置為在以下時(shí)間后被屏蔽之前未抓取您的網(wǎng)站
  被百度編入索引后,新的 Robots 文件通常會(huì )在 48 小時(shí)內生效,生效日期后新頁(yè)面將不再編入索引。需要注意的是,機器人.txt禁止收錄
以前來(lái)自百度的內容,并且可能需要幾個(gè)月的時(shí)間才能將其從搜索結果中刪除。
  如果你拒絕收錄的需求非常緊急,可以在反饋中心反饋,百度會(huì )盡快處理。
  新手應該如何學(xué)習SEO技術(shù)? 新手快速學(xué)習SEO的———方法。
  現在很多朋友都喜歡在網(wǎng)上找視頻資料來(lái)學(xué)習SEO,但是只是看視頻而沒(méi)有人指導你,你學(xué)不到SEO技術(shù),一個(gè)人能自己學(xué)的只是皮。而且很多視頻已經(jīng)過(guò)時(shí)且無(wú)用!
  如果你想成為SEO技術(shù)大師,學(xué)習真正的SEO干貨,可以來(lái)這條裙子,前面是192,中間是586,最后是795!這里有最新的網(wǎng)站優(yōu)化課程免費學(xué)習也有很多人指導你進(jìn)步,不需要你付出任何代價(jià),只要你真的想學(xué),隨便看就不要加,加也是浪費大家的時(shí)間。
  如何將網(wǎng)站設置為禁止抓取工具收錄
  1.網(wǎng)站建好了,當然我們希望搜索引擎收錄的網(wǎng)頁(yè)越多越好,但有時(shí)候我們也會(huì )遇到網(wǎng)站不需要被搜索引擎收錄的情況。要啟用新域名作為鏡像網(wǎng)站,主要用于PPC推廣,此時(shí),我們必須找到一種方法來(lái)防止搜索引擎蜘蛛抓取和索引我們鏡像網(wǎng)站的所有頁(yè)面。因為如果鏡像網(wǎng)站也收錄
在搜索引擎中,很可能會(huì )影響官方網(wǎng)站在搜索引擎中的權威性。
  2.阻止主流搜索引擎爬蟲(chóng)(蜘蛛)抓取/索引/索引網(wǎng)頁(yè)的幾種想法。這是一個(gè)全站范圍的封鎖,是盡可能屏蔽主流搜索引擎的所有爬蟲(chóng)。
  3、通過(guò)機器人.txt
  文件篩選,可以說(shuō)機器人.txt文件是最重要的渠道(可以與搜索引擎建立直接對話(huà))。要阻止元標記,請將以下語(yǔ)句添加到頁(yè)面的所有頭文件中:meta name=“robots” content=“noindex, nofollow”。直接通過(guò)服務(wù)器(例如 Linux/nginx)配置文件設置過(guò)濾蜘蛛/機器人的 IP 范圍。
  這是
  最后介紹網(wǎng)站如何不包括,如果網(wǎng)站最近沒(méi)有收錄怎么辦,不知道你是否從中找到你需要的信息?如果您仍然想了解更多信息,請記住關(guān)注此網(wǎng)站。 查看全部

  推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建
  折騰了一周的網(wǎng)站陸續上線(xiàn)了。地址在這里
  本站主要匯集了一些優(yōu)秀IT博客的文章索引。用戶(hù)在這里可以看到很多全網(wǎng)大牛和牛X團隊的技術(shù)博客,可以說(shuō)干貨滿(mǎn)滿(mǎn)。
  對于本站的實(shí)現過(guò)程,分8篇來(lái)講解:
  0.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-大綱
  1.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——需求分析
  2.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——技術(shù)選型
  3、手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  4.寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——數據采集
  5.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-數據展示
  6、寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——域名申請及服務(wù)器采購
  7.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-系統上線(xiàn)
  8.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——網(wǎng)站優(yōu)化
  本文是本系列文章的第二篇:手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  項目框架搭建的基本過(guò)程其實(shí)就是最基本的spring boot項目的啟動(dòng)過(guò)程。網(wǎng)上有很多資料。下面簡(jiǎn)單介紹一下項目建設的關(guān)鍵過(guò)程。
  新項目
  使用idea新建一個(gè)maven項目,在pom.xml中引入核心依賴(lài):
  

org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import


org.springframework.boot
spring-boot-starter-data-jpa
${spring.boot.jpa.version}


org.springframework
spring-context-support
${springframework.version}



org.xerial
sqlite-jdbc
3.20.0


org.apache.commons
commons-dbcp2
2.1.1


org.hibernate
hibernate-entitymanager
5.0.3.Final


com.enigmabridge
<p>
hibernate4-sqlite-dialect
0.1.2



org.ehcache
ehcache
${ehcache.version}


net.sf.ehcache
ehcache-core
${ehcache.core.version}



org.projectlombok
lombok
compile
${lombok.version}



org.jsoup
jsoup
1.8.1



com.baidu.aip
java-sdk
4.4.1


org.springframework.boot
spring-boot-starter-test
test
${spring.boot.version}

</p>
  在之前的技術(shù)選型中提到:
  核心配置
  server.port=8081
#模版熱部署
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
#數據庫配置
spring.jpa.show-sql=true
<p>
spring.jpa.database-platform=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.jpa.generate-ddl=true
sqlite.url=jdbc:sqlite:/data/website/blog.db
#百度自然語(yǔ)言處理api調用參數
api.baidu.nlp.app.id=myAppid
api.baidu.nlp.app.key=myAppkey
api.baidu.nlp.secret.key=myKey
</p>
  sqlite數據庫配置
  數據庫使用sqlite,需要配置其數據源
  @Configuration
public class DataSourceConfiguration
{
@Value("${sqlite.url}")
private String sqliteUrl;
@Bean(destroyMethod = "", name = "EmbeddeddataSource")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.sqlite.JDBC");
dataSourceBuilder.url(sqliteUrl);
dataSourceBuilder.type(SQLiteDataSource.class);
return dataSourceBuilder.build();
}
}
  定時(shí)采集任務(wù)配置
  @Component
public class ScheduledCollect {
private Logger logger = LoggerFactory.getLogger(ScheduledCollect.class);
@Autowired
CollectorRepository collectorRepository;
@Autowired
private ApplicationContext applicationContext;
/**
* 每天夜里23點(diǎn)采集數據
**/
@Scheduled(cron="0 0 23 * * ?")
public void collect() {
List collectors = collectorRepository.findAllByState(true);
for(Collector collector :collectors){
AbstractCollect collect = (AbstractCollect) applicationContext.getBean(collector.getClassName());
logger.info("采集:{}",collector.getAuthor());
collect.collect();
}
}
}
  使用百度自然語(yǔ)言處理API對文章進(jìn)行分類(lèi)標注
  雖然主要抓取IT博客,但不排除有些博客會(huì )發(fā)布一些非技術(shù)文章,可以使用上述API對這些非技術(shù)文章進(jìn)行分類(lèi)。這里推薦百度自然語(yǔ)言處理API。騰訊等其他大公司也有類(lèi)似的API。百度的這些API沒(méi)有調用限制,只有QPS限制(不超過(guò)5個(gè)),基本可以滿(mǎn)足我的需求。百度上有很全的文檔介紹如何使用,這里就不贅述了。
  以上就是項目主體的關(guān)鍵配置和代碼,剩下的就是實(shí)現各個(gè)模塊:數據庫層、采集層、頁(yè)面等,就不一一贅述了。
  推薦文章:網(wǎng)站如何不被收錄(網(wǎng)站最近不收錄了怎么辦)
  今天我將與您分享該網(wǎng)站如何不是
  收錄
在知識中,這也將解釋如果最近沒(méi)有收錄的網(wǎng)站怎么辦,如果你能碰巧解決你現在面臨的問(wèn)題,別忘了關(guān)注這個(gè)網(wǎng)站,現在就開(kāi)始吧!
  本文目錄:
  如何解決網(wǎng)站未收錄的問(wèn)題?
  如何解決網(wǎng)站未收錄的問(wèn)題?
  一、新網(wǎng)站,一個(gè)月沒(méi)收錄
  首先,您需要消除服務(wù)器訪(fǎng)問(wèn)和攻擊緩慢的情況,其次排除網(wǎng)站上的灰色和非法內容,然后在網(wǎng)站源代碼中排除DIV+CSS的問(wèn)題。
  以上都沒(méi)問(wèn)題,那就去發(fā)外鏈,最簡(jiǎn)單的,百度搜索“超級外鏈工具”,這個(gè)是免費的。
  如果你覺(jué)得免費還不夠,你可以購買(mǎi)付費的外部鏈接,幾十美元和幾百個(gè)酒吧。
  然后你可以去百度站長(cháng)平臺提交反饋,請百度工作人員幫忙排查原因,發(fā)布首頁(yè)收錄。一般
  情況下,新網(wǎng)站的首頁(yè)一般在兩周到一個(gè)月之間收錄,如果超過(guò)一個(gè)月沒(méi)有收錄,大概率就是有問(wèn)題,如果你的外部鏈接、好友鏈接都做過(guò)了,文章也是每天按時(shí)發(fā)布的,那么基本上你可以判斷網(wǎng)站服務(wù)器, 網(wǎng)站內容、源碼這三者,肯定有問(wèn)題,那么就需要進(jìn)一步深入調查了!
  二、
  企業(yè)站已經(jīng)建了一段時(shí)間,首頁(yè)已經(jīng)收錄,但新發(fā)布的文章沒(méi)有收錄
  首先排查原因:
  網(wǎng)站是否
  修改或更改首頁(yè)關(guān)鍵詞中途,這是影響百度收錄的一個(gè)很大因素,盡量不要對網(wǎng)站做太大改動(dòng),關(guān)鍵詞要在網(wǎng)站開(kāi)頭就確定。
  企業(yè)站,基本上有一個(gè)通病,就是內容一般不持續更新或者更新次數少,導致百度抓取次數相對較少,如果抓取不及時(shí),會(huì )導致收錄緩慢或者沒(méi)有收錄。
  而且企業(yè)網(wǎng)站存在內容同質(zhì)化問(wèn)題的嚴重問(wèn)題,很多網(wǎng)站采集
復制內容,文章原創(chuàng )性差。
  3. 網(wǎng)站降級或K,內容頁(yè)面未收錄怎么辦?
  如果網(wǎng)站是
  KED或降級,首先要找出降級的原因,期間要保證網(wǎng)站能夠正常訪(fǎng)問(wèn),保證網(wǎng)站正常更新,及時(shí)提交新鏈接。
  一個(gè)好的網(wǎng)站被K處罰了,那一定是自己的問(wèn)題,百度官方后臺是記錄每個(gè)網(wǎng)站是否被處罰,可以查具體程度。
  如果首頁(yè)是K,請繼續通過(guò)內容頁(yè)面進(jìn)行補救,需要很長(cháng)時(shí)間;如果欄目或
  頻道頁(yè)面為K,請打開(kāi)其他欄目或二級域名救濟,時(shí)間較長(cháng);
  優(yōu)化網(wǎng)站還是需要形式化的方法,否則成本非常大!
  網(wǎng)站被K或降級的恢復周期一般從1個(gè)月開(kāi)始,3-6個(gè)月是正常的!
  
  4.
  網(wǎng)站新添加的聚合頁(yè)面不包括或排名聚合頁(yè)面
  想要有索引和排名,最常見(jiàn)的是標簽實(shí)踐,它通過(guò)標簽的超鏈接增加聚合頁(yè)面的權重。
  在分析了許多客戶(hù)的網(wǎng)站后,標簽頁(yè)面的收錄和排名通常優(yōu)于文章頁(yè)面。
  如果您的聚合網(wǎng)頁(yè)未編入索引和排名,則問(wèn)題可能是:
  1.標題的寫(xiě)作方式有問(wèn)題
  例如,TDK沒(méi)有設置,標題只是一堆關(guān)鍵詞或幾個(gè)關(guān)鍵詞,并沒(méi)有擴展和延伸其他相關(guān)需求。
  2、聚合頁(yè)面內容相關(guān)性低,內容質(zhì)量小
  作為聚合頁(yè)面,
  它必須需要大量的文章內容來(lái)支持,建議每個(gè)聚合頁(yè)面至少有10條內容,并且盡可能沒(méi)有空白頁(yè)。
  3.網(wǎng)站本身權重低
  網(wǎng)站的首頁(yè)沒(méi)有權限,更別說(shuō)二次聚合頁(yè)面了,建議適當交換一些內部頁(yè)面友情鏈接,最好是相關(guān),10個(gè)左右,不要太多!
  5. 企業(yè)站分類(lèi)欄目排名的SEO優(yōu)化方法
  企業(yè)網(wǎng)站的重心一般會(huì )集中在產(chǎn)品列表頁(yè),但一般來(lái)說(shuō),產(chǎn)品列表頁(yè)很難獲得比較大的流量,所以可以直接將產(chǎn)品頁(yè)面設置為首頁(yè),因為首頁(yè)的收錄會(huì )比欄目頁(yè)面快很多, 并且通過(guò)主頁(yè)上的營(yíng)銷(xiāo)頁(yè)面,有助于更快地對產(chǎn)品關(guān)鍵詞進(jìn)行排名,但應該注意的是,主頁(yè)必須始終更新!
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果收錄
網(wǎng)站的主頁(yè),
  但是不包括網(wǎng)站的內部頁(yè)面,這對網(wǎng)站優(yōu)化也是極其不利的。因為對于一個(gè)網(wǎng)站來(lái)說(shuō),搜索引擎只是一個(gè)收錄
網(wǎng)站的空殼。鑒于網(wǎng)站上頁(yè)面未收錄的情況,本文將提出幾點(diǎn)。
  一、內頁(yè)處于審核期
  搜索引擎中內頁(yè)的顯示并不意味著(zhù)百度不包括在內。有時(shí)百度可能已經(jīng)收錄
了內頁(yè),但尚未發(fā)布。因為百度收錄的文章也需要審核時(shí)間,蜘蛛抓到成功的索引內容會(huì )被錄入數據庫,這也需要兩次審核是否判斷為SPAM,然后發(fā)布和參與排名,具體的發(fā)布時(shí)間和網(wǎng)站的權重有相對直接的關(guān)系, 而百度循環(huán)更新只發(fā)布收錄在新網(wǎng)站中更為常見(jiàn)。
  解決方案:如果希望內頁(yè)盡快發(fā)布,需要保證內容定時(shí)定量更新,并對網(wǎng)站日志進(jìn)行觀(guān)察和分析。只要蜘蛛正常爬行,那么就可以靜靜等待,百度會(huì )給你驚喜。
  二、機器人設置問(wèn)題
  機器人設置還可能導致網(wǎng)站內的頁(yè)面無(wú)法被搜索引擎索引。如果機器人、搜索引擎蜘蛛在設置網(wǎng)站機器人時(shí)受到太大限制,自然搜索引擎蜘蛛就不會(huì )抓取網(wǎng)站內部的頁(yè)面。
  解決方案:檢查語(yǔ)法錯誤是否阻止爬蟲(chóng)爬行,包括元機器人和nofollow標簽。
  三、內部鏈接有問(wèn)題
  不正確的網(wǎng)站內部鏈接也會(huì )給搜索引擎爬行帶來(lái)極大的困擾。例如,如果大量的不良鏈接,不良鏈接,蜘蛛爬行順暢,或者根本無(wú)法抓取,那么這些不良URL也會(huì )導致網(wǎng)站降級。
  解決方案:百度會(huì )檢查網(wǎng)站首頁(yè)、頻道等重要頁(yè)面的錯誤鏈接,會(huì )檢查留言板、評論區等網(wǎng)友可以互動(dòng)功能的不良鏈接,因此站長(cháng)需要盡量避免不良的網(wǎng)站鏈接。
  
  4. 在網(wǎng)站內部頁(yè)面作弊
  如果網(wǎng)站的頁(yè)面是設置的,則有很多作弊方法。例如,通過(guò)設置黑色鏈接,關(guān)鍵詞堆疊等作弊方法,自然搜索引擎蜘蛛也會(huì )減少此類(lèi)頁(yè)面的抓取。
  解決方案:不做關(guān)鍵詞堆,不分組發(fā)送,不做黑鏈等黑帽行為,網(wǎng)站保持穩定,網(wǎng)站優(yōu)化是一步一步進(jìn)行的,不進(jìn)行一些作弊,那么網(wǎng)站優(yōu)化會(huì )越來(lái)越好。
  4. 與文章原創(chuàng )性的相關(guān)性
  標題標簽的設置會(huì )導致類(lèi)似的重復頁(yè)面,或者當采集
的頁(yè)面太多時(shí),百度的數據庫中已經(jīng)有大量類(lèi)似的信息并且不包括你,如果是長(cháng)期操作,會(huì )導致百度降級。
  解決方法:保持文章原創(chuàng )性(高度偽原創(chuàng ))質(zhì)量比數量更重要,最好能夠每天定時(shí)定量更新,這樣百度也有守時(shí)的好習慣。
  5. 服務(wù)器訪(fǎng)問(wèn)
  如果網(wǎng)站服務(wù)器出現問(wèn)題,例如無(wú)法訪(fǎng)問(wèn),速度慢,掛起等。當百度蜘蛛來(lái)索引內容時(shí),反復識別出網(wǎng)站有大量服務(wù)器無(wú)法訪(fǎng)問(wèn)的亂碼或遭遇,那么該網(wǎng)站也會(huì )被列入觀(guān)察名單。
  解決方案:做好網(wǎng)站代碼優(yōu)化,提高頁(yè)面閱讀速度,選擇安全空間服務(wù)商,成熟網(wǎng)站程序編碼,定期更新補丁,定期跟蹤修改文件的痕跡。
  ;
  如何防止您的網(wǎng)站被納入百度
  百度嚴格遵循搜索引擎機器人協(xié)議。用戶(hù)可以設置漫游器文件,以限制您網(wǎng)站的所有頁(yè)面或目錄中的某些頁(yè)面收錄
在百度中。
  如果系統在將“漫游器”文件設置為在以下時(shí)間后被屏蔽之前未抓取您的網(wǎng)站
  被百度編入索引后,新的 Robots 文件通常會(huì )在 48 小時(shí)內生效,生效日期后新頁(yè)面將不再編入索引。需要注意的是,機器人.txt禁止收錄
以前來(lái)自百度的內容,并且可能需要幾個(gè)月的時(shí)間才能將其從搜索結果中刪除。
  如果你拒絕收錄的需求非常緊急,可以在反饋中心反饋,百度會(huì )盡快處理。
  新手應該如何學(xué)習SEO技術(shù)? 新手快速學(xué)習SEO的———方法。
  現在很多朋友都喜歡在網(wǎng)上找視頻資料來(lái)學(xué)習SEO,但是只是看視頻而沒(méi)有人指導你,你學(xué)不到SEO技術(shù),一個(gè)人能自己學(xué)的只是皮。而且很多視頻已經(jīng)過(guò)時(shí)且無(wú)用!
  如果你想成為SEO技術(shù)大師,學(xué)習真正的SEO干貨,可以來(lái)這條裙子,前面是192,中間是586,最后是795!這里有最新的網(wǎng)站優(yōu)化課程免費學(xué)習也有很多人指導你進(jìn)步,不需要你付出任何代價(jià),只要你真的想學(xué),隨便看就不要加,加也是浪費大家的時(shí)間。
  如何將網(wǎng)站設置為禁止抓取工具收錄
  1.網(wǎng)站建好了,當然我們希望搜索引擎收錄的網(wǎng)頁(yè)越多越好,但有時(shí)候我們也會(huì )遇到網(wǎng)站不需要被搜索引擎收錄的情況。要啟用新域名作為鏡像網(wǎng)站,主要用于PPC推廣,此時(shí),我們必須找到一種方法來(lái)防止搜索引擎蜘蛛抓取和索引我們鏡像網(wǎng)站的所有頁(yè)面。因為如果鏡像網(wǎng)站也收錄
在搜索引擎中,很可能會(huì )影響官方網(wǎng)站在搜索引擎中的權威性。
  2.阻止主流搜索引擎爬蟲(chóng)(蜘蛛)抓取/索引/索引網(wǎng)頁(yè)的幾種想法。這是一個(gè)全站范圍的封鎖,是盡可能屏蔽主流搜索引擎的所有爬蟲(chóng)。
  3、通過(guò)機器人.txt
  文件篩選,可以說(shuō)機器人.txt文件是最重要的渠道(可以與搜索引擎建立直接對話(huà))。要阻止元標記,請將以下語(yǔ)句添加到頁(yè)面的所有頭文件中:meta name=“robots” content=“noindex, nofollow”。直接通過(guò)服務(wù)器(例如 Linux/nginx)配置文件設置過(guò)濾蜘蛛/機器人的 IP 范圍。
  這是
  最后介紹網(wǎng)站如何不包括,如果網(wǎng)站最近沒(méi)有收錄怎么辦,不知道你是否從中找到你需要的信息?如果您仍然想了解更多信息,請記住關(guān)注此網(wǎng)站。

教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 139 次瀏覽 ? 2022-11-26 12:39 ? 來(lái)自相關(guān)話(huà)題

  教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法
  大家好,我是三分鐘學(xué)院公眾號郭麗媛~
  本期我們就來(lái)聊一聊button post的寫(xiě)法。我們希望通過(guò)對這個(gè)問(wèn)題的研究,可以寫(xiě)出常見(jiàn)的投稿。
  下面開(kāi)始解釋?zhuān)?br />   1.使用的命令:url.httppost
  之所以選擇這條命令,是因為它的參數比較齊全。
  2、post請求的參數有哪些(可能會(huì )用到,不是全部)
 ?、賣(mài)rl 提交請求的URL
 ?、谡埱髷祿簆ost的核心參數就是向服務(wù)器發(fā)送什么數據
 ?、踙eader 協(xié)議頭,協(xié)議頭中的參數:
  Content-Type:內容類(lèi)型
  字符集:編碼
  
  User-Agent:設備信息,用戶(hù)代理,用來(lái)偽裝成瀏覽器或其他
 ?、躢ookie:我理解為緩存,在本地存儲一些數據,就像我們登錄一個(gè)網(wǎng)站,第一次登錄后,第二次打開(kāi)網(wǎng)站發(fā)現自動(dòng)登錄了,這個(gè)跟餅干。
  這些是常用的參數。當我寫(xiě)post請求時(shí),我不會(huì )寫(xiě)所有的。根據不同的項目,我省略了能省略的。
  3.不同類(lèi)型的腳本執行貼
 ?、?連接到指定的api。這種post請求是按照api文檔的要求寫(xiě)的。寫(xiě)任何你需要的參數。通常,這種類(lèi)型的一些參數可以省略。
 ?、趨f(xié)議抓包,通過(guò)抓包工具獲取的post數據,此類(lèi)post請求需要填寫(xiě)所有參數。
  4.寫(xiě)post請求的腳本注意事項
  請求數據的類(lèi)型,常見(jiàn)的有3種腳本類(lèi)型
  提交字符串,提交表單,提交json
  具體的提交類(lèi)型取決于Content-Type,例如
  Content-Type application/json
  這個(gè)就是提交json格式的,這個(gè)很重要。如果選擇錯誤的類(lèi)型,即使數據正確,也不會(huì )提交成功。
  
  投稿種類(lèi)較多,請注意不要填錯。
  五、post請求碼顯示
  Dim uri = "網(wǎng)址"
Dim data = "" //參數格式根據Content-Type來(lái)定
Dim header ={"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 ", "Content-Type":"application/json"}
Dim cookie=""
Dim ret = Url.HttpPost({"url":uri,"data":data,"code":"UTF-8", "cookie":cookie, "header":header})
TracePrint ret
  這個(gè)模板可以直接套用,大部分post請求都可以完成。
  為了防止腳本的post請求因為寫(xiě)錯而不能正常運行,我們還可以使用在線(xiàn)post測試工具來(lái)測試我們提交的數據是否正確。
  所有這些網(wǎng)站都很好。測試順利完成后,就可以放心編寫(xiě)腳本了。
  關(guān)鍵詞 文章采集 教程:dedeCMS插件-dedeCMS插件大全
  什么是dedeCMS插件,
  顧名思義,dedeCMS插件是搜索引擎優(yōu)化過(guò)程中使用的輔助插件。而很多SEO朋友不知道如何使用dedeCMS插件?今天,博主將教您借助免費的dedeCMS插件快速提高網(wǎng)站包容性和關(guān)鍵詞排名。其實(shí)網(wǎng)站SEO優(yōu)化并不是很難做到的,只要你理清思路,掌握正確的優(yōu)化方法和技巧,不斷探索和研究,你一定能做好網(wǎng)站SEO優(yōu)化。
  使用免費的dedeCMS創(chuàng )建大量?jì)热?br />   1. 通過(guò)dedeCMS生成行業(yè)關(guān)鍵詞,從下拉詞、相關(guān)搜索詞和長(cháng)尾詞關(guān)鍵詞。您可以設置自動(dòng)移除不相關(guān)的字詞。根據文章的關(guān)鍵詞集合,可以創(chuàng )建不同的網(wǎng)站欄目來(lái)采集
不同的關(guān)鍵詞文章,并支持不同的域名集合。
  2.自動(dòng)過(guò)濾和采集
文章中其他網(wǎng)站的信息
  3.支持多平臺源采集(覆蓋全網(wǎng)行業(yè)新聞源,海量?jì)热輲?,采集最新內容)?br />   4.支持在其他平臺上進(jìn)行圖像本地化或存儲
  5.自動(dòng)掛機采集
!它可以在本地采集
,也可以通過(guò)軟件設置自動(dòng)更新到網(wǎng)站,每更新的文章都會(huì )自動(dòng)推送到搜索引擎。促進(jìn)網(wǎng)站包容性
  
  詳細說(shuō)明:如果一個(gè)網(wǎng)站想要大量的流量,它需要大量的關(guān)鍵詞排名。網(wǎng)站頁(yè)面上有限的關(guān)鍵詞需要大量的關(guān)鍵詞頁(yè)面,大量的關(guān)鍵詞需要大量的關(guān)鍵詞文章。
  二、dedeCMS插件-SEO優(yōu)化功能提供頁(yè)面原創(chuàng )性
  1.標題后綴設置(實(shí)現標題差異化和更好的收錄)。
  2.內容關(guān)鍵詞插入(增加關(guān)鍵詞密度以提高關(guān)鍵詞排名)。
  3.自動(dòng)圖片匹配(當文章沒(méi)有被工具圖片時(shí)實(shí)現自動(dòng)圖片匹配)。
  4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送到搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄)。
  5.隨機點(diǎn)贊-隨機閱讀-隨機作者(提高頁(yè)面原創(chuàng )性,增強用戶(hù)體驗)。6.內容與標題
  一致(使內容與標題100%相關(guān),提高排名)。
  7.自動(dòng)內部鏈接(文章內容自動(dòng)生成內部鏈接的功能,有助于引導頁(yè)面蜘蛛抓取,提高頁(yè)面權限)。
  8.定期發(fā)布(定期發(fā)布網(wǎng)站內容可以讓搜索引擎養成定期抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄率)。
  詳細說(shuō)明:通過(guò)上述SEO優(yōu)化功能提高網(wǎng)站頁(yè)面的原創(chuàng )性,以及增加網(wǎng)頁(yè)關(guān)鍵詞密度,吸引蜘蛛抓取更多頁(yè)面,并給予關(guān)鍵詞更高的排名。
  C. 免費 dedeCMS - 批量管理網(wǎng)站
  
  1.批量監控不同的CMS網(wǎng)站數據(無(wú)論您的網(wǎng)站是帝國、易游、ZBLOG、dedeCMS、WP、小旋風(fēng)、站群、PB、蘋(píng)果、索威等各大CMS,都可以同時(shí)批量監控管理和發(fā)布工具)。
  2.設置批量發(fā)布次數(可以設置發(fā)布時(shí)間/單日發(fā)布總數)。
  3.可以設置不同關(guān)鍵詞的文章發(fā)布不同的欄目
  4.偽原創(chuàng )保留字(將文章原創(chuàng )時(shí)的核心詞設置為不偽原創(chuàng ))。
  5.軟件直接監控發(fā)布,待發(fā)布,是否是偽原創(chuàng ),發(fā)布狀態(tài),URL,程序,發(fā)布時(shí)間等
  6.通過(guò)軟件,可以直接查看每日蜘蛛,索引和網(wǎng)站權限!
  詳細說(shuō)明:批量監控管理網(wǎng)站,省去了每個(gè)網(wǎng)站登錄后查看數據的需要,讓數據在插件工具中一目了然。
  要使網(wǎng)站
  注重方法和效率,還要不斷優(yōu)化問(wèn)題的細節,通過(guò)免費的dedeCMS插件工具可以節省很多時(shí)間把問(wèn)題的其他細節做得更好,只有這樣網(wǎng)站的排名流量才會(huì )上升得更快!看完這篇文章,如果你覺(jué)得不錯,不妨采集
或者發(fā)給需要的朋友和同事,每天關(guān)注博主帶你了解各種SEO經(jīng)驗,打通你的仁都兩條脈絡(luò )! 查看全部

  教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法
  大家好,我是三分鐘學(xué)院公眾號郭麗媛~
  本期我們就來(lái)聊一聊button post的寫(xiě)法。我們希望通過(guò)對這個(gè)問(wèn)題的研究,可以寫(xiě)出常見(jiàn)的投稿。
  下面開(kāi)始解釋?zhuān)?br />   1.使用的命令:url.httppost
  之所以選擇這條命令,是因為它的參數比較齊全。
  2、post請求的參數有哪些(可能會(huì )用到,不是全部)
 ?、賣(mài)rl 提交請求的URL
 ?、谡埱髷祿簆ost的核心參數就是向服務(wù)器發(fā)送什么數據
 ?、踙eader 協(xié)議頭,協(xié)議頭中的參數:
  Content-Type:內容類(lèi)型
  字符集:編碼
  
  User-Agent:設備信息,用戶(hù)代理,用來(lái)偽裝成瀏覽器或其他
 ?、躢ookie:我理解為緩存,在本地存儲一些數據,就像我們登錄一個(gè)網(wǎng)站,第一次登錄后,第二次打開(kāi)網(wǎng)站發(fā)現自動(dòng)登錄了,這個(gè)跟餅干。
  這些是常用的參數。當我寫(xiě)post請求時(shí),我不會(huì )寫(xiě)所有的。根據不同的項目,我省略了能省略的。
  3.不同類(lèi)型的腳本執行貼
 ?、?連接到指定的api。這種post請求是按照api文檔的要求寫(xiě)的。寫(xiě)任何你需要的參數。通常,這種類(lèi)型的一些參數可以省略。
 ?、趨f(xié)議抓包,通過(guò)抓包工具獲取的post數據,此類(lèi)post請求需要填寫(xiě)所有參數。
  4.寫(xiě)post請求的腳本注意事項
  請求數據的類(lèi)型,常見(jiàn)的有3種腳本類(lèi)型
  提交字符串,提交表單,提交json
  具體的提交類(lèi)型取決于Content-Type,例如
  Content-Type application/json
  這個(gè)就是提交json格式的,這個(gè)很重要。如果選擇錯誤的類(lèi)型,即使數據正確,也不會(huì )提交成功。
  
  投稿種類(lèi)較多,請注意不要填錯。
  五、post請求碼顯示
  Dim uri = "網(wǎng)址"
Dim data = "" //參數格式根據Content-Type來(lái)定
Dim header ={"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 ", "Content-Type":"application/json"}
Dim cookie=""
Dim ret = Url.HttpPost({"url":uri,"data":data,"code":"UTF-8", "cookie":cookie, "header":header})
TracePrint ret
  這個(gè)模板可以直接套用,大部分post請求都可以完成。
  為了防止腳本的post請求因為寫(xiě)錯而不能正常運行,我們還可以使用在線(xiàn)post測試工具來(lái)測試我們提交的數據是否正確。
  所有這些網(wǎng)站都很好。測試順利完成后,就可以放心編寫(xiě)腳本了。
  關(guān)鍵詞 文章采集 教程:dedeCMS插件-dedeCMS插件大全
  什么是dedeCMS插件,
  顧名思義,dedeCMS插件是搜索引擎優(yōu)化過(guò)程中使用的輔助插件。而很多SEO朋友不知道如何使用dedeCMS插件?今天,博主將教您借助免費的dedeCMS插件快速提高網(wǎng)站包容性和關(guān)鍵詞排名。其實(shí)網(wǎng)站SEO優(yōu)化并不是很難做到的,只要你理清思路,掌握正確的優(yōu)化方法和技巧,不斷探索和研究,你一定能做好網(wǎng)站SEO優(yōu)化。
  使用免費的dedeCMS創(chuàng )建大量?jì)热?br />   1. 通過(guò)dedeCMS生成行業(yè)關(guān)鍵詞,從下拉詞、相關(guān)搜索詞和長(cháng)尾詞關(guān)鍵詞。您可以設置自動(dòng)移除不相關(guān)的字詞。根據文章的關(guān)鍵詞集合,可以創(chuàng )建不同的網(wǎng)站欄目來(lái)采集
不同的關(guān)鍵詞文章,并支持不同的域名集合。
  2.自動(dòng)過(guò)濾和采集
文章中其他網(wǎng)站的信息
  3.支持多平臺源采集(覆蓋全網(wǎng)行業(yè)新聞源,海量?jì)热輲?,采集最新內容)?br />   4.支持在其他平臺上進(jìn)行圖像本地化或存儲
  5.自動(dòng)掛機采集
!它可以在本地采集
,也可以通過(guò)軟件設置自動(dòng)更新到網(wǎng)站,每更新的文章都會(huì )自動(dòng)推送到搜索引擎。促進(jìn)網(wǎng)站包容性
  
  詳細說(shuō)明:如果一個(gè)網(wǎng)站想要大量的流量,它需要大量的關(guān)鍵詞排名。網(wǎng)站頁(yè)面上有限的關(guān)鍵詞需要大量的關(guān)鍵詞頁(yè)面,大量的關(guān)鍵詞需要大量的關(guān)鍵詞文章。
  二、dedeCMS插件-SEO優(yōu)化功能提供頁(yè)面原創(chuàng )性
  1.標題后綴設置(實(shí)現標題差異化和更好的收錄)。
  2.內容關(guān)鍵詞插入(增加關(guān)鍵詞密度以提高關(guān)鍵詞排名)。
  3.自動(dòng)圖片匹配(當文章沒(méi)有被工具圖片時(shí)實(shí)現自動(dòng)圖片匹配)。
  4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送到搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄)。
  5.隨機點(diǎn)贊-隨機閱讀-隨機作者(提高頁(yè)面原創(chuàng )性,增強用戶(hù)體驗)。6.內容與標題
  一致(使內容與標題100%相關(guān),提高排名)。
  7.自動(dòng)內部鏈接(文章內容自動(dòng)生成內部鏈接的功能,有助于引導頁(yè)面蜘蛛抓取,提高頁(yè)面權限)。
  8.定期發(fā)布(定期發(fā)布網(wǎng)站內容可以讓搜索引擎養成定期抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄率)。
  詳細說(shuō)明:通過(guò)上述SEO優(yōu)化功能提高網(wǎng)站頁(yè)面的原創(chuàng )性,以及增加網(wǎng)頁(yè)關(guān)鍵詞密度,吸引蜘蛛抓取更多頁(yè)面,并給予關(guān)鍵詞更高的排名。
  C. 免費 dedeCMS - 批量管理網(wǎng)站
  
  1.批量監控不同的CMS網(wǎng)站數據(無(wú)論您的網(wǎng)站是帝國、易游、ZBLOG、dedeCMS、WP、小旋風(fēng)、站群、PB、蘋(píng)果、索威等各大CMS,都可以同時(shí)批量監控管理和發(fā)布工具)。
  2.設置批量發(fā)布次數(可以設置發(fā)布時(shí)間/單日發(fā)布總數)。
  3.可以設置不同關(guān)鍵詞的文章發(fā)布不同的欄目
  4.偽原創(chuàng )保留字(將文章原創(chuàng )時(shí)的核心詞設置為不偽原創(chuàng ))。
  5.軟件直接監控發(fā)布,待發(fā)布,是否是偽原創(chuàng ),發(fā)布狀態(tài),URL,程序,發(fā)布時(shí)間等
  6.通過(guò)軟件,可以直接查看每日蜘蛛,索引和網(wǎng)站權限!
  詳細說(shuō)明:批量監控管理網(wǎng)站,省去了每個(gè)網(wǎng)站登錄后查看數據的需要,讓數據在插件工具中一目了然。
  要使網(wǎng)站
  注重方法和效率,還要不斷優(yōu)化問(wèn)題的細節,通過(guò)免費的dedeCMS插件工具可以節省很多時(shí)間把問(wèn)題的其他細節做得更好,只有這樣網(wǎng)站的排名流量才會(huì )上升得更快!看完這篇文章,如果你覺(jué)得不錯,不妨采集
或者發(fā)給需要的朋友和同事,每天關(guān)注博主帶你了解各種SEO經(jīng)驗,打通你的仁都兩條脈絡(luò )!

推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2022-11-24 21:39 ? 來(lái)自相關(guān)話(huà)題

  推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅
  請參考源碼,文字為第一思路,未作進(jìn)一步改動(dòng)。要更新的源代碼
  前期準備:requests庫:使用pip install requests進(jìn)行安裝。
  pymongo 庫:使用 pip install pymongo 安裝。
  先分析目標url:
  這個(gè)url的規律很好找。通過(guò)改變索引后面的數字,我們可以翻頁(yè),遍歷所有頁(yè)面。
  然后我們查看網(wǎng)頁(yè)源代碼,發(fā)現html頁(yè)面中保存鏈接和新聞標題的部分,還有時(shí)間。
  發(fā)現li標簽下保存了我們需要的所有信息,這里我們可以使用正則表達式獲取我們需要的所有信息(title, link, date)
<p>pattern = re.compile(r&#39; 查看全部

  推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅
  請參考源碼,文字為第一思路,未作進(jìn)一步改動(dòng)。要更新的源代碼
  前期準備:requests庫:使用pip install requests進(jìn)行安裝。
  pymongo 庫:使用 pip install pymongo 安裝。
  先分析目標url:
  這個(gè)url的規律很好找。通過(guò)改變索引后面的數字,我們可以翻頁(yè),遍歷所有頁(yè)面。
  然后我們查看網(wǎng)頁(yè)源代碼,發(fā)現html頁(yè)面中保存鏈接和新聞標題的部分,還有時(shí)間。
  發(fā)現li標簽下保存了我們需要的所有信息,這里我們可以使用正則表達式獲取我們需要的所有信息(title, link, date)
<p>pattern = re.compile(r&#39;

解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云 采集器發(fā)布模塊

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 120 次瀏覽 ? 2022-11-24 17:50 ? 來(lái)自相關(guān)話(huà)題

  解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云
采集器發(fā)布模塊
  新版Z-Blog1.7已經(jīng)發(fā)布有一段時(shí)間了。新版本自帶api接口,可以用來(lái)開(kāi)發(fā)小程序和發(fā)布文章。今天教大家如何使用優(yōu)采云
調用這個(gè)api來(lái)發(fā)布文章。首先需要啟用API協(xié)議,加入后臺,點(diǎn)擊網(wǎng)站設置---API設置,如下圖:
  要使用此 API,您需要獲取身份驗證令牌。獲取方法非常簡(jiǎn)單。將以下代碼保存為cs.php,上傳到服務(wù)器瀏覽器打開(kāi)生成token。令牌是一個(gè)長(cháng)字符串。請注意,代碼中有三個(gè)地方需要更改為您的。
  下載我提供的release模塊(Z-Blog1.7使用官方api release module 3.12),在寫(xiě)采集規則的時(shí)候添加免登錄密碼字段(或者直接新建采集規則導入release模塊)并填寫(xiě)上面剛才生成的免登錄密碼字段的值。
  優(yōu)采云
采集
器釋放模塊標簽說(shuō)明,
  參考資料: 新版Z-Blog1.7使用api發(fā)布文章示例PHP版
  注:沒(méi)有標題重復檢測,只是使用官方API接口發(fā)布文章。這兒存在一個(gè)問(wèn)題。如果token錯誤,會(huì )提示非法操作。每次采集都要重新獲取token很麻煩,所以推薦使用《Z-Blog免登錄采集發(fā)布評論教程+插件3.2下載+支持最新的Z-Blog1.7》 .
  Z-Blog免登錄采集
發(fā)布評論教程+插件3.2下載+支持最新Z-Blog1.7
  解讀:悲了!文章采集免費現在還存在這般的解析角度!
  看到本文內容不要驚訝,因為本文由考拉SEO平臺批量編輯,僅用于SEO引流。使用Kaola SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
  我很抱歉!現在您進(jìn)入當前文章時(shí),您可能獲得的文章不收錄
文章采集
的免費回復。這是因為這篇文章是我們工具站自動(dòng)編寫(xiě)的流量落地頁(yè)。如果你對這個(gè)AI寫(xiě)的文章內容有好感,那就先放棄免費收文這件事,我來(lái)教你如何通過(guò)軟件一天寫(xiě)一萬(wàn)篇引流好文章!大部分朋友看了我們的廣告都以為這是偽原創(chuàng )劇本,大錯特錯!其實(shí)本站是一個(gè)原創(chuàng )工具,內容和范文都是大家自己創(chuàng )作的。很難在網(wǎng)上看到與導出文章相同程度的相似度。工作。我們究竟是如何創(chuàng )建它的?下面,本站就為您解析!
  
  想要結識免費收文的客戶(hù),其實(shí)大家關(guān)心的也是上面討論的話(huà)題。其實(shí)創(chuàng )造幾篇好的搜索文章很簡(jiǎn)單,但是一篇文章能創(chuàng )造的流量實(shí)在是微不足道。期待用新聞版面來(lái)達到引流的目的,最重要的策略就是自動(dòng)化!如果 1 一篇 SEO 文章可以產(chǎn)生一個(gè)訪(fǎng)問(wèn)者(每 24 小時(shí))。如果我們能寫(xiě)10000篇文章,平均每天可以增加10000個(gè)用戶(hù)。但是簡(jiǎn)單來(lái)說(shuō),其實(shí)我寫(xiě)的時(shí)候24小時(shí)只能出30篇左右,再厲害也只能出70篇左右。如果應用到偽原創(chuàng )工具上,也就只有百篇文章的樣子了!看完這篇,
  什么是seo認可的原創(chuàng )性?原創(chuàng )文案不僅僅等于關(guān)鍵詞一一原創(chuàng )輸出!在各種搜索引擎的程序定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的段落。按道理來(lái)說(shuō),如果你的文章和其他網(wǎng)頁(yè)的內容不一樣,那么被抓取的幾率就會(huì )大大增加。一篇高質(zhì)量的文案,內容吸睛十足,保持相同的目標詞,只要沒(méi)有雷同的段落,就意味著(zhù)這篇文章被搜索引擎抓取的概率很高,甚至成為一擊。就像小編的文章,你大概是免費搜索神馬的文章,然后點(diǎn)擊查看,告訴大家:
  
  本系統的自動(dòng)化原創(chuàng )軟件,準確的說(shuō)應該是一款原創(chuàng )文章工具,可以實(shí)現一天上千篇優(yōu)質(zhì)網(wǎng)站網(wǎng)頁(yè)文章的撰寫(xiě)。我們的網(wǎng)站權重通常足夠高,索引率可以高達80%。一般的使用,在用戶(hù)中心都有視頻介紹和新手指南,大家不妨多試一試!非常抱歉沒(méi)有免費為大家帶來(lái)文章合集的詳細內容。但是如果你對這款產(chǎn)品感興趣,不妨點(diǎn)擊一下導航欄,這樣我們的優(yōu)化結果每天都會(huì )增加幾萬(wàn)個(gè)UV,是不是很美味呢? 查看全部

  解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云
采集器發(fā)布模塊
  新版Z-Blog1.7已經(jīng)發(fā)布有一段時(shí)間了。新版本自帶api接口,可以用來(lái)開(kāi)發(fā)小程序和發(fā)布文章。今天教大家如何使用優(yōu)采云
調用這個(gè)api來(lái)發(fā)布文章。首先需要啟用API協(xié)議,加入后臺,點(diǎn)擊網(wǎng)站設置---API設置,如下圖:
  要使用此 API,您需要獲取身份驗證令牌。獲取方法非常簡(jiǎn)單。將以下代碼保存為cs.php,上傳到服務(wù)器瀏覽器打開(kāi)生成token。令牌是一個(gè)長(cháng)字符串。請注意,代碼中有三個(gè)地方需要更改為您的。
  下載我提供的release模塊(Z-Blog1.7使用官方api release module 3.12),在寫(xiě)采集規則的時(shí)候添加免登錄密碼字段(或者直接新建采集規則導入release模塊)并填寫(xiě)上面剛才生成的免登錄密碼字段的值。
  優(yōu)采云
采集
器釋放模塊標簽說(shuō)明,
  參考資料: 新版Z-Blog1.7使用api發(fā)布文章示例PHP版
  注:沒(méi)有標題重復檢測,只是使用官方API接口發(fā)布文章。這兒存在一個(gè)問(wèn)題。如果token錯誤,會(huì )提示非法操作。每次采集都要重新獲取token很麻煩,所以推薦使用《Z-Blog免登錄采集發(fā)布評論教程+插件3.2下載+支持最新的Z-Blog1.7》 .
  Z-Blog免登錄采集
發(fā)布評論教程+插件3.2下載+支持最新Z-Blog1.7
  解讀:悲了!文章采集免費現在還存在這般的解析角度!
  看到本文內容不要驚訝,因為本文由考拉SEO平臺批量編輯,僅用于SEO引流。使用Kaola SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
  我很抱歉!現在您進(jìn)入當前文章時(shí),您可能獲得的文章不收錄
文章采集
的免費回復。這是因為這篇文章是我們工具站自動(dòng)編寫(xiě)的流量落地頁(yè)。如果你對這個(gè)AI寫(xiě)的文章內容有好感,那就先放棄免費收文這件事,我來(lái)教你如何通過(guò)軟件一天寫(xiě)一萬(wàn)篇引流好文章!大部分朋友看了我們的廣告都以為這是偽原創(chuàng )劇本,大錯特錯!其實(shí)本站是一個(gè)原創(chuàng )工具,內容和范文都是大家自己創(chuàng )作的。很難在網(wǎng)上看到與導出文章相同程度的相似度。工作。我們究竟是如何創(chuàng )建它的?下面,本站就為您解析!
  
  想要結識免費收文的客戶(hù),其實(shí)大家關(guān)心的也是上面討論的話(huà)題。其實(shí)創(chuàng )造幾篇好的搜索文章很簡(jiǎn)單,但是一篇文章能創(chuàng )造的流量實(shí)在是微不足道。期待用新聞版面來(lái)達到引流的目的,最重要的策略就是自動(dòng)化!如果 1 一篇 SEO 文章可以產(chǎn)生一個(gè)訪(fǎng)問(wèn)者(每 24 小時(shí))。如果我們能寫(xiě)10000篇文章,平均每天可以增加10000個(gè)用戶(hù)。但是簡(jiǎn)單來(lái)說(shuō),其實(shí)我寫(xiě)的時(shí)候24小時(shí)只能出30篇左右,再厲害也只能出70篇左右。如果應用到偽原創(chuàng )工具上,也就只有百篇文章的樣子了!看完這篇,
  什么是seo認可的原創(chuàng )性?原創(chuàng )文案不僅僅等于關(guān)鍵詞一一原創(chuàng )輸出!在各種搜索引擎的程序定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的段落。按道理來(lái)說(shuō),如果你的文章和其他網(wǎng)頁(yè)的內容不一樣,那么被抓取的幾率就會(huì )大大增加。一篇高質(zhì)量的文案,內容吸睛十足,保持相同的目標詞,只要沒(méi)有雷同的段落,就意味著(zhù)這篇文章被搜索引擎抓取的概率很高,甚至成為一擊。就像小編的文章,你大概是免費搜索神馬的文章,然后點(diǎn)擊查看,告訴大家:
  
  本系統的自動(dòng)化原創(chuàng )軟件,準確的說(shuō)應該是一款原創(chuàng )文章工具,可以實(shí)現一天上千篇優(yōu)質(zhì)網(wǎng)站網(wǎng)頁(yè)文章的撰寫(xiě)。我們的網(wǎng)站權重通常足夠高,索引率可以高達80%。一般的使用,在用戶(hù)中心都有視頻介紹和新手指南,大家不妨多試一試!非常抱歉沒(méi)有免費為大家帶來(lái)文章合集的詳細內容。但是如果你對這款產(chǎn)品感興趣,不妨點(diǎn)擊一下導航欄,這樣我們的優(yōu)化結果每天都會(huì )增加幾萬(wàn)個(gè)UV,是不是很美味呢?

解決方案:埋點(diǎn)數據采集和應用生命周期

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 113 次瀏覽 ? 2022-11-24 02:24 ? 來(lái)自相關(guān)話(huà)題

  解決方案:埋點(diǎn)數據采集和應用生命周期
  埋地數據采集
和應用程序生命周期
  作者介紹
  @hrd-0.618 (徐凡)
  新網(wǎng)銀行數據分析師。
  專(zhuān)注于數據分析、埋點(diǎn)采集和用戶(hù)行為分析、BI數據可視化。
  “數據人類(lèi)創(chuàng )造者聯(lián)盟”成員。
  1 背景介紹
  產(chǎn)品的精細化運營(yíng)、千人個(gè)性化推薦等各類(lèi)業(yè)務(wù),都依賴(lài)于標準化、高質(zhì)量的嵌入式數據。但埋點(diǎn)數據的上傳、解析、存儲、分析整個(gè)過(guò)程耗時(shí)長(cháng),需要多團隊協(xié)作。為了讓有興趣的讀者有一個(gè)整體的了解,本節將結合工作實(shí)踐和應用生命周期重點(diǎn)介紹H5埋點(diǎn)數據采集。
  2 埋點(diǎn)采集內容
  3 埋點(diǎn)數據流
  3.1 向日志采集服務(wù)發(fā)送數據
  前端+后端--&gt;日志采集服務(wù)
  前后端數據以類(lèi)json格式實(shí)時(shí)異步發(fā)送到日志采集服務(wù)進(jìn)行分析。
  3.1.1 用戶(hù)事件:user
  {data:[{userid: 用戶(hù)唯一ID, equipment: {//header, 包括瀏覽器、設備、網(wǎng)絡(luò )等 equipment_os: 操作系統, equipment_os_version: 操作系統版本, equipment_brand: 品牌...}, location: {gps :{gps_lon: 經(jīng)度, gps_lat: 緯度, gps_country: gps 國家, gps_province: gps 省, gps_city: gps 城市, gps_district: gps 區}, ip:{...}}}] , time: 時(shí)間, cookie: 序列號, event_type :user ,from:{ channel:channel,product:product} }
  3.1.2 頁(yè)面事件:page
  {data:[{ page_id: 頁(yè)面ID, page_name: 頁(yè)面名稱(chēng), page_url: 頁(yè)面url, src_page_url: 源頁(yè)面url }] , time: 時(shí)間, cookie: 序列號, event_type: page , from: { channel: 頻道, product:產(chǎn)品} }
  3.1.4 接口事件:interface
  {data:[{ interface_id: 接口ID, interface_name: 接口名稱(chēng), result: 接口調用結果, result_remarks: 接口調用描述, response_time: 接口響應時(shí)長(cháng)}], start_time: 接口調用開(kāi)始時(shí)間, end_time: 接口調用結束時(shí)間, cookie : 序列號, event_type: interface, from: { channel: channel, product: product} }
  3.2 實(shí)時(shí)數倉建模
  日志采集服務(wù)--&gt;實(shí)時(shí)數倉(kafka)
  
  3.2.1 基本字段處理
  一個(gè)。分析日志采集服務(wù)采集到的四個(gè)事件的json數據,得到四個(gè)事件的基本字段,實(shí)時(shí)寫(xiě)入到kafka消息隊列的四個(gè)主題中。
  b. 通過(guò)Flink/StreamSQL,實(shí)時(shí)或微批量消費4條topic數據,存儲在4張HBase表中。
  3.2.2 將用戶(hù)事件鏈接到行為事件
  消費用戶(hù)事件主題,根據序列碼cookie將用戶(hù)信息與行為信息相關(guān)聯(lián),構建實(shí)時(shí)用戶(hù)行為寬表。
  3.3 離線(xiàn)數據倉庫建模
  3.3.1 粘貼源層
  通過(guò) ETL 提取 4 個(gè)事件 HBase 表。
  3.3.2 模型層
  根據源層4個(gè)事件的序列碼cookie,將用戶(hù)信息與行為信息相關(guān)聯(lián),構建離線(xiàn)用戶(hù)行為寬表。
  4 埋點(diǎn)數據應用
  4.1.1 用戶(hù)行為
  根據實(shí)時(shí)用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)到實(shí)時(shí)的用戶(hù)行為記錄。
  根據線(xiàn)下用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)線(xiàn)下用戶(hù)行為記錄。
  4.1.2 用戶(hù)行為統計
  根據四大事件主題數據,結合用戶(hù)行為指標體系,通過(guò)聚合統計分析方法,得到不同維度的用戶(hù)行為指標。
  頁(yè)面級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  維度類(lèi)型:頁(yè)面/段/頻道
  可視字段:頻道名稱(chēng)、鏈接、頁(yè)面名稱(chēng)、PV、UV、訪(fǎng)問(wèn)用戶(hù)數、平均停留時(shí)間、頁(yè)面跳出次數、頁(yè)面跳出率
  
  按鈕級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  4.1.3 用戶(hù)留存分析
  方面:
  數據日期:2021-08-02
  頻道名稱(chēng):如“xxx”,無(wú)摘要
  用戶(hù)類(lèi)別:摘要,新用戶(hù)
  數據類(lèi)型:留存數、留存率
  產(chǎn)品層級,以及留存人數的選擇
  選擇保留的產(chǎn)品級別
  功能層面:比如美團APP對使用“單車(chē)”功能的用戶(hù)進(jìn)行留存分析。
  4.1.4 用戶(hù)行為標簽及客戶(hù)群體篩選
  構建用戶(hù)行為標簽,篩選目標客戶(hù)群。
  根據客戶(hù)的實(shí)時(shí)/線(xiàn)下業(yè)務(wù)狀態(tài),當滿(mǎn)足一定的行為特征時(shí),為業(yè)務(wù)人員篩選出不同的目標客戶(hù)群,通過(guò)營(yíng)銷(xiāo)平臺以不同的方式觸達。
  針對產(chǎn)品品類(lèi)較少的企業(yè),將不同場(chǎng)景的客群實(shí)時(shí)推送給業(yè)務(wù)人員,并與營(yíng)銷(xiāo)平臺聯(lián)動(dòng),精準營(yíng)銷(xiāo)。
  當然,對于產(chǎn)品品類(lèi)較多的企業(yè),比如電商相關(guān)場(chǎng)景,基于用戶(hù)行為構建實(shí)時(shí)推薦系統是行業(yè)主流。
  4.1.5 基于用戶(hù)行為斷點(diǎn)
  可以結合實(shí)時(shí)和線(xiàn)下的用戶(hù)行為和業(yè)務(wù)狀態(tài),為有行為斷點(diǎn)的用戶(hù)進(jìn)行外呼或其他方式。
  5 結論
  本文主要結合實(shí)際工作中的一些經(jīng)驗做一個(gè)簡(jiǎn)單的概述。埋點(diǎn)采集主要是代碼埋點(diǎn),人工維護成本比較高。未來(lái)可以結合實(shí)際場(chǎng)景更好的采集
行業(yè)內的數據;用戶(hù)行為分析也需要逐步完善。,歡迎大家批評指正,有興趣的朋友可以聯(lián)系我一起討論。
  解決方案:大規模分布式鏈路分析計算在字節跳動(dòng)的實(shí)踐
  一、概述
  微服務(wù)架構的快速發(fā)展使得分布式鏈路跟蹤系統成為觀(guān)測系統中越來(lái)越重要的組成部分。經(jīng)過(guò)幾年的發(fā)展,字節跳動(dòng)的分布式鏈路追蹤系統已經(jīng)覆蓋了字節跳動(dòng)的大部分在線(xiàn)業(yè)務(wù),完成了數萬(wàn)個(gè)微服務(wù)和數百萬(wàn)微服務(wù)實(shí)例的在線(xiàn)鏈路追蹤。在經(jīng)典的指標觀(guān)察分析和單請求鏈路跟蹤的基礎上,如何從浩瀚的分布式鏈路數據中進(jìn)一步挖掘更高層次的信息,為業(yè)務(wù)架構優(yōu)化、服務(wù)治理、成本等場(chǎng)景提供服務(wù)優(yōu)化。提供更高效的數據支持,成為下一步亟待解決的問(wèn)題。
  本次分享主要介紹了我們構建海量鏈路數據分析計算系統的實(shí)踐經(jīng)驗,以及一些具體的落地場(chǎng)景。
  2. 可觀(guān)察性和鏈接追蹤
  2.1 基本概念
  為了方便讀者更好地理解“鏈接分析”,我們先來(lái)說(shuō)說(shuō)什么是“可觀(guān)察性”和“鏈接跟蹤”。已經(jīng)熟悉“可觀(guān)察性”和“鏈接追蹤”概念的讀者可以跳過(guò)本章。
  隨著(zhù)微服務(wù)架構的快速發(fā)展,軟件系統正在從單一的應用發(fā)展為由大量微服務(wù)節點(diǎn)組成的復雜應用。為了更好地管理和控制復雜的軟件系統,“可觀(guān)察性”工具變得越來(lái)越重要??捎^(guān)察性工具建立在可觀(guān)察性數據的基礎上,一般包括以下幾個(gè)部分:Link Tracking Trace、Logging、Timing Metrics、Code-level Profiling、Event Event和與元數據相關(guān)的CMDB等。
  為了幫助大家對可觀(guān)察性工具有更直觀(guān)的體驗,這里舉例說(shuō)明如何基于可觀(guān)察性工具解決工作中的實(shí)際問(wèn)題:某服務(wù)告警通知值班人員的故障率在增加,點(diǎn)擊Correlate到error indicator對應的Trace,在Trace中定位到錯誤的來(lái)源,查看源頭的關(guān)鍵異常日志和代碼棧,發(fā)現源頭的報錯服務(wù)正在執行變更操作,所以基本定位到這個(gè)變化很可能是導致這個(gè)失敗的原因。有了高質(zhì)量的可觀(guān)測性數據和工具,一個(gè)對系統不是很熟悉的值班人員也可以快速完成對本次故障的排查和止損。
  分布式鏈路追蹤(Trace)是可觀(guān)測系統的組成部分之一。Trace從狹義上講是對單個(gè)請求的詳細跟蹤,記錄請求在每個(gè)環(huán)節的調用關(guān)系,耗時(shí),以及各種詳細的標簽和事件。同時(shí)Trace也起到了鏈接各種可觀(guān)察性數據的作用,即同一個(gè)Request Context的數據載體。分布式請求上的各類(lèi)信息(Metrics/Logs..)通過(guò)Trace可靠關(guān)聯(lián),進(jìn)而可以構建各種可觀(guān)察性數據的上下滾動(dòng)鉆取的跳轉功能。
  2.2 字節鏈接跟蹤系統
  經(jīng)過(guò)幾年的發(fā)展,字節鏈接跟蹤系統現已覆蓋公司大部分在線(xiàn)業(yè)務(wù)。整體開(kāi)發(fā)流程如下:
  2019年:Trace 1.0完成Trace組件能力建設。
  2020年:Trace 2.0實(shí)現Metrics/Trace/Log的融合,升級數據協(xié)議和技術(shù)架構,開(kāi)始打造一站式觀(guān)測平臺Argos。
  2021年:實(shí)現與字節跳動(dòng)大部分主流框架組件的默認集成,微服務(wù)在公司所有業(yè)務(wù)線(xiàn)的覆蓋率&gt;80%。
  2022:構建和探索場(chǎng)景化、智能化的場(chǎng)景,比如本次分享聊天中的“鏈接分析”。
  Byte Link Tracker 當前狀態(tài)數據(2022 年 10 月):
  覆蓋范圍:50,000 多個(gè)微服務(wù)/FAAS,300 萬(wàn)多個(gè)容器實(shí)例。
  使用:每日UV 6,000+,每日PV 40,000+。
  吞吐量:跨度數 2000 萬(wàn)+/s(默認 0.1% 采樣)。
  資源配比:100+ CPU核心支持100萬(wàn)Span/s。
  SDK性能:?jiǎn)尉€(xiàn)程40w Span/s。
  查詢(xún)性能:TraceID 枚舉 P50 &lt; 100 ms,P99 &lt; 500 ms。
  數據生成到可檢索延遲:AVG &lt; 1 分鐘,P99 &lt; 2 分鐘。
  存儲資源:10 PB(3 個(gè)副本 TTL 15 天)。
  字節鏈追蹤系統從數據接入端、消費存儲端、查詢(xún)平臺端的整體架構如下圖所示。更多詳情請閱讀之前的分享。上次的分享比較詳細地介紹了如何從零到一搭建分布式鏈路跟蹤系統。本文主要講鏈路跟蹤系統中的鏈路聚合計算和分析部分。
  3.鏈接分析技術(shù)實(shí)踐
  3.1 需求場(chǎng)景
  經(jīng)常使用Trace的同學(xué)可能對Trace的印象是通過(guò)TraceID或者一些Tags可以檢索到一個(gè)或者一些Traces,然后從Trace數據中仔細查看詳細的調用traces和各種Tags來(lái)分析一些具體的問(wèn)題,比如為什么一個(gè)請求很慢,或者請求出錯的原因。
  但是我們也面臨著(zhù)一些更高層次的問(wèn)題,比如面對一個(gè)不斷變化的復雜微服務(wù)系統:
  
  這些問(wèn)題的答案很難通過(guò)人工一條一條地查看跡線(xiàn)來(lái)獲得可靠的結果。但是,它可以從大量的Trace數據中自動(dòng)計算出來(lái),為最終的決策提供可靠的數據支持。我們稱(chēng)這種大量蹤跡鏈接分析的聚合計算。
  3.2 基本原則
  鏈路分析的基本原理是聚合計算大量的跡線(xiàn)。一般遵循MapReduce計算模型。在這個(gè)過(guò)程中,可能會(huì )結合一些訂閱規則和其他數據,得到計算結果,然后應用到具體的場(chǎng)景應用中。
  3.3 技術(shù)架構
  適用于大量鏈路數據的聚合計算的可選模式主要有三種,即基于在線(xiàn)數據流的流式計算、基于離線(xiàn)數據流從在線(xiàn)存儲中查詢(xún)有限蹤跡后的即興(抽樣)計算。bins的離線(xiàn)計算。這三種計算方式的特點(diǎn)分析如下表所示。
  在分析了三種聚合計算模式的特點(diǎn)之后,分析了鏈路分析場(chǎng)景所面臨的技術(shù)需求。
  基于以上分析,我們認為沒(méi)有一種計算模型可以解決所有問(wèn)題,所以我們最終選擇的技術(shù)方案是流式、即興、離線(xiàn)一體化的技術(shù)方案:基于統一的基礎數據模型和邏輯算子,支持三種不同的計算引擎,滿(mǎn)足不同的場(chǎng)景需求。
  在實(shí)施該方案的過(guò)程中,我們總結了一些有益的實(shí)踐經(jīng)驗:
  Trace本身的數據結構比較復雜,其分析計算邏輯往往具有一定的復雜性。算子和引擎的分離,便于將同一個(gè)邏輯算子應用到不同的計算引擎上,可以更好的提高研發(fā)效率和代碼可維護性。例如,性能瓶頸分析相關(guān)的算法既可以用于即興計算,也可以用于離線(xiàn)計算。
  Trace數據往往存在一些數據不規則性,比如超高維的接口名稱(chēng),導致聚合后的數據維度遠超預期,影響計算任務(wù)的穩定性。自動(dòng)化的異常數據發(fā)現和封禁或降級機制可以起到更好的保護作用。
  盡量保留聚合分析結果對應的具有代表性的原創(chuàng )
(極端)Trace樣本,可以提高分析結果的可解釋性和用戶(hù)信任度。
  大數據計算成本高,非基礎功能可采用按需訂閱模式提高ROI;構建任務(wù)靈活降級能力,資源緊張時(shí)優(yōu)先保證高頻基礎功能的高可用。
  4.鏈路分析實(shí)現場(chǎng)景
  介紹完鏈接分析的底層技術(shù)架構,我們再介紹一些具體的實(shí)現場(chǎng)景。
  4.1 精確鏈路拓撲計算
  鏈路分析中使用頻率最高、使用場(chǎng)景最廣的就是鏈路拓撲的計算。這里所說(shuō)的“鏈路拓撲”是指進(jìn)入任意一個(gè)服務(wù)節點(diǎn),獲取所有流經(jīng)該節點(diǎn)的trace的聚合路徑,從而清楚地知道該服務(wù)節點(diǎn)的上下游依賴(lài)拓撲。
  由于字節微服務(wù)數量眾多,中端和基礎服務(wù)種類(lèi)繁多,調用關(guān)系相對復雜,因此我們進(jìn)行拓撲計算的目標是:
  舉例說(shuō)明什么是精度要求:如下圖,“抖音.X”和“火山.Y”都調用“中臺.Z”,但對于“抖音.X”的流量,“中臺. Z" "會(huì )用到"Redis.Volcano",而"中臺.Z"會(huì )用到"Redis.Volcano"給"Volcano.Y"的流量,所以實(shí)際上沒(méi)有"抖音.X"和"Redis.Volcano" ”直接依賴(lài)。那么當我們搜索“Douyin.X”時(shí),想要的拓撲是[“Douyin.X”,“Zhongtai.Z”,“Redis.Douyin”]而不是“Redis.Volcano”。
  舉例說(shuō)明什么是靈活性需求:如下圖,不僅可以根據入口檢索拓撲,還可以根據中間節點(diǎn)“Zhongtai.Z”或存儲組件檢索拓撲節點(diǎn)“Redis.抖音”;不僅可以按照服務(wù)+接口的粒度檢索拓撲,還可以按照服務(wù)粒度、服務(wù)+集群粒度、服務(wù)+機房粒度等其他粒度進(jìn)行檢索。
  面對這樣的技術(shù)需求,我們研究了業(yè)界現有的一些拓撲計算方案:
  結合字節場(chǎng)景的實(shí)際需求,權衡準確率、成本和檢索速度,我們最終設計了新的方案。
  精確的鏈路拓撲具有廣泛的應用場(chǎng)景。下面是一些具體的例子:
  4.2 全鏈路流量估算
  全鏈路流量預估主要回答的問(wèn)題是:
  
  全鏈路流量估計是在精確拓撲計算的基礎上實(shí)現的,因此也采用流計算來(lái)估計每條路徑上的蹤跡數以及蹤跡對應的采樣率數據。計算結果的格式如下圖所示。每個(gè)拓撲中的每個(gè)邊都對應于一個(gè)估計的流量和流量比?;谶@樣的數據,我們可以針對任何微服務(wù)接口給出上述兩個(gè)問(wèn)題的答案。
  全鏈路流量預估的主要應用場(chǎng)景如下:
  4.3 強弱依賴(lài)分析
  強弱依賴(lài)信息是服務(wù)穩定性治理場(chǎng)景的重要數據支撐,也可以通過(guò)在線(xiàn)Trace數據自動(dòng)計算。
  強依賴(lài):當異常發(fā)生時(shí),影響核心業(yè)務(wù)流程和系統可用性的依賴(lài)稱(chēng)為強依賴(lài)。
  弱依賴(lài):當異常發(fā)生時(shí),不影響核心業(yè)務(wù)流程,不影響系統可用性的依賴(lài)稱(chēng)為弱依賴(lài)。
  如下圖所示,當A調用B失敗時(shí),如果A仍能成功響應其Client,則B為A的弱依賴(lài);當A調用B失敗時(shí),如果A不能成功響應它的Client,那么B就是A依賴(lài)的強依賴(lài)。
  強弱依賴(lài)計算的技術(shù)目標包括:
  為了盡可能滿(mǎn)足數據的完整性和時(shí)效性要求,我們選擇了流式計算方式,從數據流中選擇Trace with Error來(lái)計算強弱依賴(lài)。需要注意的是,短期的實(shí)時(shí)數據樣本往往是不夠的,需要結合歷史積累的數據進(jìn)行聯(lián)合判斷才能下結論。
  強弱依賴(lài)分析的主要挑戰:
  強弱依賴(lài)分析的主要應用場(chǎng)景包括:
  4.4 全鏈路性能反模式分析
  在實(shí)踐中,我們觀(guān)察到有一些非常典型的性能反模式問(wèn)題,可以從Trace數據中自動(dòng)發(fā)現。常見(jiàn)的性能反模式包括:
  性能反模式問(wèn)題的發(fā)現也有以下兩個(gè)要求:
  因此,性能反模式分析任務(wù)需要自動(dòng)發(fā)現最嚴重的反模式問(wèn)題,給出極值樣本,并關(guān)聯(lián)這些問(wèn)題所在路徑的流量和入口優(yōu)先級,幫助業(yè)務(wù)優(yōu)化延遲和服務(wù)成本。盡早解決與它們相關(guān)的潛在穩定性風(fēng)險。
  4.5 全鏈路性能瓶頸分析
  單個(gè)請求的分布式跟蹤視圖清晰直接,但局限性在于觀(guān)察者無(wú)法確定單個(gè)請求呈現的跟蹤模式是普遍現象還是特殊現象。因此,從大量Trace數據中分析鏈路性能瓶頸,找出整體性能模式和worst case樣本,也是鏈路分析的需求場(chǎng)景。
  鏈路性能模式是從批量跟蹤中聚合和計算的,滿(mǎn)足臨時(shí)模式和離線(xiàn)模式的要求。在即興模式下,可滿(mǎn)足篩選任意時(shí)間段、靈活條件(多種標簽、耗時(shí)區間)的批次痕跡,快速獲得分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整地分析全量Trace數據的整體性能模式,觀(guān)察長(cháng)期趨勢的需求。因此,我們將在即興和離線(xiàn)計算模式下重用鏈路性能分析聚合算子。
  分析結果示例:
  4.6 誤差傳播鏈分析
  單個(gè)Error Trace可以觀(guān)察到一條錯誤傳播路徑,但觀(guān)察者無(wú)法確認一條錯誤傳播路徑是否一定代表了一個(gè)普遍問(wèn)題,也無(wú)法回答錯誤傳播的影響。因此聚合大量的Error Trace來(lái)分析整體的錯誤來(lái)源、傳播路徑、影響面也是鏈路分析的需求場(chǎng)景。
  與鏈路性能分析類(lèi)似,錯誤傳播路徑是從批量跟蹤中聚合和計算的,這在臨時(shí)模式和離線(xiàn)模式下都是必需的。我們還將錯誤傳播鏈分析算子應用于臨時(shí)和離線(xiàn)計算模式。Ad hoc模式可以滿(mǎn)足任意時(shí)間段、靈活條件(各種標簽)批量過(guò)濾Error Trace的需求,快速得到聚合分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整的全量Error Trace數據聚合分析需求,觀(guān)察長(cháng)期趨勢,助力業(yè)務(wù)長(cháng)期穩定優(yōu)化。
  分析結果示例:
  五、總結與展望
  本文主要介紹在從零到一建立鏈路追蹤基礎能力后,如何聚合分析海量鏈路數據,回答更高層次的場(chǎng)景化問(wèn)題。我們分享了我們具體的技術(shù)選型過(guò)程和實(shí)施技術(shù)架構,以及一些成功的實(shí)施案例。 查看全部

  解決方案:埋點(diǎn)數據采集和應用生命周期
  埋地數據采集
和應用程序生命周期
  作者介紹
  @hrd-0.618 (徐凡)
  新網(wǎng)銀行數據分析師。
  專(zhuān)注于數據分析、埋點(diǎn)采集和用戶(hù)行為分析、BI數據可視化。
  “數據人類(lèi)創(chuàng )造者聯(lián)盟”成員。
  1 背景介紹
  產(chǎn)品的精細化運營(yíng)、千人個(gè)性化推薦等各類(lèi)業(yè)務(wù),都依賴(lài)于標準化、高質(zhì)量的嵌入式數據。但埋點(diǎn)數據的上傳、解析、存儲、分析整個(gè)過(guò)程耗時(shí)長(cháng),需要多團隊協(xié)作。為了讓有興趣的讀者有一個(gè)整體的了解,本節將結合工作實(shí)踐和應用生命周期重點(diǎn)介紹H5埋點(diǎn)數據采集。
  2 埋點(diǎn)采集內容
  3 埋點(diǎn)數據流
  3.1 向日志采集服務(wù)發(fā)送數據
  前端+后端--&gt;日志采集服務(wù)
  前后端數據以類(lèi)json格式實(shí)時(shí)異步發(fā)送到日志采集服務(wù)進(jìn)行分析。
  3.1.1 用戶(hù)事件:user
  {data:[{userid: 用戶(hù)唯一ID, equipment: {//header, 包括瀏覽器、設備、網(wǎng)絡(luò )等 equipment_os: 操作系統, equipment_os_version: 操作系統版本, equipment_brand: 品牌...}, location: {gps :{gps_lon: 經(jīng)度, gps_lat: 緯度, gps_country: gps 國家, gps_province: gps 省, gps_city: gps 城市, gps_district: gps 區}, ip:{...}}}] , time: 時(shí)間, cookie: 序列號, event_type :user ,from:{ channel:channel,product:product} }
  3.1.2 頁(yè)面事件:page
  {data:[{ page_id: 頁(yè)面ID, page_name: 頁(yè)面名稱(chēng), page_url: 頁(yè)面url, src_page_url: 源頁(yè)面url }] , time: 時(shí)間, cookie: 序列號, event_type: page , from: { channel: 頻道, product:產(chǎn)品} }
  3.1.4 接口事件:interface
  {data:[{ interface_id: 接口ID, interface_name: 接口名稱(chēng), result: 接口調用結果, result_remarks: 接口調用描述, response_time: 接口響應時(shí)長(cháng)}], start_time: 接口調用開(kāi)始時(shí)間, end_time: 接口調用結束時(shí)間, cookie : 序列號, event_type: interface, from: { channel: channel, product: product} }
  3.2 實(shí)時(shí)數倉建模
  日志采集服務(wù)--&gt;實(shí)時(shí)數倉(kafka)
  
  3.2.1 基本字段處理
  一個(gè)。分析日志采集服務(wù)采集到的四個(gè)事件的json數據,得到四個(gè)事件的基本字段,實(shí)時(shí)寫(xiě)入到kafka消息隊列的四個(gè)主題中。
  b. 通過(guò)Flink/StreamSQL,實(shí)時(shí)或微批量消費4條topic數據,存儲在4張HBase表中。
  3.2.2 將用戶(hù)事件鏈接到行為事件
  消費用戶(hù)事件主題,根據序列碼cookie將用戶(hù)信息與行為信息相關(guān)聯(lián),構建實(shí)時(shí)用戶(hù)行為寬表。
  3.3 離線(xiàn)數據倉庫建模
  3.3.1 粘貼源層
  通過(guò) ETL 提取 4 個(gè)事件 HBase 表。
  3.3.2 模型層
  根據源層4個(gè)事件的序列碼cookie,將用戶(hù)信息與行為信息相關(guān)聯(lián),構建離線(xiàn)用戶(hù)行為寬表。
  4 埋點(diǎn)數據應用
  4.1.1 用戶(hù)行為
  根據實(shí)時(shí)用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)到實(shí)時(shí)的用戶(hù)行為記錄。
  根據線(xiàn)下用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)線(xiàn)下用戶(hù)行為記錄。
  4.1.2 用戶(hù)行為統計
  根據四大事件主題數據,結合用戶(hù)行為指標體系,通過(guò)聚合統計分析方法,得到不同維度的用戶(hù)行為指標。
  頁(yè)面級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  維度類(lèi)型:頁(yè)面/段/頻道
  可視字段:頻道名稱(chēng)、鏈接、頁(yè)面名稱(chēng)、PV、UV、訪(fǎng)問(wèn)用戶(hù)數、平均停留時(shí)間、頁(yè)面跳出次數、頁(yè)面跳出率
  
  按鈕級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  4.1.3 用戶(hù)留存分析
  方面:
  數據日期:2021-08-02
  頻道名稱(chēng):如“xxx”,無(wú)摘要
  用戶(hù)類(lèi)別:摘要,新用戶(hù)
  數據類(lèi)型:留存數、留存率
  產(chǎn)品層級,以及留存人數的選擇
  選擇保留的產(chǎn)品級別
  功能層面:比如美團APP對使用“單車(chē)”功能的用戶(hù)進(jìn)行留存分析。
  4.1.4 用戶(hù)行為標簽及客戶(hù)群體篩選
  構建用戶(hù)行為標簽,篩選目標客戶(hù)群。
  根據客戶(hù)的實(shí)時(shí)/線(xiàn)下業(yè)務(wù)狀態(tài),當滿(mǎn)足一定的行為特征時(shí),為業(yè)務(wù)人員篩選出不同的目標客戶(hù)群,通過(guò)營(yíng)銷(xiāo)平臺以不同的方式觸達。
  針對產(chǎn)品品類(lèi)較少的企業(yè),將不同場(chǎng)景的客群實(shí)時(shí)推送給業(yè)務(wù)人員,并與營(yíng)銷(xiāo)平臺聯(lián)動(dòng),精準營(yíng)銷(xiāo)。
  當然,對于產(chǎn)品品類(lèi)較多的企業(yè),比如電商相關(guān)場(chǎng)景,基于用戶(hù)行為構建實(shí)時(shí)推薦系統是行業(yè)主流。
  4.1.5 基于用戶(hù)行為斷點(diǎn)
  可以結合實(shí)時(shí)和線(xiàn)下的用戶(hù)行為和業(yè)務(wù)狀態(tài),為有行為斷點(diǎn)的用戶(hù)進(jìn)行外呼或其他方式。
  5 結論
  本文主要結合實(shí)際工作中的一些經(jīng)驗做一個(gè)簡(jiǎn)單的概述。埋點(diǎn)采集主要是代碼埋點(diǎn),人工維護成本比較高。未來(lái)可以結合實(shí)際場(chǎng)景更好的采集
行業(yè)內的數據;用戶(hù)行為分析也需要逐步完善。,歡迎大家批評指正,有興趣的朋友可以聯(lián)系我一起討論。
  解決方案:大規模分布式鏈路分析計算在字節跳動(dòng)的實(shí)踐
  一、概述
  微服務(wù)架構的快速發(fā)展使得分布式鏈路跟蹤系統成為觀(guān)測系統中越來(lái)越重要的組成部分。經(jīng)過(guò)幾年的發(fā)展,字節跳動(dòng)的分布式鏈路追蹤系統已經(jīng)覆蓋了字節跳動(dòng)的大部分在線(xiàn)業(yè)務(wù),完成了數萬(wàn)個(gè)微服務(wù)和數百萬(wàn)微服務(wù)實(shí)例的在線(xiàn)鏈路追蹤。在經(jīng)典的指標觀(guān)察分析和單請求鏈路跟蹤的基礎上,如何從浩瀚的分布式鏈路數據中進(jìn)一步挖掘更高層次的信息,為業(yè)務(wù)架構優(yōu)化、服務(wù)治理、成本等場(chǎng)景提供服務(wù)優(yōu)化。提供更高效的數據支持,成為下一步亟待解決的問(wèn)題。
  本次分享主要介紹了我們構建海量鏈路數據分析計算系統的實(shí)踐經(jīng)驗,以及一些具體的落地場(chǎng)景。
  2. 可觀(guān)察性和鏈接追蹤
  2.1 基本概念
  為了方便讀者更好地理解“鏈接分析”,我們先來(lái)說(shuō)說(shuō)什么是“可觀(guān)察性”和“鏈接跟蹤”。已經(jīng)熟悉“可觀(guān)察性”和“鏈接追蹤”概念的讀者可以跳過(guò)本章。
  隨著(zhù)微服務(wù)架構的快速發(fā)展,軟件系統正在從單一的應用發(fā)展為由大量微服務(wù)節點(diǎn)組成的復雜應用。為了更好地管理和控制復雜的軟件系統,“可觀(guān)察性”工具變得越來(lái)越重要??捎^(guān)察性工具建立在可觀(guān)察性數據的基礎上,一般包括以下幾個(gè)部分:Link Tracking Trace、Logging、Timing Metrics、Code-level Profiling、Event Event和與元數據相關(guān)的CMDB等。
  為了幫助大家對可觀(guān)察性工具有更直觀(guān)的體驗,這里舉例說(shuō)明如何基于可觀(guān)察性工具解決工作中的實(shí)際問(wèn)題:某服務(wù)告警通知值班人員的故障率在增加,點(diǎn)擊Correlate到error indicator對應的Trace,在Trace中定位到錯誤的來(lái)源,查看源頭的關(guān)鍵異常日志和代碼棧,發(fā)現源頭的報錯服務(wù)正在執行變更操作,所以基本定位到這個(gè)變化很可能是導致這個(gè)失敗的原因。有了高質(zhì)量的可觀(guān)測性數據和工具,一個(gè)對系統不是很熟悉的值班人員也可以快速完成對本次故障的排查和止損。
  分布式鏈路追蹤(Trace)是可觀(guān)測系統的組成部分之一。Trace從狹義上講是對單個(gè)請求的詳細跟蹤,記錄請求在每個(gè)環(huán)節的調用關(guān)系,耗時(shí),以及各種詳細的標簽和事件。同時(shí)Trace也起到了鏈接各種可觀(guān)察性數據的作用,即同一個(gè)Request Context的數據載體。分布式請求上的各類(lèi)信息(Metrics/Logs..)通過(guò)Trace可靠關(guān)聯(lián),進(jìn)而可以構建各種可觀(guān)察性數據的上下滾動(dòng)鉆取的跳轉功能。
  2.2 字節鏈接跟蹤系統
  經(jīng)過(guò)幾年的發(fā)展,字節鏈接跟蹤系統現已覆蓋公司大部分在線(xiàn)業(yè)務(wù)。整體開(kāi)發(fā)流程如下:
  2019年:Trace 1.0完成Trace組件能力建設。
  2020年:Trace 2.0實(shí)現Metrics/Trace/Log的融合,升級數據協(xié)議和技術(shù)架構,開(kāi)始打造一站式觀(guān)測平臺Argos。
  2021年:實(shí)現與字節跳動(dòng)大部分主流框架組件的默認集成,微服務(wù)在公司所有業(yè)務(wù)線(xiàn)的覆蓋率&gt;80%。
  2022:構建和探索場(chǎng)景化、智能化的場(chǎng)景,比如本次分享聊天中的“鏈接分析”。
  Byte Link Tracker 當前狀態(tài)數據(2022 年 10 月):
  覆蓋范圍:50,000 多個(gè)微服務(wù)/FAAS,300 萬(wàn)多個(gè)容器實(shí)例。
  使用:每日UV 6,000+,每日PV 40,000+。
  吞吐量:跨度數 2000 萬(wàn)+/s(默認 0.1% 采樣)。
  資源配比:100+ CPU核心支持100萬(wàn)Span/s。
  SDK性能:?jiǎn)尉€(xiàn)程40w Span/s。
  查詢(xún)性能:TraceID 枚舉 P50 &lt; 100 ms,P99 &lt; 500 ms。
  數據生成到可檢索延遲:AVG &lt; 1 分鐘,P99 &lt; 2 分鐘。
  存儲資源:10 PB(3 個(gè)副本 TTL 15 天)。
  字節鏈追蹤系統從數據接入端、消費存儲端、查詢(xún)平臺端的整體架構如下圖所示。更多詳情請閱讀之前的分享。上次的分享比較詳細地介紹了如何從零到一搭建分布式鏈路跟蹤系統。本文主要講鏈路跟蹤系統中的鏈路聚合計算和分析部分。
  3.鏈接分析技術(shù)實(shí)踐
  3.1 需求場(chǎng)景
  經(jīng)常使用Trace的同學(xué)可能對Trace的印象是通過(guò)TraceID或者一些Tags可以檢索到一個(gè)或者一些Traces,然后從Trace數據中仔細查看詳細的調用traces和各種Tags來(lái)分析一些具體的問(wèn)題,比如為什么一個(gè)請求很慢,或者請求出錯的原因。
  但是我們也面臨著(zhù)一些更高層次的問(wèn)題,比如面對一個(gè)不斷變化的復雜微服務(wù)系統:
  
  這些問(wèn)題的答案很難通過(guò)人工一條一條地查看跡線(xiàn)來(lái)獲得可靠的結果。但是,它可以從大量的Trace數據中自動(dòng)計算出來(lái),為最終的決策提供可靠的數據支持。我們稱(chēng)這種大量蹤跡鏈接分析的聚合計算。
  3.2 基本原則
  鏈路分析的基本原理是聚合計算大量的跡線(xiàn)。一般遵循MapReduce計算模型。在這個(gè)過(guò)程中,可能會(huì )結合一些訂閱規則和其他數據,得到計算結果,然后應用到具體的場(chǎng)景應用中。
  3.3 技術(shù)架構
  適用于大量鏈路數據的聚合計算的可選模式主要有三種,即基于在線(xiàn)數據流的流式計算、基于離線(xiàn)數據流從在線(xiàn)存儲中查詢(xún)有限蹤跡后的即興(抽樣)計算。bins的離線(xiàn)計算。這三種計算方式的特點(diǎn)分析如下表所示。
  在分析了三種聚合計算模式的特點(diǎn)之后,分析了鏈路分析場(chǎng)景所面臨的技術(shù)需求。
  基于以上分析,我們認為沒(méi)有一種計算模型可以解決所有問(wèn)題,所以我們最終選擇的技術(shù)方案是流式、即興、離線(xiàn)一體化的技術(shù)方案:基于統一的基礎數據模型和邏輯算子,支持三種不同的計算引擎,滿(mǎn)足不同的場(chǎng)景需求。
  在實(shí)施該方案的過(guò)程中,我們總結了一些有益的實(shí)踐經(jīng)驗:
  Trace本身的數據結構比較復雜,其分析計算邏輯往往具有一定的復雜性。算子和引擎的分離,便于將同一個(gè)邏輯算子應用到不同的計算引擎上,可以更好的提高研發(fā)效率和代碼可維護性。例如,性能瓶頸分析相關(guān)的算法既可以用于即興計算,也可以用于離線(xiàn)計算。
  Trace數據往往存在一些數據不規則性,比如超高維的接口名稱(chēng),導致聚合后的數據維度遠超預期,影響計算任務(wù)的穩定性。自動(dòng)化的異常數據發(fā)現和封禁或降級機制可以起到更好的保護作用。
  盡量保留聚合分析結果對應的具有代表性的原創(chuàng )
(極端)Trace樣本,可以提高分析結果的可解釋性和用戶(hù)信任度。
  大數據計算成本高,非基礎功能可采用按需訂閱模式提高ROI;構建任務(wù)靈活降級能力,資源緊張時(shí)優(yōu)先保證高頻基礎功能的高可用。
  4.鏈路分析實(shí)現場(chǎng)景
  介紹完鏈接分析的底層技術(shù)架構,我們再介紹一些具體的實(shí)現場(chǎng)景。
  4.1 精確鏈路拓撲計算
  鏈路分析中使用頻率最高、使用場(chǎng)景最廣的就是鏈路拓撲的計算。這里所說(shuō)的“鏈路拓撲”是指進(jìn)入任意一個(gè)服務(wù)節點(diǎn),獲取所有流經(jīng)該節點(diǎn)的trace的聚合路徑,從而清楚地知道該服務(wù)節點(diǎn)的上下游依賴(lài)拓撲。
  由于字節微服務(wù)數量眾多,中端和基礎服務(wù)種類(lèi)繁多,調用關(guān)系相對復雜,因此我們進(jìn)行拓撲計算的目標是:
  舉例說(shuō)明什么是精度要求:如下圖,“抖音.X”和“火山.Y”都調用“中臺.Z”,但對于“抖音.X”的流量,“中臺. Z" "會(huì )用到"Redis.Volcano",而"中臺.Z"會(huì )用到"Redis.Volcano"給"Volcano.Y"的流量,所以實(shí)際上沒(méi)有"抖音.X"和"Redis.Volcano" ”直接依賴(lài)。那么當我們搜索“Douyin.X”時(shí),想要的拓撲是[“Douyin.X”,“Zhongtai.Z”,“Redis.Douyin”]而不是“Redis.Volcano”。
  舉例說(shuō)明什么是靈活性需求:如下圖,不僅可以根據入口檢索拓撲,還可以根據中間節點(diǎn)“Zhongtai.Z”或存儲組件檢索拓撲節點(diǎn)“Redis.抖音”;不僅可以按照服務(wù)+接口的粒度檢索拓撲,還可以按照服務(wù)粒度、服務(wù)+集群粒度、服務(wù)+機房粒度等其他粒度進(jìn)行檢索。
  面對這樣的技術(shù)需求,我們研究了業(yè)界現有的一些拓撲計算方案:
  結合字節場(chǎng)景的實(shí)際需求,權衡準確率、成本和檢索速度,我們最終設計了新的方案。
  精確的鏈路拓撲具有廣泛的應用場(chǎng)景。下面是一些具體的例子:
  4.2 全鏈路流量估算
  全鏈路流量預估主要回答的問(wèn)題是:
  
  全鏈路流量估計是在精確拓撲計算的基礎上實(shí)現的,因此也采用流計算來(lái)估計每條路徑上的蹤跡數以及蹤跡對應的采樣率數據。計算結果的格式如下圖所示。每個(gè)拓撲中的每個(gè)邊都對應于一個(gè)估計的流量和流量比?;谶@樣的數據,我們可以針對任何微服務(wù)接口給出上述兩個(gè)問(wèn)題的答案。
  全鏈路流量預估的主要應用場(chǎng)景如下:
  4.3 強弱依賴(lài)分析
  強弱依賴(lài)信息是服務(wù)穩定性治理場(chǎng)景的重要數據支撐,也可以通過(guò)在線(xiàn)Trace數據自動(dòng)計算。
  強依賴(lài):當異常發(fā)生時(shí),影響核心業(yè)務(wù)流程和系統可用性的依賴(lài)稱(chēng)為強依賴(lài)。
  弱依賴(lài):當異常發(fā)生時(shí),不影響核心業(yè)務(wù)流程,不影響系統可用性的依賴(lài)稱(chēng)為弱依賴(lài)。
  如下圖所示,當A調用B失敗時(shí),如果A仍能成功響應其Client,則B為A的弱依賴(lài);當A調用B失敗時(shí),如果A不能成功響應它的Client,那么B就是A依賴(lài)的強依賴(lài)。
  強弱依賴(lài)計算的技術(shù)目標包括:
  為了盡可能滿(mǎn)足數據的完整性和時(shí)效性要求,我們選擇了流式計算方式,從數據流中選擇Trace with Error來(lái)計算強弱依賴(lài)。需要注意的是,短期的實(shí)時(shí)數據樣本往往是不夠的,需要結合歷史積累的數據進(jìn)行聯(lián)合判斷才能下結論。
  強弱依賴(lài)分析的主要挑戰:
  強弱依賴(lài)分析的主要應用場(chǎng)景包括:
  4.4 全鏈路性能反模式分析
  在實(shí)踐中,我們觀(guān)察到有一些非常典型的性能反模式問(wèn)題,可以從Trace數據中自動(dòng)發(fā)現。常見(jiàn)的性能反模式包括:
  性能反模式問(wèn)題的發(fā)現也有以下兩個(gè)要求:
  因此,性能反模式分析任務(wù)需要自動(dòng)發(fā)現最嚴重的反模式問(wèn)題,給出極值樣本,并關(guān)聯(lián)這些問(wèn)題所在路徑的流量和入口優(yōu)先級,幫助業(yè)務(wù)優(yōu)化延遲和服務(wù)成本。盡早解決與它們相關(guān)的潛在穩定性風(fēng)險。
  4.5 全鏈路性能瓶頸分析
  單個(gè)請求的分布式跟蹤視圖清晰直接,但局限性在于觀(guān)察者無(wú)法確定單個(gè)請求呈現的跟蹤模式是普遍現象還是特殊現象。因此,從大量Trace數據中分析鏈路性能瓶頸,找出整體性能模式和worst case樣本,也是鏈路分析的需求場(chǎng)景。
  鏈路性能模式是從批量跟蹤中聚合和計算的,滿(mǎn)足臨時(shí)模式和離線(xiàn)模式的要求。在即興模式下,可滿(mǎn)足篩選任意時(shí)間段、靈活條件(多種標簽、耗時(shí)區間)的批次痕跡,快速獲得分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整地分析全量Trace數據的整體性能模式,觀(guān)察長(cháng)期趨勢的需求。因此,我們將在即興和離線(xiàn)計算模式下重用鏈路性能分析聚合算子。
  分析結果示例:
  4.6 誤差傳播鏈分析
  單個(gè)Error Trace可以觀(guān)察到一條錯誤傳播路徑,但觀(guān)察者無(wú)法確認一條錯誤傳播路徑是否一定代表了一個(gè)普遍問(wèn)題,也無(wú)法回答錯誤傳播的影響。因此聚合大量的Error Trace來(lái)分析整體的錯誤來(lái)源、傳播路徑、影響面也是鏈路分析的需求場(chǎng)景。
  與鏈路性能分析類(lèi)似,錯誤傳播路徑是從批量跟蹤中聚合和計算的,這在臨時(shí)模式和離線(xiàn)模式下都是必需的。我們還將錯誤傳播鏈分析算子應用于臨時(shí)和離線(xiàn)計算模式。Ad hoc模式可以滿(mǎn)足任意時(shí)間段、靈活條件(各種標簽)批量過(guò)濾Error Trace的需求,快速得到聚合分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整的全量Error Trace數據聚合分析需求,觀(guān)察長(cháng)期趨勢,助力業(yè)務(wù)長(cháng)期穩定優(yōu)化。
  分析結果示例:
  五、總結與展望
  本文主要介紹在從零到一建立鏈路追蹤基礎能力后,如何聚合分析海量鏈路數據,回答更高層次的場(chǎng)景化問(wèn)題。我們分享了我們具體的技術(shù)選型過(guò)程和實(shí)施技術(shù)架構,以及一些成功的實(shí)施案例。

文章采集api 解決方案:API是什么?為什么它很重要?

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-11-22 14:20 ? 來(lái)自相關(guān)話(huà)題

  文章采集api 解決方案:API是什么?為什么它很重要?
  要想全面了解科技新聞,就必須或多或少地了解一些技術(shù)術(shù)語(yǔ)。API這個(gè)詞很常見(jiàn)。
  iOS 7 正式版
  已經(jīng)上線(xiàn)了,更新了很多老的API,也增加了很多新的API。如果你自己的工作用到了API,那你肯定已經(jīng)很清楚它的重要性了。但是其他一些讀者可能會(huì )問(wèn):什么是 API,為什么我們如此重視它?
  下面就帶你了解一下。
  API:編程之窗
  API這個(gè)詞,全稱(chēng)是Application Programming Interfaces(應用程序編程接口)。簡(jiǎn)單地說(shuō),它是一組用于管理應用程序之間通信的需求。API 并不是什么新鮮事物,它們允許您在使用 PC 或筆記本電腦時(shí)在程序之間傳輸數據。例如,剪切 LibreOffice 文檔的一段并將其傳輸到 Excel 電子表格。系統級 API 允許 LibreOffice 等程序在 Windows 等操作系統上運行。
  在 Internet 上,API 允許其他應用程序使用一些大型服務(wù),例如 Google Maps 和 Facebook。例如 Yelp,它在谷歌地圖上顯示附近的餐館;以及允許用戶(hù)通過(guò) Facebook 與其他玩家聊天、分享分數等的游戲。
  
  API是通過(guò)對外開(kāi)放程序的一些內部功能來(lái)實(shí)現的,允許應用程序根據自己的興趣共享數據,不需要開(kāi)發(fā)者公開(kāi)所有的軟件代碼。開(kāi)源項目也是如此。您可以將其視為門(mén)、窗或杠桿。無(wú)論您使用什么比喻,程序與外部軟件世界之間的通信都是由 API 定義的。
  API 是如何工作的?
  API 現在非常重要,因為它們決定了開(kāi)發(fā)人員如何將他們新開(kāi)發(fā)的應用程序連接到大規模 Web 服務(wù)。例如,一個(gè)游戲應用的開(kāi)發(fā)者可以使用Dropbox的API讓用戶(hù)將游戲數據存儲在Dropbox的云端,而無(wú)需開(kāi)發(fā)自己的云存儲服務(wù)。
  API也可以節省時(shí)間。比如你在國外用Facebook賬號,在國內用QQ賬號,就可以直接登錄很多應用和網(wǎng)站,免去注冊的麻煩。這也是通過(guò)API實(shí)現的。
  從更廣泛的角度來(lái)看,API 支持各種“混搭”網(wǎng)絡(luò )服務(wù),開(kāi)發(fā)人員可以混合和匹配來(lái)自 Google、Facebook 或 Twitter 的 API,以創(chuàng )建全新的應用程序和服務(wù)。在許多方面,可以說(shuō)主流服務(wù) API 的廣泛可用性使現代 Web 體驗成為可能。
  叫喊
  安卓
  
  例如,當您搜索附近的餐館時(shí),位置信息將顯示在 Google 地圖上。Yelp 還沒(méi)有開(kāi)發(fā)自己的地圖。Yelp 應用程序通過(guò) Google Maps 的 API 將自己的信息——餐廳地址、用戶(hù)評論等——發(fā)送到內部的 Google Maps 功能,最終得到一張帶有周?chē)蛷d位置的地圖顯示給用戶(hù),這顯示在應用程序內的 Yelp 上。
  這類(lèi)API很常見(jiàn),比如雷鋒網(wǎng)文章下分享到新浪微博和QQ空間的圖標。點(diǎn)擊后,這些鏈接會(huì )向相關(guān)服務(wù)的API發(fā)送請求,允許用戶(hù)在不離開(kāi)當前頁(yè)面的情況下分享文章內容。.
  API出現問(wèn)題時(shí)
  API 現在可用并不意味著(zhù)它將來(lái)也可用。以推特為例,
  一年前因限制第三方應用程序使用其 API 而臭名昭著(zhù)
  ,這種做法殺死了所有第三方推特客戶(hù)端,讓用戶(hù)只能使用推特自己的網(wǎng)站和應用,推特靠展示廣告賺錢(qián)。推特表示,堅持這樣做是為了保持統一的推特用戶(hù)體驗。
  一些公司可能會(huì )關(guān)閉服務(wù)和 API。例如,谷歌總是關(guān)閉一些看不到利潤的服務(wù)。最近的例子是谷歌閱讀器。如果您的應用程序依賴(lài)于這些 API 來(lái)運行,那么問(wèn)題就會(huì )接踵而至。
  API 的世界雖然并不完美,但依然擋不住開(kāi)發(fā)者對它的熱情,擋不住它所催生的各種應用和服務(wù)。
  免費的:免費文章采集工具(免費文章采集工具)
  目錄:
  1.免費文章采集軟件
  2.文章收錄網(wǎng)站
  一個(gè)簡(jiǎn)單易用的文章采集器,不需要我們輸入采集規則,就可以全網(wǎng)采集我們感興趣的文章。文章采集器有關(guān)鍵詞文章采集和指定網(wǎng)站文章采集可視化。實(shí)用性體現在我們不需要輸入太多的指令,只需要用鼠標點(diǎn)擊一下,就可以完成文章的采集工作。
  3.熱門(mén)文章采集
  4.萬(wàn)能文章采集器安卓版
  關(guān)鍵詞采集需要我們進(jìn)入我們的核心關(guān)鍵詞,選擇我們需要采集的自媒體和其他相關(guān)平臺,然后我們就可以完成采集任務(wù)設置,關(guān)鍵詞采集器會(huì )自動(dòng)通過(guò)關(guān)鍵詞匹配大量實(shí)時(shí)熱門(mén)文章,為我們創(chuàng )作提供大量文章素材。
  
  5.文章資源采集
  可視化指定采集
,如果您對我們的網(wǎng)頁(yè)感興趣,可以通過(guò)點(diǎn)擊鼠標完成指定采集
設置。支持英文等外文網(wǎng)站的采集
,并內置翻譯功能。在本地導出或發(fā)布到我們的 CMS 時(shí),它是一鍵式翻譯。支持段落標簽被保留。
  6.萬(wàn)能文章采集
神器
  通過(guò)指定采集的監控頁(yè)面功能,我們可以監控采集固定頁(yè)面,適合采集實(shí)時(shí)更新的網(wǎng)站內容,也可以采集論壇評論,讓我們實(shí)時(shí)關(guān)注輿情動(dòng)向,及時(shí)掌握我論壇的節奏。
  7、網(wǎng)站文章自動(dòng)采集發(fā)布
  網(wǎng)站優(yōu)化離不開(kāi)我們的原創(chuàng )美和搜索引擎優(yōu)化(SEO)。什么是原創(chuàng )內容?如果我們想讓我們的 SEO 策略發(fā)揮作用,讓我們的觀(guān)眾信任我們,那么用戶(hù)體驗也是一類(lèi)原創(chuàng ),而且它也很容易實(shí)現。
  8.文章批量采集
  繼續閱讀以發(fā)現在為任何在線(xiàn)渠道創(chuàng )建新文章時(shí)應該實(shí)施的一些最佳實(shí)踐
  
  9.文章采集
及原創(chuàng )軟件生成
  仔細檢查和校對我們的內容,在點(diǎn)擊“發(fā)布”新內容之前采取的第一個(gè)行動(dòng)當然是審查它記住,原創(chuàng )性也包括自我原創(chuàng )性——(經(jīng)常)不小心復制和發(fā)布自己以前的作品,但聲稱(chēng)它是原創(chuàng )的
  10.免費文章站點(diǎn)集合
  因此,請確保我們投入足夠的時(shí)間來(lái)執行所有必要的檢查,以保護我們的內容免受任何復制或自我復制問(wèn)題。檢查內容的可讀性、語(yǔ)法、結構和關(guān)鍵字。如果有任何內容聽(tīng)起來(lái)像是重復的或非原創(chuàng )的,請標記它并確保在公開(kāi)之前閱讀我們文章的底部。
  如何始終創(chuàng )建我們的原創(chuàng )內容,如果我們正在為在線(xiàn)商店編寫(xiě)產(chǎn)品描述,這可能會(huì )特別棘手。在這些情況下,很容易對僅顏色或尺寸不同的項目使用完全相同的內容。然而,嘗試在每一個(gè)描述中保持原創(chuàng )是至關(guān)重要的。
  發(fā)揮創(chuàng )意并為每件作品添加一些獨特的東西,無(wú)論是談?wù)撎囟伾赡苓m合的心情,還是我們如何穿著(zhù)該物品
  文章采集器
的分享到此結束。什么樣的文章采集器好用?當然,它是基于用戶(hù)體驗,降低了用戶(hù)學(xué)習成本,擁有強大的采集器。如果你喜歡這篇文章,不妨采集
一下,點(diǎn)贊,一鍵三連。
  圖片 查看全部

  文章采集api 解決方案:API是什么?為什么它很重要?
  要想全面了解科技新聞,就必須或多或少地了解一些技術(shù)術(shù)語(yǔ)。API這個(gè)詞很常見(jiàn)。
  iOS 7 正式版
  已經(jīng)上線(xiàn)了,更新了很多老的API,也增加了很多新的API。如果你自己的工作用到了API,那你肯定已經(jīng)很清楚它的重要性了。但是其他一些讀者可能會(huì )問(wèn):什么是 API,為什么我們如此重視它?
  下面就帶你了解一下。
  API:編程之窗
  API這個(gè)詞,全稱(chēng)是Application Programming Interfaces(應用程序編程接口)。簡(jiǎn)單地說(shuō),它是一組用于管理應用程序之間通信的需求。API 并不是什么新鮮事物,它們允許您在使用 PC 或筆記本電腦時(shí)在程序之間傳輸數據。例如,剪切 LibreOffice 文檔的一段并將其傳輸到 Excel 電子表格。系統級 API 允許 LibreOffice 等程序在 Windows 等操作系統上運行。
  在 Internet 上,API 允許其他應用程序使用一些大型服務(wù),例如 Google Maps 和 Facebook。例如 Yelp,它在谷歌地圖上顯示附近的餐館;以及允許用戶(hù)通過(guò) Facebook 與其他玩家聊天、分享分數等的游戲。
  
  API是通過(guò)對外開(kāi)放程序的一些內部功能來(lái)實(shí)現的,允許應用程序根據自己的興趣共享數據,不需要開(kāi)發(fā)者公開(kāi)所有的軟件代碼。開(kāi)源項目也是如此。您可以將其視為門(mén)、窗或杠桿。無(wú)論您使用什么比喻,程序與外部軟件世界之間的通信都是由 API 定義的。
  API 是如何工作的?
  API 現在非常重要,因為它們決定了開(kāi)發(fā)人員如何將他們新開(kāi)發(fā)的應用程序連接到大規模 Web 服務(wù)。例如,一個(gè)游戲應用的開(kāi)發(fā)者可以使用Dropbox的API讓用戶(hù)將游戲數據存儲在Dropbox的云端,而無(wú)需開(kāi)發(fā)自己的云存儲服務(wù)。
  API也可以節省時(shí)間。比如你在國外用Facebook賬號,在國內用QQ賬號,就可以直接登錄很多應用和網(wǎng)站,免去注冊的麻煩。這也是通過(guò)API實(shí)現的。
  從更廣泛的角度來(lái)看,API 支持各種“混搭”網(wǎng)絡(luò )服務(wù),開(kāi)發(fā)人員可以混合和匹配來(lái)自 Google、Facebook 或 Twitter 的 API,以創(chuàng )建全新的應用程序和服務(wù)。在許多方面,可以說(shuō)主流服務(wù) API 的廣泛可用性使現代 Web 體驗成為可能。
  叫喊
  安卓
  
  例如,當您搜索附近的餐館時(shí),位置信息將顯示在 Google 地圖上。Yelp 還沒(méi)有開(kāi)發(fā)自己的地圖。Yelp 應用程序通過(guò) Google Maps 的 API 將自己的信息——餐廳地址、用戶(hù)評論等——發(fā)送到內部的 Google Maps 功能,最終得到一張帶有周?chē)蛷d位置的地圖顯示給用戶(hù),這顯示在應用程序內的 Yelp 上。
  這類(lèi)API很常見(jiàn),比如雷鋒網(wǎng)文章下分享到新浪微博和QQ空間的圖標。點(diǎn)擊后,這些鏈接會(huì )向相關(guān)服務(wù)的API發(fā)送請求,允許用戶(hù)在不離開(kāi)當前頁(yè)面的情況下分享文章內容。.
  API出現問(wèn)題時(shí)
  API 現在可用并不意味著(zhù)它將來(lái)也可用。以推特為例,
  一年前因限制第三方應用程序使用其 API 而臭名昭著(zhù)
  ,這種做法殺死了所有第三方推特客戶(hù)端,讓用戶(hù)只能使用推特自己的網(wǎng)站和應用,推特靠展示廣告賺錢(qián)。推特表示,堅持這樣做是為了保持統一的推特用戶(hù)體驗。
  一些公司可能會(huì )關(guān)閉服務(wù)和 API。例如,谷歌總是關(guān)閉一些看不到利潤的服務(wù)。最近的例子是谷歌閱讀器。如果您的應用程序依賴(lài)于這些 API 來(lái)運行,那么問(wèn)題就會(huì )接踵而至。
  API 的世界雖然并不完美,但依然擋不住開(kāi)發(fā)者對它的熱情,擋不住它所催生的各種應用和服務(wù)。
  免費的:免費文章采集工具(免費文章采集工具)
  目錄:
  1.免費文章采集軟件
  2.文章收錄網(wǎng)站
  一個(gè)簡(jiǎn)單易用的文章采集器,不需要我們輸入采集規則,就可以全網(wǎng)采集我們感興趣的文章。文章采集器有關(guān)鍵詞文章采集和指定網(wǎng)站文章采集可視化。實(shí)用性體現在我們不需要輸入太多的指令,只需要用鼠標點(diǎn)擊一下,就可以完成文章的采集工作。
  3.熱門(mén)文章采集
  4.萬(wàn)能文章采集器安卓版
  關(guān)鍵詞采集需要我們進(jìn)入我們的核心關(guān)鍵詞,選擇我們需要采集的自媒體和其他相關(guān)平臺,然后我們就可以完成采集任務(wù)設置,關(guān)鍵詞采集器會(huì )自動(dòng)通過(guò)關(guān)鍵詞匹配大量實(shí)時(shí)熱門(mén)文章,為我們創(chuàng )作提供大量文章素材。
  
  5.文章資源采集
  可視化指定采集
,如果您對我們的網(wǎng)頁(yè)感興趣,可以通過(guò)點(diǎn)擊鼠標完成指定采集
設置。支持英文等外文網(wǎng)站的采集
,并內置翻譯功能。在本地導出或發(fā)布到我們的 CMS 時(shí),它是一鍵式翻譯。支持段落標簽被保留。
  6.萬(wàn)能文章采集
神器
  通過(guò)指定采集的監控頁(yè)面功能,我們可以監控采集固定頁(yè)面,適合采集實(shí)時(shí)更新的網(wǎng)站內容,也可以采集論壇評論,讓我們實(shí)時(shí)關(guān)注輿情動(dòng)向,及時(shí)掌握我論壇的節奏。
  7、網(wǎng)站文章自動(dòng)采集發(fā)布
  網(wǎng)站優(yōu)化離不開(kāi)我們的原創(chuàng )美和搜索引擎優(yōu)化(SEO)。什么是原創(chuàng )內容?如果我們想讓我們的 SEO 策略發(fā)揮作用,讓我們的觀(guān)眾信任我們,那么用戶(hù)體驗也是一類(lèi)原創(chuàng ),而且它也很容易實(shí)現。
  8.文章批量采集
  繼續閱讀以發(fā)現在為任何在線(xiàn)渠道創(chuàng )建新文章時(shí)應該實(shí)施的一些最佳實(shí)踐
  
  9.文章采集
及原創(chuàng )軟件生成
  仔細檢查和校對我們的內容,在點(diǎn)擊“發(fā)布”新內容之前采取的第一個(gè)行動(dòng)當然是審查它記住,原創(chuàng )性也包括自我原創(chuàng )性——(經(jīng)常)不小心復制和發(fā)布自己以前的作品,但聲稱(chēng)它是原創(chuàng )的
  10.免費文章站點(diǎn)集合
  因此,請確保我們投入足夠的時(shí)間來(lái)執行所有必要的檢查,以保護我們的內容免受任何復制或自我復制問(wèn)題。檢查內容的可讀性、語(yǔ)法、結構和關(guān)鍵字。如果有任何內容聽(tīng)起來(lái)像是重復的或非原創(chuàng )的,請標記它并確保在公開(kāi)之前閱讀我們文章的底部。
  如何始終創(chuàng )建我們的原創(chuàng )內容,如果我們正在為在線(xiàn)商店編寫(xiě)產(chǎn)品描述,這可能會(huì )特別棘手。在這些情況下,很容易對僅顏色或尺寸不同的項目使用完全相同的內容。然而,嘗試在每一個(gè)描述中保持原創(chuàng )是至關(guān)重要的。
  發(fā)揮創(chuàng )意并為每件作品添加一些獨特的東西,無(wú)論是談?wù)撎囟伾赡苓m合的心情,還是我們如何穿著(zhù)該物品
  文章采集器
的分享到此結束。什么樣的文章采集器好用?當然,它是基于用戶(hù)體驗,降低了用戶(hù)學(xué)習成本,擁有強大的采集器。如果你喜歡這篇文章,不妨采集
一下,點(diǎn)贊,一鍵三連。
  圖片

解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 215 次瀏覽 ? 2022-11-22 04:20 ? 來(lái)自相關(guān)話(huà)題

  解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)
  在日常的項目開(kāi)發(fā)過(guò)程中,接口文檔是必不可少的。后端工程師和前端工程師之間需要接口文檔來(lái)定義數據傳輸協(xié)議,系統暴露的接口需要文檔來(lái)解釋?zhuān)到y相互調用需要文檔來(lái)記錄接口協(xié)議等等。對于一個(gè)完整的項目,接口文檔是至關(guān)重要的。那么我們如何編寫(xiě)接口文檔呢?今天就來(lái)說(shuō)說(shuō)接口文檔的幾個(gè)重要元素。
  應用程序接口
  一、界面概述
  接口概覽主要對本接口文檔涉及的業(yè)務(wù)功能點(diǎn)、面向的閱讀對象、接口文檔中主要包括哪些業(yè)務(wù)接口進(jìn)行說(shuō)明,讓讀者有一個(gè)直觀(guān)的認識。例如:本文檔定義了面向外部接入方的中臺系統數據協(xié)議接口,主要包括:用戶(hù)注冊接口、用戶(hù)同步、授權認證等接口。適合的閱讀對象是接入中臺開(kāi)發(fā)者或外部合作伙伴……這樣的描述可以讓讀者對整個(gè)接口文檔有一個(gè)大概的了解。
  界面概覽
  2.權限說(shuō)明
  部分接口調用需要授權鑒權,這部分需要說(shuō)明。如果接口僅根據分配的令牌進(jìn)行身份驗證,則文檔需要說(shuō)明令牌的獲取方式。如果接口需要簽名認證,這里需要說(shuō)明簽名的具體方法。
  api權限說(shuō)明
  
  sign參數的生成規則要詳細說(shuō)明,最好有例子,比如:
  簽名方式
  這樣接入方就可以驗證自己的簽名方式是否正確。
  三、編碼方式
  接口請求過(guò)程中,出現亂碼可能是編碼造成的。因此,接口必須就編碼方式達成一致。參考下面的寫(xiě)法:
  編碼
  4.請求說(shuō)明
  接口文檔的請求說(shuō)明主要說(shuō)明接口請求的域名和請求的數據格式:
  
  要求澄清
  5.接口列表
  接口列表是接口文檔的主要內容。這部分需要列出所有的接口名稱(chēng)、接口地址、接口請求方法、接口請求參數、響應格式。在接口的請求參數中,需要說(shuō)明每個(gè)參數的含義、類(lèi)型、是否需要屬性。對于接口響應結果,如果有業(yè)務(wù)字段,也需要說(shuō)明。這是一個(gè)更完整的例子:
  接口示例
  六、狀態(tài)碼說(shuō)明
  接口的響應體一般都有響應狀態(tài)碼,比如成功、失敗等,狀態(tài)碼幫助接入方判斷接口調用的狀態(tài)。喜歡:
  狀態(tài)碼
  如果接口文檔能夠體現以上要素,就可以認為是一個(gè)完整的接口文檔,可以很好地被訪(fǎng)問(wèn)方閱讀和理解。
  解決方案:網(wǎng)站建設怎樣保證采集網(wǎng)站內容的質(zhì)量?
  網(wǎng)站建設需要在自己的網(wǎng)站上加入優(yōu)質(zhì)的網(wǎng)站內容。由于采集
了一些網(wǎng)站的部分內容,因此網(wǎng)站內容的質(zhì)量難免會(huì )存在一些問(wèn)題。由于網(wǎng)站收錄的文章非原創(chuàng ),會(huì )影響網(wǎng)站的權重和流量。那么,我們應該如何保證所采集到的網(wǎng)站內容的質(zhì)量才會(huì )來(lái)呢?
  1、修改標題吸引用戶(hù)注意力,讓用戶(hù)進(jìn)入網(wǎng)站,滿(mǎn)足用戶(hù)對熱點(diǎn)內容的好奇心,搜索引擎會(huì )以一定的方式對熱點(diǎn)內容進(jìn)行優(yōu)先排序。對于關(guān)鍵詞標簽和描述,這些頭條黨也會(huì )更加關(guān)注搜索引擎抓取和用戶(hù)點(diǎn)擊的好奇心。所以,我們在采集內容的時(shí)候,要盡可能的借鑒標題黨的一些方法,對標題、描述、關(guān)鍵詞標簽進(jìn)行一些修改,這樣才能擁有區分的三大要素頁(yè)面的原創(chuàng )
內容。
  
  其次,要想與原創(chuàng )內容網(wǎng)站區分開(kāi)來(lái),就必須做出與之不同的排版方式。比如做分頁(yè),我們可以把內容組織在一起,這樣搜索引擎就可以很容易的抓取全部?jì)热?,用?hù)不需要翻頁(yè)就可以查看??梢哉f(shuō),這種方法在排版上有所不同,也提高了用戶(hù)體驗。,排版要不同;
  3、文章標題清楚,讀者就知道這篇文章講的是什么。如果這篇文章的主題不明確,會(huì )使讀者失去閱讀興趣。因此,站長(cháng)在收錄文章內容的時(shí)候,需要適當區分段落,加上一些小標題,讓讀者很容易知道這篇文章講的是什么。
  第四,采集內容盡量不要超過(guò)一定的時(shí)間。在一定時(shí)期內,搜索引擎很難抓取到相同的內容。我們可以利用這一點(diǎn),搜索引擎對新文章的偏好,在收錄內容的時(shí)候,盡量收錄一天之內的內容。永遠不要抓取已經(jīng)存在很長(cháng)時(shí)間的內容。
  
  5、對于一些沒(méi)有圖片的文章,我們可以添加一些圖片來(lái)增加視覺(jué)感。因為我們采集
的是別人的內容,所以不能原樣復制粘貼,我們必須做一些修改,這樣搜索引擎才不會(huì )覺(jué)得有抄襲的嫌疑。所以,在采集
別人的文章時(shí),最好修改一下自己的文章,或者加點(diǎn)圖片。
  最后,想要自己網(wǎng)站采集的內容有一定的質(zhì)量,就不要無(wú)意義的復制粘貼。只有對網(wǎng)站上的文章內容進(jìn)行一定的改動(dòng),才會(huì )產(chǎn)生一定的效果,才能體現出為網(wǎng)站增加內容的作用。
  如果您想與我們合作,請致電: 更多精彩推薦:***.*****.***/ 查看全部

  解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)
  在日常的項目開(kāi)發(fā)過(guò)程中,接口文檔是必不可少的。后端工程師和前端工程師之間需要接口文檔來(lái)定義數據傳輸協(xié)議,系統暴露的接口需要文檔來(lái)解釋?zhuān)到y相互調用需要文檔來(lái)記錄接口協(xié)議等等。對于一個(gè)完整的項目,接口文檔是至關(guān)重要的。那么我們如何編寫(xiě)接口文檔呢?今天就來(lái)說(shuō)說(shuō)接口文檔的幾個(gè)重要元素。
  應用程序接口
  一、界面概述
  接口概覽主要對本接口文檔涉及的業(yè)務(wù)功能點(diǎn)、面向的閱讀對象、接口文檔中主要包括哪些業(yè)務(wù)接口進(jìn)行說(shuō)明,讓讀者有一個(gè)直觀(guān)的認識。例如:本文檔定義了面向外部接入方的中臺系統數據協(xié)議接口,主要包括:用戶(hù)注冊接口、用戶(hù)同步、授權認證等接口。適合的閱讀對象是接入中臺開(kāi)發(fā)者或外部合作伙伴……這樣的描述可以讓讀者對整個(gè)接口文檔有一個(gè)大概的了解。
  界面概覽
  2.權限說(shuō)明
  部分接口調用需要授權鑒權,這部分需要說(shuō)明。如果接口僅根據分配的令牌進(jìn)行身份驗證,則文檔需要說(shuō)明令牌的獲取方式。如果接口需要簽名認證,這里需要說(shuō)明簽名的具體方法。
  api權限說(shuō)明
  
  sign參數的生成規則要詳細說(shuō)明,最好有例子,比如:
  簽名方式
  這樣接入方就可以驗證自己的簽名方式是否正確。
  三、編碼方式
  接口請求過(guò)程中,出現亂碼可能是編碼造成的。因此,接口必須就編碼方式達成一致。參考下面的寫(xiě)法:
  編碼
  4.請求說(shuō)明
  接口文檔的請求說(shuō)明主要說(shuō)明接口請求的域名和請求的數據格式:
  
  要求澄清
  5.接口列表
  接口列表是接口文檔的主要內容。這部分需要列出所有的接口名稱(chēng)、接口地址、接口請求方法、接口請求參數、響應格式。在接口的請求參數中,需要說(shuō)明每個(gè)參數的含義、類(lèi)型、是否需要屬性。對于接口響應結果,如果有業(yè)務(wù)字段,也需要說(shuō)明。這是一個(gè)更完整的例子:
  接口示例
  六、狀態(tài)碼說(shuō)明
  接口的響應體一般都有響應狀態(tài)碼,比如成功、失敗等,狀態(tài)碼幫助接入方判斷接口調用的狀態(tài)。喜歡:
  狀態(tài)碼
  如果接口文檔能夠體現以上要素,就可以認為是一個(gè)完整的接口文檔,可以很好地被訪(fǎng)問(wèn)方閱讀和理解。
  解決方案:網(wǎng)站建設怎樣保證采集網(wǎng)站內容的質(zhì)量?
  網(wǎng)站建設需要在自己的網(wǎng)站上加入優(yōu)質(zhì)的網(wǎng)站內容。由于采集
了一些網(wǎng)站的部分內容,因此網(wǎng)站內容的質(zhì)量難免會(huì )存在一些問(wèn)題。由于網(wǎng)站收錄的文章非原創(chuàng ),會(huì )影響網(wǎng)站的權重和流量。那么,我們應該如何保證所采集到的網(wǎng)站內容的質(zhì)量才會(huì )來(lái)呢?
  1、修改標題吸引用戶(hù)注意力,讓用戶(hù)進(jìn)入網(wǎng)站,滿(mǎn)足用戶(hù)對熱點(diǎn)內容的好奇心,搜索引擎會(huì )以一定的方式對熱點(diǎn)內容進(jìn)行優(yōu)先排序。對于關(guān)鍵詞標簽和描述,這些頭條黨也會(huì )更加關(guān)注搜索引擎抓取和用戶(hù)點(diǎn)擊的好奇心。所以,我們在采集內容的時(shí)候,要盡可能的借鑒標題黨的一些方法,對標題、描述、關(guān)鍵詞標簽進(jìn)行一些修改,這樣才能擁有區分的三大要素頁(yè)面的原創(chuàng )
內容。
  
  其次,要想與原創(chuàng )內容網(wǎng)站區分開(kāi)來(lái),就必須做出與之不同的排版方式。比如做分頁(yè),我們可以把內容組織在一起,這樣搜索引擎就可以很容易的抓取全部?jì)热?,用?hù)不需要翻頁(yè)就可以查看??梢哉f(shuō),這種方法在排版上有所不同,也提高了用戶(hù)體驗。,排版要不同;
  3、文章標題清楚,讀者就知道這篇文章講的是什么。如果這篇文章的主題不明確,會(huì )使讀者失去閱讀興趣。因此,站長(cháng)在收錄文章內容的時(shí)候,需要適當區分段落,加上一些小標題,讓讀者很容易知道這篇文章講的是什么。
  第四,采集內容盡量不要超過(guò)一定的時(shí)間。在一定時(shí)期內,搜索引擎很難抓取到相同的內容。我們可以利用這一點(diǎn),搜索引擎對新文章的偏好,在收錄內容的時(shí)候,盡量收錄一天之內的內容。永遠不要抓取已經(jīng)存在很長(cháng)時(shí)間的內容。
  
  5、對于一些沒(méi)有圖片的文章,我們可以添加一些圖片來(lái)增加視覺(jué)感。因為我們采集
的是別人的內容,所以不能原樣復制粘貼,我們必須做一些修改,這樣搜索引擎才不會(huì )覺(jué)得有抄襲的嫌疑。所以,在采集
別人的文章時(shí),最好修改一下自己的文章,或者加點(diǎn)圖片。
  最后,想要自己網(wǎng)站采集的內容有一定的質(zhì)量,就不要無(wú)意義的復制粘貼。只有對網(wǎng)站上的文章內容進(jìn)行一定的改動(dòng),才會(huì )產(chǎn)生一定的效果,才能體現出為網(wǎng)站增加內容的作用。
  如果您想與我們合作,請致電: 更多精彩推薦:***.*****.***/

最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 52 次瀏覽 ? 2022-11-21 23:16 ? 來(lái)自相關(guān)話(huà)題

  最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄
  點(diǎn)擊上面java那些東西,選擇star公眾號
  都幾歲了,還在用傳統密碼?10月12日,谷歌宣布在A(yíng)ndroid和Chrome中正式實(shí)施密鑰登錄“PassKey”,逐步取代長(cháng)期密碼登錄“PassWord”。
  推出的一鍵登錄可以認為是“生物密碼”和“授權登錄”的結合。用戶(hù)可以在安卓手機上創(chuàng )建基于公鑰加密的密鑰憑證。創(chuàng )建密鑰時(shí),他們需要進(jìn)行生物特征識別,例如“指紋”或“面部識別”。
  
  創(chuàng )建后,此密鑰憑據可用于解鎖所有在線(xiàn)帳戶(hù)——包括您的 Android 手機和附近所有設備上的帳戶(hù)。是的,這個(gè)FIDO密鑰登錄功能是微軟/蘋(píng)果/谷歌聯(lián)合出品的,是行業(yè)標準。所以它是跨平臺的,包括 Windows、macOS 和 iOS 以及 ChromeOS。換句話(huà)說(shuō),您可以使用 Android 手機的密鑰憑據解鎖上述所有系統上的帳戶(hù)和網(wǎng)站。
  在谷歌看來(lái),密碼登錄的舊認證方式容易受到網(wǎng)絡(luò )釣魚(yú)或黑客攻擊等手段的影響,安全性不高。密鑰登錄則大不相同,不能重復使用,不會(huì )暴露服務(wù)器漏洞,還能保護用戶(hù)免受釣魚(yú)攻擊和忘記密碼。即使手機丟失,也可以從云端備份FIDO密鑰,安全同步到新手機。
  不過(guò)這個(gè)一鍵登錄功能現在還不完善,只是一個(gè)重要的里程碑,實(shí)現了兩個(gè)關(guān)鍵功能:
  
  用戶(hù)可以在他們的 Android 設備上創(chuàng )建和使用密鑰,并且密鑰通過(guò) Google 密碼管理器同步。開(kāi)發(fā)人員可以使用 Chrome 通過(guò) WebAuthn API、Android 和其他受支持的平臺為網(wǎng)站上的用戶(hù)構建關(guān)鍵支持。
  要向網(wǎng)站添加基于密鑰的登錄功能,開(kāi)發(fā)人員需要注冊 Google Play 服務(wù)測試版并使用 Chrome Canary 版本。
  關(guān)鍵登錄功能的下一個(gè)里程碑是原生 Android 應用程序 API。本機 API 將為應用程序提供多種登錄方法。用戶(hù)可以選擇使用密鑰登錄或使用保存的密碼。
  
  最新版:2022 TG營(yíng)銷(xiāo)助手破解版 多功能
  軟件介紹
  Telegram營(yíng)銷(xiāo)助手/TG營(yíng)銷(xiāo)助手是一款集閱讀量采集、用戶(hù)群租用、批量拉人、自動(dòng)回復、自動(dòng)聊天(炒群)等功能于一體的軟件。需要的話(huà)可以用 試試研究下,難怪最近被tg私信騷擾,原來(lái)有這么個(gè)軟件,處理私信騷擾最簡(jiǎn)單粗暴的方法就是取消用戶(hù)名設置。
  1:滑動(dòng)頻道閱讀量(增加頻道閱讀量增加人氣)
  2:用戶(hù)精準采集(采集同行群中的客戶(hù),拉入自己的群實(shí)現交易)
  3:精準群采集(輸入關(guān)鍵詞采集相關(guān)群鏈接,直達自動(dòng)群營(yíng)銷(xiāo))
  4:批量拉人(軟件后臺自動(dòng)批量拉人,可將提前采集
的精準客戶(hù)批量拉到指定群)
  5:自動(dòng)群發(fā)/回復(可自行編輯群發(fā)內容和群)
  6:自動(dòng)進(jìn)群聊天,營(yíng)造活躍的群內氣氛(導入小號,編輯話(huà)術(shù)即可)
  7:群內精準客戶(hù)自動(dòng)私信
  軟件截圖
  教程
  軟件必須先設置好api_id和api_hash這兩個(gè)參數才可以使用??!
  1.設置
  設置代理ip接口地址 接口地址必須以文本格式返回ip+端口號的形式,此處設置的代理ip用于批量注冊
  
  批量修改賬號信息,可以修改賬號名稱(chēng)和頭像。名稱(chēng)分別是 config/first_name.txt 和 config/last_name.txt 中的第一行。
  2. 手動(dòng)登錄/注冊
  填寫(xiě)區號+手機號,點(diǎn)擊獲取驗證碼。收到驗證碼后,輸入驗證碼,賬戶(hù)會(huì )自動(dòng)登錄。session文件存放在sessions目錄下
  3.批量注冊
  當前軟件對接的打碼平臺可以找一個(gè)聯(lián)系人獲取登錄頁(yè)面
  設置好賬號信息、注冊次數、間隔時(shí)間后,就可以開(kāi)始批量注冊了
  first_name.txt和last_name.txt放置注冊時(shí)指定的用戶(hù)昵稱(chēng)(名字),如果文件不存在或文件內容為空,軟件會(huì )隨機生成一個(gè)英文名字
  Avatars 文件夾收錄
注冊時(shí)使用的頭像,軟件會(huì )隨機選擇其中一個(gè)。目前僅支持 .png 和 .jpg 格式。
  所有登錄、注冊、保存的本地賬號都在sessions文件夾下,都是.session文件
  4.采集
用戶(hù)
  給定一個(gè)或多個(gè)公共群的群鏈接,選擇要采集
的信息,ID和用戶(hù)名就不多說(shuō)了,昵稱(chēng)就是用戶(hù)名,時(shí)間就是上次登錄時(shí)間
  在線(xiàn)范圍是采集
指定時(shí)間內登錄的用戶(hù)。這里我采集
了一天之內登錄的用戶(hù)。
  所有運行軟件都會(huì )自動(dòng)讀取sessions文件夾下的賬號登錄
  所有采集
的用戶(hù)名都保存在 CollectData 文件夾中的 users.txt 中
  五、征集組
  
  直接填寫(xiě)關(guān)鍵詞,軟件會(huì )自動(dòng)采集
相關(guān)組別
  所有采集
的數據都在 CollectData 文件夾中的 groups.txt 中
  下面是序號、頻道或群名、群鏈接
  軟件中所有按鈕點(diǎn)擊一次即可,確認所有操作完成后繼續點(diǎn)擊
  6.分批拉人
  軟件可以根據用戶(hù)名拉人,拉入群鏈接填寫(xiě)自己的群,可以是公群也可以是私群,但必須是完整的群鏈接
  我們先從其他組采集點(diǎn)數據進(jìn)來(lái)。這里我們只需要選擇采集
用戶(hù)名,然后篩選群組管理員即可。后面的數據中只會(huì )采集
用戶(hù)名,方便使用。這里我們會(huì )主動(dòng)過(guò)濾機器人和現有用戶(hù)。經(jīng)銷(xiāo)商編號
  把所有數據放在users.txt里面,拉人讀取這個(gè)文件的數據
  每次拉取是每個(gè)賬號拉取的總人數
  總次數為每個(gè)線(xiàn)程登錄的賬號總數
  多線(xiàn)程數是指多少個(gè)賬號會(huì )同時(shí)拉人
  所以總拉人數=每次拉進(jìn)來(lái)的多線(xiàn)程總數
  每個(gè)拉入軟件都有限制,每天最多50個(gè)
  多線(xiàn)程數最好在10以下,太多可能導致batch ban
  最好用老號拉人,新號容易被封,我這里用的都是老號 查看全部

  最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄
  點(diǎn)擊上面java那些東西,選擇star公眾號
  都幾歲了,還在用傳統密碼?10月12日,谷歌宣布在A(yíng)ndroid和Chrome中正式實(shí)施密鑰登錄“PassKey”,逐步取代長(cháng)期密碼登錄“PassWord”。
  推出的一鍵登錄可以認為是“生物密碼”和“授權登錄”的結合。用戶(hù)可以在安卓手機上創(chuàng )建基于公鑰加密的密鑰憑證。創(chuàng )建密鑰時(shí),他們需要進(jìn)行生物特征識別,例如“指紋”或“面部識別”。
  
  創(chuàng )建后,此密鑰憑據可用于解鎖所有在線(xiàn)帳戶(hù)——包括您的 Android 手機和附近所有設備上的帳戶(hù)。是的,這個(gè)FIDO密鑰登錄功能是微軟/蘋(píng)果/谷歌聯(lián)合出品的,是行業(yè)標準。所以它是跨平臺的,包括 Windows、macOS 和 iOS 以及 ChromeOS。換句話(huà)說(shuō),您可以使用 Android 手機的密鑰憑據解鎖上述所有系統上的帳戶(hù)和網(wǎng)站。
  在谷歌看來(lái),密碼登錄的舊認證方式容易受到網(wǎng)絡(luò )釣魚(yú)或黑客攻擊等手段的影響,安全性不高。密鑰登錄則大不相同,不能重復使用,不會(huì )暴露服務(wù)器漏洞,還能保護用戶(hù)免受釣魚(yú)攻擊和忘記密碼。即使手機丟失,也可以從云端備份FIDO密鑰,安全同步到新手機。
  不過(guò)這個(gè)一鍵登錄功能現在還不完善,只是一個(gè)重要的里程碑,實(shí)現了兩個(gè)關(guān)鍵功能:
  
  用戶(hù)可以在他們的 Android 設備上創(chuàng )建和使用密鑰,并且密鑰通過(guò) Google 密碼管理器同步。開(kāi)發(fā)人員可以使用 Chrome 通過(guò) WebAuthn API、Android 和其他受支持的平臺為網(wǎng)站上的用戶(hù)構建關(guān)鍵支持。
  要向網(wǎng)站添加基于密鑰的登錄功能,開(kāi)發(fā)人員需要注冊 Google Play 服務(wù)測試版并使用 Chrome Canary 版本。
  關(guān)鍵登錄功能的下一個(gè)里程碑是原生 Android 應用程序 API。本機 API 將為應用程序提供多種登錄方法。用戶(hù)可以選擇使用密鑰登錄或使用保存的密碼。
  
  最新版:2022 TG營(yíng)銷(xiāo)助手破解版 多功能
  軟件介紹
  Telegram營(yíng)銷(xiāo)助手/TG營(yíng)銷(xiāo)助手是一款集閱讀量采集、用戶(hù)群租用、批量拉人、自動(dòng)回復、自動(dòng)聊天(炒群)等功能于一體的軟件。需要的話(huà)可以用 試試研究下,難怪最近被tg私信騷擾,原來(lái)有這么個(gè)軟件,處理私信騷擾最簡(jiǎn)單粗暴的方法就是取消用戶(hù)名設置。
  1:滑動(dòng)頻道閱讀量(增加頻道閱讀量增加人氣)
  2:用戶(hù)精準采集(采集同行群中的客戶(hù),拉入自己的群實(shí)現交易)
  3:精準群采集(輸入關(guān)鍵詞采集相關(guān)群鏈接,直達自動(dòng)群營(yíng)銷(xiāo))
  4:批量拉人(軟件后臺自動(dòng)批量拉人,可將提前采集
的精準客戶(hù)批量拉到指定群)
  5:自動(dòng)群發(fā)/回復(可自行編輯群發(fā)內容和群)
  6:自動(dòng)進(jìn)群聊天,營(yíng)造活躍的群內氣氛(導入小號,編輯話(huà)術(shù)即可)
  7:群內精準客戶(hù)自動(dòng)私信
  軟件截圖
  教程
  軟件必須先設置好api_id和api_hash這兩個(gè)參數才可以使用??!
  1.設置
  設置代理ip接口地址 接口地址必須以文本格式返回ip+端口號的形式,此處設置的代理ip用于批量注冊
  
  批量修改賬號信息,可以修改賬號名稱(chēng)和頭像。名稱(chēng)分別是 config/first_name.txt 和 config/last_name.txt 中的第一行。
  2. 手動(dòng)登錄/注冊
  填寫(xiě)區號+手機號,點(diǎn)擊獲取驗證碼。收到驗證碼后,輸入驗證碼,賬戶(hù)會(huì )自動(dòng)登錄。session文件存放在sessions目錄下
  3.批量注冊
  當前軟件對接的打碼平臺可以找一個(gè)聯(lián)系人獲取登錄頁(yè)面
  設置好賬號信息、注冊次數、間隔時(shí)間后,就可以開(kāi)始批量注冊了
  first_name.txt和last_name.txt放置注冊時(shí)指定的用戶(hù)昵稱(chēng)(名字),如果文件不存在或文件內容為空,軟件會(huì )隨機生成一個(gè)英文名字
  Avatars 文件夾收錄
注冊時(shí)使用的頭像,軟件會(huì )隨機選擇其中一個(gè)。目前僅支持 .png 和 .jpg 格式。
  所有登錄、注冊、保存的本地賬號都在sessions文件夾下,都是.session文件
  4.采集
用戶(hù)
  給定一個(gè)或多個(gè)公共群的群鏈接,選擇要采集
的信息,ID和用戶(hù)名就不多說(shuō)了,昵稱(chēng)就是用戶(hù)名,時(shí)間就是上次登錄時(shí)間
  在線(xiàn)范圍是采集
指定時(shí)間內登錄的用戶(hù)。這里我采集
了一天之內登錄的用戶(hù)。
  所有運行軟件都會(huì )自動(dòng)讀取sessions文件夾下的賬號登錄
  所有采集
的用戶(hù)名都保存在 CollectData 文件夾中的 users.txt 中
  五、征集組
  
  直接填寫(xiě)關(guān)鍵詞,軟件會(huì )自動(dòng)采集
相關(guān)組別
  所有采集
的數據都在 CollectData 文件夾中的 groups.txt 中
  下面是序號、頻道或群名、群鏈接
  軟件中所有按鈕點(diǎn)擊一次即可,確認所有操作完成后繼續點(diǎn)擊
  6.分批拉人
  軟件可以根據用戶(hù)名拉人,拉入群鏈接填寫(xiě)自己的群,可以是公群也可以是私群,但必須是完整的群鏈接
  我們先從其他組采集點(diǎn)數據進(jìn)來(lái)。這里我們只需要選擇采集
用戶(hù)名,然后篩選群組管理員即可。后面的數據中只會(huì )采集
用戶(hù)名,方便使用。這里我們會(huì )主動(dòng)過(guò)濾機器人和現有用戶(hù)。經(jīng)銷(xiāo)商編號
  把所有數據放在users.txt里面,拉人讀取這個(gè)文件的數據
  每次拉取是每個(gè)賬號拉取的總人數
  總次數為每個(gè)線(xiàn)程登錄的賬號總數
  多線(xiàn)程數是指多少個(gè)賬號會(huì )同時(shí)拉人
  所以總拉人數=每次拉進(jìn)來(lái)的多線(xiàn)程總數
  每個(gè)拉入軟件都有限制,每天最多50個(gè)
  多線(xiàn)程數最好在10以下,太多可能導致batch ban
  最好用老號拉人,新號容易被封,我這里用的都是老號

內容分享:用戶(hù)日志采集

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2022-11-21 20:18 ? 來(lái)自相關(guān)話(huà)題

  內容分享:用戶(hù)日志采集
  大數據日志采集
  
  細細品味,細細品味,今天我們就來(lái)看看日漸流行的日志服務(wù)在數據中的作用。1、為什么要采集
日志?談到大數據,第一步總是數據采集
。只有有了原創(chuàng )
數據,才能進(jìn)行后續的存儲、處理、分析、應用和展示。數據采集
有兩個(gè)難點(diǎn),一是如何采集
數據(技術(shù)問(wèn)題),二是如何獲取非公司數據(政策問(wèn)題)。政策問(wèn)題更多的是依靠雙方的平等交流來(lái)為數據提供者帶來(lái)利益。與技術(shù)問(wèn)題相比,這個(gè)問(wèn)題更難得到有效和永久的解決。今天我們重點(diǎn)討論如何采集
數據的技術(shù)問(wèn)題。?二、如何采集
日志數據?一般來(lái)說(shuō),采集
數據有兩種技術(shù)方法。一種是直接從數據庫中提取已經(jīng)存儲在數據庫中的數據,另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。
  
  276
  干貨教程:神技能-不用Python,采集98%網(wǎng)頁(yè)公開(kāi)數據(教程)
  滿(mǎn)足福利:
 ?。ü娞柣貜?09可獲得以下三本書(shū))
  《白手起家》簡(jiǎn)介
  《從零開(kāi)始運營(yíng)》進(jìn)階篇
  第39次《中國互聯(lián)網(wǎng)絡(luò )發(fā)展狀況統計報告》
  用于數據分析喵
  十年生死
  數據人,忙
  好日子的美景增添了我的凄涼
  早晚不安
  研究緊迫
  報告瘋子
  思緒在夜里閃過(guò)
  尋找筆記
  怕忘記
  多變的需求
  所以呢
  預計半夜加班
  聽(tīng)家人的話(huà)
  打鼾聲
  以上是一個(gè)資深數據分析師寫(xiě)的自嘲段子,卻是很多分析師的真實(shí)寫(xiě)照。在耀眼的職業(yè)光環(huán)下,數據分析師的成長(cháng)幾乎伴隨著(zhù)孤獨,他們是在高級雜務(wù)中鍛造的。
  很多做生意的小伙伴
  感覺(jué)吉吉也是假數據分析師,
  因為需要參考各種資料,
  支持決策,
  數據的嚴謹性,
  決定決策的成敗。
 ?。ㄒ矝Q定了老板會(huì )不會(huì )放你走)
  因此,運營(yíng)商往往需要借助爬蟲(chóng)來(lái)抓取自己想要的數據。比如他們想獲取一個(gè)電商網(wǎng)站的評論數據,往往需要寫(xiě)一段代碼,用python抓取相應的內容。
  說(shuō)到代碼,我好像看到了很多芭比娃娃絕望的樣子。
  你想學(xué)習Excel函數嗎?
  你想學(xué)習 SQL 嗎?
  你想學(xué)習 Python 嗎?
  你想學(xué)R嗎?
  看代碼頭疼怎么辦?
  沒(méi)有編程基礎怎么辦?
  所以,你不明白代碼,
  易于新手使用的工具
  看著(zhù)這個(gè)寶貝真誠的眼神
  你有沒(méi)有在黑暗中看到一絲光的興奮
  這并不奇怪
  
  驚不驚?
  1個(gè)
  什么是爬行動(dòng)物
  什么是爬行動(dòng)物?爬蟲(chóng)就是網(wǎng)絡(luò )爬蟲(chóng),一種自動(dòng)獲取網(wǎng)頁(yè)內容的程序。它是搜索引擎的重要組成部分,所以搜索引擎優(yōu)化很大程度上是針對爬蟲(chóng)進(jìn)行優(yōu)化的。
  簡(jiǎn)單來(lái)說(shuō),它可以采集
網(wǎng)頁(yè)上的數據信息。當然,國內外也有很多老牌的爬蟲(chóng)工具。使用難度和采集準確度不同,適用人群也有差異。
  今天要給大家介紹的這個(gè)工具叫做:優(yōu)采云
Collector。
  新手可以用它來(lái)處理一些大批量的數據,高手也可以擴展它更高級的功能。
  2個(gè)
  采集
資料有什么用
  網(wǎng)絡(luò )數據采集其實(shí)是一個(gè)可以影響各行各業(yè)的行業(yè)。從PC時(shí)代到現在,它的用途非常廣泛。
  這里介紹一些比較常見(jiàn)的用途,包括但不限于這些用途,所以如果要仔細羅列,也可以寫(xiě)成百上千。因為,同一份數據,不同的人有不同的用法。
  1.財務(wù)數據,如季報、年報、財報,包括自動(dòng)采集最新的每日凈值。
  2、各大新聞門(mén)戶(hù)網(wǎng)站實(shí)時(shí)監控,自動(dòng)更新上傳最新消息。
  3、監控競爭對手的最新信息,包括商品價(jià)格、庫存等。
  4. 監控各大社交網(wǎng)站和博客,自動(dòng)抓取對企業(yè)產(chǎn)品的相關(guān)評論。
  5、采集
最新最全的職位招聘信息。
  6、關(guān)注各大房地產(chǎn)相關(guān)網(wǎng)站,采集
最新的新房、二手房市場(chǎng)行情。
  7. 從各大汽車(chē)網(wǎng)站采集
特定的新車(chē)和二手車(chē)信息。
  8、發(fā)現并采集
潛在客戶(hù)信息。
  9. 從行業(yè)網(wǎng)站采集
產(chǎn)品目錄和產(chǎn)品信息。
  10.同步各大電商平臺的商品信息,做到在一個(gè)平臺發(fā)布,在其他平臺自動(dòng)更新。
  3個(gè)
  操作演示
  門(mén)戶(hù)網(wǎng)站:
  首先進(jìn)入官網(wǎng),下載并注冊
 ?。ㄊ堑?,是的,這是胡說(shuō)八道)
  網(wǎng)友提示:目前優(yōu)采云
采集器只支持Windows系列操作系統。下面我就通過(guò)采集
幾個(gè)網(wǎng)站的數據來(lái)給大家演示一下。
  進(jìn)入優(yōu)采云
采集器首頁(yè),可以看到一個(gè)搜索欄,這是SMART模式,可以不配置規則進(jìn)行采集。
  SMART模式暫時(shí)只支持采集帶有列表或表格信息的網(wǎng)頁(yè),例如:電商網(wǎng)站、一些生活服務(wù)類(lèi)網(wǎng)站的商品列表的商品信息等。
 ?。ū緢D為58廣州同城搜集的租房信息)
  但是,SMART模式的適用范圍較窄。讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  接下來(lái),讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  這里我選擇列表并采集
詳細信息給大家演示一下,比較直觀(guān)。
  給任務(wù)起個(gè)任務(wù)名并創(chuàng )建一個(gè)任務(wù)組,將要采集的網(wǎng)址復制粘貼到下方的采集地址欄中。
  
  選擇打開(kāi)頁(yè)面中的第一家和最后一家店鋪,采集器會(huì )自動(dòng)采集它們之間的所有店鋪,如紅框所示。
  向導模式?jīng)]有先設置翻頁(yè),然后我們直接采集字段,就是你進(jìn)入某個(gè)店鋪后要采集的數據,比如店名或者地址。
  采集完成后點(diǎn)擊下一步,這里選擇開(kāi)始單機采集,因為我用的是免費版,所以沒(méi)有云采集功能,采集效率會(huì )比較慢。
  如下圖所示,我們采集到的數據會(huì )以表格的形式展示出來(lái)。采集速度一開(kāi)始會(huì )有點(diǎn)慢,之后會(huì )穩定在一個(gè)比較高的速度,主要是受網(wǎng)速的影響。
  二是進(jìn)階模式。有一定基礎的朋友可以使用這個(gè)模式。需要自己配置規則,就是采集的范圍,是否需要翻頁(yè)。
  我就用豆瓣網(wǎng)的電影合集給大家演示一下。大家都知道豆瓣的評分是比較靠譜的,所以這樣的數據對于我們的分析非常有用,比如建立類(lèi)似的網(wǎng)站。
  高級模式有兩個(gè)進(jìn)入途徑,第一個(gè)是右側高級模式中的“開(kāi)始采集
”按鈕框,另一個(gè)是直接點(diǎn)擊左下角的快速啟動(dòng)(適合熟練者)。
  任務(wù)名稱(chēng)和任務(wù)組可以參照向導方式在這里填寫(xiě)。這里先說(shuō)一下設計流程。這是整個(gè)優(yōu)采云
采集
器中比較重要的一個(gè)部分,因為它會(huì )影響到后續采集
的成功與否。
  按照第一步,將左上角的網(wǎng)頁(yè)框拖到豎線(xiàn)上,然后按第二步,在出現的頁(yè)面地址欄中輸入要采集的網(wǎng)址。還有一種采集
網(wǎng)址的方法,直接在瀏覽器下面的搜索欄里輸入網(wǎng)址,然后點(diǎn)擊右邊的小地球圖標。
  由于之前已經(jīng)配置好了規則,涉及到正則表達式、替換和翻頁(yè)循環(huán),這里就不演示第二步的其他操作了。這個(gè)對于初學(xué)者來(lái)說(shuō)有點(diǎn)復雜,圖文并茂不好解釋?zhuān)灾苯舆M(jìn)入第三步設置執行計劃。
  勾選禁止瀏覽器加載圖片可以讓采集速度變快,因為有些網(wǎng)站在采集過(guò)程中會(huì )一直加載網(wǎng)頁(yè),導致采集速度過(guò)慢。
  采集
的電影數據非常詳細。
  然后就可以導出采集到的數據了,一般我都是導出為表格。注意:因為我用的是免費版,每次導出需要支付一定的積分,導出10條數據需要1積分,以此類(lèi)推。
  在優(yōu)采云
官網(wǎng)注冊賬號,然后每天簽到獲得30積分,完善以下部分合作網(wǎng)站賬號每個(gè)獲得1000積分,這樣還可以使用免費版導出數據。
  我這里也采集
了58同城和美團外賣(mài)的一些數據。限于篇幅,這里附上圖給大家看看,省略配置采集過(guò)程,操作類(lèi)似豆瓣網(wǎng)采集。
  同城58租房信息
  美團外賣(mài)門(mén)店信息
  將采集到的數據導出到表格中,然后將導出的表格導入到Micromap中,可以幫助我們更直觀(guān)的分析數據。微地圖會(huì )自動(dòng)將采集到的數據制作成餅圖、柱狀圖、詞云圖、比例情況等。
  你可能還有一個(gè)疑問(wèn),如果我辛辛苦苦配置的規則被關(guān)閉了,我是不是還要重新設置?這不是很麻煩嗎?以后我會(huì )采集
那個(gè)領(lǐng)域的資料。
  針對這種情況,我們可以找到之前創(chuàng )建的任務(wù),比如58同城出租的任務(wù),右鍵選擇導出任務(wù),即導出其規則。
  即使以后不在同一臺電腦上操作,將導出的規則文件導入其他電腦的優(yōu)采云
采集器也很方便。
  讓我向您介紹另一種方法。比如遇到一些我們不知道如何配置的采集規則,其實(shí)可以登錄左多官網(wǎng)下載一個(gè)采集規則來(lái)使用。
  比如下圖中的淘寶商品信息合集,下載后我們可以省略自己配置的過(guò)程。當然,還有一些收費規則,這里就不推薦了。
  對于優(yōu)采云
采集
器的學(xué)習,我現在也只是略知一二。還有很多高級功能有待發(fā)掘,各種精致的采集
需要不斷的學(xué)習和再學(xué)習。
  - 結尾 -
  延伸閱讀 查看全部

  內容分享:用戶(hù)日志采集
  大數據日志采集
  
  細細品味,細細品味,今天我們就來(lái)看看日漸流行的日志服務(wù)在數據中的作用。1、為什么要采集
日志?談到大數據,第一步總是數據采集
。只有有了原創(chuàng )
數據,才能進(jìn)行后續的存儲、處理、分析、應用和展示。數據采集
有兩個(gè)難點(diǎn),一是如何采集
數據(技術(shù)問(wèn)題),二是如何獲取非公司數據(政策問(wèn)題)。政策問(wèn)題更多的是依靠雙方的平等交流來(lái)為數據提供者帶來(lái)利益。與技術(shù)問(wèn)題相比,這個(gè)問(wèn)題更難得到有效和永久的解決。今天我們重點(diǎn)討論如何采集
數據的技術(shù)問(wèn)題。?二、如何采集
日志數據?一般來(lái)說(shuō),采集
數據有兩種技術(shù)方法。一種是直接從數據庫中提取已經(jīng)存儲在數據庫中的數據,另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。
  
  276
  干貨教程:神技能-不用Python,采集98%網(wǎng)頁(yè)公開(kāi)數據(教程)
  滿(mǎn)足福利:
 ?。ü娞柣貜?09可獲得以下三本書(shū))
  《白手起家》簡(jiǎn)介
  《從零開(kāi)始運營(yíng)》進(jìn)階篇
  第39次《中國互聯(lián)網(wǎng)絡(luò )發(fā)展狀況統計報告》
  用于數據分析喵
  十年生死
  數據人,忙
  好日子的美景增添了我的凄涼
  早晚不安
  研究緊迫
  報告瘋子
  思緒在夜里閃過(guò)
  尋找筆記
  怕忘記
  多變的需求
  所以呢
  預計半夜加班
  聽(tīng)家人的話(huà)
  打鼾聲
  以上是一個(gè)資深數據分析師寫(xiě)的自嘲段子,卻是很多分析師的真實(shí)寫(xiě)照。在耀眼的職業(yè)光環(huán)下,數據分析師的成長(cháng)幾乎伴隨著(zhù)孤獨,他們是在高級雜務(wù)中鍛造的。
  很多做生意的小伙伴
  感覺(jué)吉吉也是假數據分析師,
  因為需要參考各種資料,
  支持決策,
  數據的嚴謹性,
  決定決策的成敗。
 ?。ㄒ矝Q定了老板會(huì )不會(huì )放你走)
  因此,運營(yíng)商往往需要借助爬蟲(chóng)來(lái)抓取自己想要的數據。比如他們想獲取一個(gè)電商網(wǎng)站的評論數據,往往需要寫(xiě)一段代碼,用python抓取相應的內容。
  說(shuō)到代碼,我好像看到了很多芭比娃娃絕望的樣子。
  你想學(xué)習Excel函數嗎?
  你想學(xué)習 SQL 嗎?
  你想學(xué)習 Python 嗎?
  你想學(xué)R嗎?
  看代碼頭疼怎么辦?
  沒(méi)有編程基礎怎么辦?
  所以,你不明白代碼,
  易于新手使用的工具
  看著(zhù)這個(gè)寶貝真誠的眼神
  你有沒(méi)有在黑暗中看到一絲光的興奮
  這并不奇怪
  
  驚不驚?
  1個(gè)
  什么是爬行動(dòng)物
  什么是爬行動(dòng)物?爬蟲(chóng)就是網(wǎng)絡(luò )爬蟲(chóng),一種自動(dòng)獲取網(wǎng)頁(yè)內容的程序。它是搜索引擎的重要組成部分,所以搜索引擎優(yōu)化很大程度上是針對爬蟲(chóng)進(jìn)行優(yōu)化的。
  簡(jiǎn)單來(lái)說(shuō),它可以采集
網(wǎng)頁(yè)上的數據信息。當然,國內外也有很多老牌的爬蟲(chóng)工具。使用難度和采集準確度不同,適用人群也有差異。
  今天要給大家介紹的這個(gè)工具叫做:優(yōu)采云
Collector。
  新手可以用它來(lái)處理一些大批量的數據,高手也可以擴展它更高級的功能。
  2個(gè)
  采集
資料有什么用
  網(wǎng)絡(luò )數據采集其實(shí)是一個(gè)可以影響各行各業(yè)的行業(yè)。從PC時(shí)代到現在,它的用途非常廣泛。
  這里介紹一些比較常見(jiàn)的用途,包括但不限于這些用途,所以如果要仔細羅列,也可以寫(xiě)成百上千。因為,同一份數據,不同的人有不同的用法。
  1.財務(wù)數據,如季報、年報、財報,包括自動(dòng)采集最新的每日凈值。
  2、各大新聞門(mén)戶(hù)網(wǎng)站實(shí)時(shí)監控,自動(dòng)更新上傳最新消息。
  3、監控競爭對手的最新信息,包括商品價(jià)格、庫存等。
  4. 監控各大社交網(wǎng)站和博客,自動(dòng)抓取對企業(yè)產(chǎn)品的相關(guān)評論。
  5、采集
最新最全的職位招聘信息。
  6、關(guān)注各大房地產(chǎn)相關(guān)網(wǎng)站,采集
最新的新房、二手房市場(chǎng)行情。
  7. 從各大汽車(chē)網(wǎng)站采集
特定的新車(chē)和二手車(chē)信息。
  8、發(fā)現并采集
潛在客戶(hù)信息。
  9. 從行業(yè)網(wǎng)站采集
產(chǎn)品目錄和產(chǎn)品信息。
  10.同步各大電商平臺的商品信息,做到在一個(gè)平臺發(fā)布,在其他平臺自動(dòng)更新。
  3個(gè)
  操作演示
  門(mén)戶(hù)網(wǎng)站:
  首先進(jìn)入官網(wǎng),下載并注冊
 ?。ㄊ堑?,是的,這是胡說(shuō)八道)
  網(wǎng)友提示:目前優(yōu)采云
采集器只支持Windows系列操作系統。下面我就通過(guò)采集
幾個(gè)網(wǎng)站的數據來(lái)給大家演示一下。
  進(jìn)入優(yōu)采云
采集器首頁(yè),可以看到一個(gè)搜索欄,這是SMART模式,可以不配置規則進(jìn)行采集。
  SMART模式暫時(shí)只支持采集帶有列表或表格信息的網(wǎng)頁(yè),例如:電商網(wǎng)站、一些生活服務(wù)類(lèi)網(wǎng)站的商品列表的商品信息等。
 ?。ū緢D為58廣州同城搜集的租房信息)
  但是,SMART模式的適用范圍較窄。讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  接下來(lái),讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  這里我選擇列表并采集
詳細信息給大家演示一下,比較直觀(guān)。
  給任務(wù)起個(gè)任務(wù)名并創(chuàng )建一個(gè)任務(wù)組,將要采集的網(wǎng)址復制粘貼到下方的采集地址欄中。
  
  選擇打開(kāi)頁(yè)面中的第一家和最后一家店鋪,采集器會(huì )自動(dòng)采集它們之間的所有店鋪,如紅框所示。
  向導模式?jīng)]有先設置翻頁(yè),然后我們直接采集字段,就是你進(jìn)入某個(gè)店鋪后要采集的數據,比如店名或者地址。
  采集完成后點(diǎn)擊下一步,這里選擇開(kāi)始單機采集,因為我用的是免費版,所以沒(méi)有云采集功能,采集效率會(huì )比較慢。
  如下圖所示,我們采集到的數據會(huì )以表格的形式展示出來(lái)。采集速度一開(kāi)始會(huì )有點(diǎn)慢,之后會(huì )穩定在一個(gè)比較高的速度,主要是受網(wǎng)速的影響。
  二是進(jìn)階模式。有一定基礎的朋友可以使用這個(gè)模式。需要自己配置規則,就是采集的范圍,是否需要翻頁(yè)。
  我就用豆瓣網(wǎng)的電影合集給大家演示一下。大家都知道豆瓣的評分是比較靠譜的,所以這樣的數據對于我們的分析非常有用,比如建立類(lèi)似的網(wǎng)站。
  高級模式有兩個(gè)進(jìn)入途徑,第一個(gè)是右側高級模式中的“開(kāi)始采集
”按鈕框,另一個(gè)是直接點(diǎn)擊左下角的快速啟動(dòng)(適合熟練者)。
  任務(wù)名稱(chēng)和任務(wù)組可以參照向導方式在這里填寫(xiě)。這里先說(shuō)一下設計流程。這是整個(gè)優(yōu)采云
采集
器中比較重要的一個(gè)部分,因為它會(huì )影響到后續采集
的成功與否。
  按照第一步,將左上角的網(wǎng)頁(yè)框拖到豎線(xiàn)上,然后按第二步,在出現的頁(yè)面地址欄中輸入要采集的網(wǎng)址。還有一種采集
網(wǎng)址的方法,直接在瀏覽器下面的搜索欄里輸入網(wǎng)址,然后點(diǎn)擊右邊的小地球圖標。
  由于之前已經(jīng)配置好了規則,涉及到正則表達式、替換和翻頁(yè)循環(huán),這里就不演示第二步的其他操作了。這個(gè)對于初學(xué)者來(lái)說(shuō)有點(diǎn)復雜,圖文并茂不好解釋?zhuān)灾苯舆M(jìn)入第三步設置執行計劃。
  勾選禁止瀏覽器加載圖片可以讓采集速度變快,因為有些網(wǎng)站在采集過(guò)程中會(huì )一直加載網(wǎng)頁(yè),導致采集速度過(guò)慢。
  采集
的電影數據非常詳細。
  然后就可以導出采集到的數據了,一般我都是導出為表格。注意:因為我用的是免費版,每次導出需要支付一定的積分,導出10條數據需要1積分,以此類(lèi)推。
  在優(yōu)采云
官網(wǎng)注冊賬號,然后每天簽到獲得30積分,完善以下部分合作網(wǎng)站賬號每個(gè)獲得1000積分,這樣還可以使用免費版導出數據。
  我這里也采集
了58同城和美團外賣(mài)的一些數據。限于篇幅,這里附上圖給大家看看,省略配置采集過(guò)程,操作類(lèi)似豆瓣網(wǎng)采集。
  同城58租房信息
  美團外賣(mài)門(mén)店信息
  將采集到的數據導出到表格中,然后將導出的表格導入到Micromap中,可以幫助我們更直觀(guān)的分析數據。微地圖會(huì )自動(dòng)將采集到的數據制作成餅圖、柱狀圖、詞云圖、比例情況等。
  你可能還有一個(gè)疑問(wèn),如果我辛辛苦苦配置的規則被關(guān)閉了,我是不是還要重新設置?這不是很麻煩嗎?以后我會(huì )采集
那個(gè)領(lǐng)域的資料。
  針對這種情況,我們可以找到之前創(chuàng )建的任務(wù),比如58同城出租的任務(wù),右鍵選擇導出任務(wù),即導出其規則。
  即使以后不在同一臺電腦上操作,將導出的規則文件導入其他電腦的優(yōu)采云
采集器也很方便。
  讓我向您介紹另一種方法。比如遇到一些我們不知道如何配置的采集規則,其實(shí)可以登錄左多官網(wǎng)下載一個(gè)采集規則來(lái)使用。
  比如下圖中的淘寶商品信息合集,下載后我們可以省略自己配置的過(guò)程。當然,還有一些收費規則,這里就不推薦了。
  對于優(yōu)采云
采集
器的學(xué)習,我現在也只是略知一二。還有很多高級功能有待發(fā)掘,各種精致的采集
需要不斷的學(xué)習和再學(xué)習。
  - 結尾 -
  延伸閱讀

解決方案:從0到1搭建高性能實(shí)時(shí)日志系統

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-11-18 08:13 ? 來(lái)自相關(guān)話(huà)題

  解決方案:從0到1搭建高性能實(shí)時(shí)日志系統
  建筑師(JiaGouX) 我們都是建筑師!
  共創(chuàng )未來(lái),你會(huì )來(lái)嗎?
  因公眾號推送規則變更,請第一時(shí)間點(diǎn)擊“在看”加“星”獲取精彩技術(shù)分享
  你是否經(jīng)常遇到需要在線(xiàn)查看日志卻又長(cháng)時(shí)間聯(lián)系不到用戶(hù)上報日志的情況?或者你是否經(jīng)常陷入存儲空間不足導致日志無(wú)法寫(xiě)入的尷尬?本文介紹美團如何從0到1搭建高性能的終端實(shí)時(shí)日志系統,徹底解決了日志丟失和寫(xiě)滿(mǎn)的問(wèn)題。希望能給您帶來(lái)一些幫助和啟發(fā)。
  2 設計實(shí)現
  3 穩定性保證
  4 成就
  5 未來(lái)規劃
  1 背景 1.1 Logan簡(jiǎn)介 Logan是美團統一的終端日志服務(wù)。已支持移動(dòng)APP、Web、小程序、IoT等多種環(huán)境,具備日志采集、存儲、上傳、查詢(xún)、分析等能力。幫助用戶(hù)定位研發(fā)問(wèn)題,提升排查效率。同時(shí),Logan也是業(yè)界較早開(kāi)源的大型前端日志系統,具有寫(xiě)入性能高、安全性高、日志防丟失等優(yōu)點(diǎn)。1.2 登錄工作流程 為了方便讀者更好的理解登錄系統的工作原理,下圖是一個(gè)簡(jiǎn)化的登錄系統工作流程。主要分為以下幾個(gè)部分:
  圖1 登錄系統工作流程圖 1.3 為什么需要實(shí)時(shí)日志?前文提到,這種“本地存儲+主動(dòng)上報”的模式雖然解決了大前端場(chǎng)景下基本的日志使用需求,但隨著(zhù)業(yè)務(wù)復雜度的不斷提升,用戶(hù)對日志的要求也越來(lái)越高。當前 Logan 架構存在的問(wèn)題也越來(lái)越突出,主要體現在以下幾個(gè)方面: 部分場(chǎng)景下日志的上報受限:因為用戶(hù)在 Web 和小程序上的一般使用場(chǎng)景是離開(kāi)后使用,當在線(xiàn)出現問(wèn)題時(shí),聯(lián)系用戶(hù)主動(dòng)上報日志。整個(gè)處理周期長(cháng),可能會(huì )錯過(guò)最佳故障排除時(shí)機。缺乏實(shí)時(shí)分析和告警能力:目前,缺乏實(shí)時(shí)分析和告警能力。用戶(hù)多次提到,他們想監控線(xiàn)上的異常日志,當出現符合規則的異常日志時(shí),接收告警信息。缺乏全鏈路跟蹤能力:目前多端日志分散在各個(gè)系統中。研發(fā)人員在定位問(wèn)題時(shí)需要手動(dòng)關(guān)聯(lián)日志,操作起來(lái)非常不方便。美團缺乏通用的全鏈路跟蹤解決方案。針對以上痛點(diǎn),我們提出了Logan實(shí)時(shí)日志的構建,旨在提供一個(gè)統一的、高性能的實(shí)時(shí)日志服務(wù),解決美團不同業(yè)務(wù)系統想要登錄云端的需求。這個(gè)階段。1.4 什么是Logan實(shí)時(shí)日志?Logan實(shí)時(shí)日志是一個(gè)服務(wù)于手機App的實(shí)時(shí)日志解決方案,Web、小程序、IoT等終端場(chǎng)景。旨在提供高擴展性、高性能、高可靠性的實(shí)時(shí)日志服務(wù),包括日志采集、上傳、處理、消費、投遞、查詢(xún)和分析能力。
  圖2 洛根實(shí)時(shí)日志產(chǎn)品功能 圖2 設計與實(shí)現 2.1 總體架構
  
  圖3 洛根實(shí)時(shí)日志的整體架構如上圖所示。整體架構主要分為五個(gè)部分,分別是: 2.2 采集通用采集端架構,解決跨平臺復用采集Device SDK用于設備端日志采集和需求在各種終端環(huán)境中實(shí)施。但由于終端和平臺眾多,技術(shù)棧和運行環(huán)境不一致,多終端的開(kāi)發(fā)和維護成本會(huì )比較高。因此,我們設計了一套核心邏輯復用的通用采集端架構,具體的平臺相關(guān)代碼單獨適配。我們推出了微信、MMP、Web、MRN終端,邏輯層代碼已經(jīng)完全復用。采集
  圖4 采集端SDK架構圖 關(guān)鍵模塊介紹:磁盤(pán)緩存+報表恢復防止日志丟失 為了方便讀者更好的理解端日志采集流程,下面將介紹采集詳細結束流程設計。采集端初始化API開(kāi)始調用時(shí),首先創(chuàng )建Logger、Encryptor、Storage等實(shí)例對象,并異步拉取環(huán)境配置文件。初始化完成后,首先檢查是否有放置成功,但報告失敗的日志,如果有,則立即恢復上傳過(guò)程。正常調用寫(xiě)日志接口時(shí),將原創(chuàng )日志加密后加入當前上報組。當報告事件(時(shí)間、條目數、導航等)發(fā)生時(shí) )被觸發(fā),當前上報組的所有日志加入上報隊列并上傳。采集終端詳細流程圖如下:
  圖5 采集SDK流程圖 2.3 數據接入層 對于實(shí)時(shí)日志系統,接入層需要滿(mǎn)足以下要求: (1) 支持公網(wǎng)域名上報;(2) 支持高并發(fā)處理;(3) 實(shí)時(shí)性高,延時(shí)在分鐘級;(4) 支持向Kafka消息隊列投遞數據。經(jīng)過(guò)對比,美團統一的日志采集通道都滿(mǎn)足以上需求,所以我們選擇了統一的日志采集通道作為接入層。采集端SDK通過(guò)獨立的公共域名上報日志后,采集通道將日志數據匯總后投遞到指定的Kafka消息隊列。如果讀者公司沒(méi)有類(lèi)似的日志采集渠道,
  圖6 接入層流程圖 2.4 數據處理層 在數據處理框架的技術(shù)選擇上,我們考慮了傳統架構(Java應用)、Storm架構、Flink架構三種方案。尺寸對比數據如下:
  表1 技術(shù)選型對比表 總的來(lái)說(shuō),傳統架構雖然成熟度和靈活性都比較好,但是在擴展性、容錯性、性能等方面不能滿(mǎn)足系統的要求,而Flink架構和Storm架構則相對優(yōu)秀。擴展性和容錯性,但是Flink架構在延遲和吞吐量方面表現更好,所以我們最終選擇了Flink架構作為數據處理框架。Flink:業(yè)界領(lǐng)先的流式計算引擎,具有高吞吐、低延遲、高可靠、精準計算等特點(diǎn)。它對事件窗口的支持非常好,被業(yè)界許多公司認為是首選的流計算引擎。在日志處理流程的設計中,日志數據經(jīng)過(guò)接入層處理后投遞到summary topic,再通過(guò)Flink job的邏輯處理分發(fā)到下游。處理流程如下圖所示:
  圖7 日志處理層流程圖 匯總的日志數據處理和分發(fā)依賴(lài)于實(shí)時(shí)計算平臺的實(shí)時(shí)運算能力。底層使用Flink數據處理引擎,主要負責日志數據的解析,日志內容的解密,拆分到下游。元數據解析:通過(guò)實(shí)時(shí)運算能力將原創(chuàng )日志數據解析為JSON對象數據。內容解密:對加密后的內容進(jìn)行解密,其中使用非對稱(chēng)協(xié)商計算出對稱(chēng)加密密鑰,然后進(jìn)行解密。服務(wù)維度拆分:通過(guò)topic字段將日志分發(fā)到各個(gè)業(yè)務(wù)系統所屬的topic中,實(shí)現業(yè)務(wù)日志的相互隔離。數據自定義處理:根據用戶(hù)自定義的處理語(yǔ)法模板,實(shí)時(shí)消費處理從服務(wù)主題到自定義主題的數據。2.5 數據消費層
  對于大多數用戶(hù)來(lái)說(shuō),Logan實(shí)時(shí)日志提供的日志采集、處理、檢索能力可以滿(mǎn)足他們的大部分需求。但在與用戶(hù)交流的過(guò)程中,我們發(fā)現還有一些更高層次的需求,比如指標監控、前后端鏈路對接、離線(xiàn)數據計算等。因此,我們將Logan標準化的日志統一下發(fā)到Kafka流處理平臺,并提供一些通用的數據轉換能力,方便用戶(hù)按需接入不同的第三方系統。數據消費層設計如下圖所示:
  圖 8 數據消費層設計圖 數據消費層的一些典型應用場(chǎng)景: 網(wǎng)絡(luò )全鏈路跟蹤:現階段前后端日志可能分布在不同的系統中,前端日志系統主要記錄代碼級日志、端到端日志等,后端日志系統記錄鏈接關(guān)系、服務(wù)耗時(shí)等信息。通過(guò)羅根實(shí)時(shí)日志開(kāi)放的數據消費能力,用戶(hù)可以根據自己的需求拼接多端日志,實(shí)現網(wǎng)絡(luò )全鏈路跟蹤。指標聚合統計&amp;告警:實(shí)時(shí)日志也是一種實(shí)時(shí)數據流,可以作為指標數據上報的載體。如果日志數據接入數據統計平臺,可實(shí)現指標監測和報警。離線(xiàn)數據分析:如果某些需求場(chǎng)景需要對數據進(jìn)行長(cháng)期存儲或離線(xiàn)分析,可以將數據導入Hive來(lái)實(shí)現。2.6 日志平臺
  
  日志平臺的核心功能是為用戶(hù)提供日志檢索支持。日志平臺提供用戶(hù)ID、自定義標簽、關(guān)鍵字等多種檢索過(guò)濾方式。在底層日志存儲架構的選擇上,目前業(yè)界普遍采用Elasticsearch??紤]到計費和運維成本的關(guān)系,美團已經(jīng)有了統一的框架可以使用,所以我們也選擇了Elasticsearch架構。同時(shí),我們也通過(guò)一個(gè)單獨的接口層來(lái)支持其他的存儲引擎。日志查詢(xún)流程如下:
  圖9 日志查詢(xún)流程設計圖 Elasticsearch:是分布式開(kāi)源搜索分析引擎,具有訪(fǎng)問(wèn)成本低、擴展性高、近實(shí)時(shí)等優(yōu)點(diǎn),更適合大數據的全文檢索服務(wù)3 穩定性保障 3.1 核心監控 為了衡量終端實(shí)時(shí)日志系統的可用性,我們制定了以下核心SLA指標:
  表2 核心SLA指標表 除了核心指標監控,我們還搭建了全程監控面板,涵蓋了子端上報成功率、域名可用性、域名QPS、作業(yè)吞吐量等重要觀(guān)察指標,以及聚合記錄的平均數量。針對上報成功率、域名QPS、作業(yè)吞吐量等,配置一體化告警。當線(xiàn)上出現異常時(shí),第一時(shí)間發(fā)現并處理。3.2 藍綠發(fā)布
  實(shí)時(shí)日志依賴(lài)于實(shí)時(shí)作業(yè)的處理和計算能力,但是實(shí)時(shí)作業(yè)的發(fā)布和部署目前還不能無(wú)縫對接,中間可能會(huì )出現真空。重啟作業(yè)時(shí),需要先停止原來(lái)的作業(yè),然后再啟動(dòng)新的作業(yè)。如果遇到代碼故障或者系統資源不足,就會(huì )導致作業(yè)啟動(dòng)失敗,直接面臨消息積壓嚴重,數據延遲增加的問(wèn)題,這是實(shí)時(shí)日志系統無(wú)法承受的。
  Blue Green Deployment 是一種平滑過(guò)渡的發(fā)布模式。在藍綠發(fā)布模型中,應用程序必須首先被分成兩個(gè)相等的組,藍色和綠色。藍色組發(fā)布新產(chǎn)品代碼并引入一點(diǎn)線(xiàn)上流量,綠色組繼續運行舊產(chǎn)品代碼。當新產(chǎn)品代碼跑上線(xiàn),觀(guān)察沒(méi)有問(wèn)題時(shí),逐漸引入更多的線(xiàn)上流量,直到所有流量都接入藍組的新產(chǎn)品。因此,藍綠發(fā)布可以保證整個(gè)系統的穩定性,可以在產(chǎn)品發(fā)布的早期發(fā)現問(wèn)題并解決問(wèn)題,保證其影響可控。
  目前,美團對于實(shí)時(shí)運營(yíng)有不同的藍綠部署方案。由于洛根實(shí)時(shí)日志訪(fǎng)問(wèn)業(yè)務(wù)系統較多,數據量較大,經(jīng)過(guò)綜合考慮,我們決定實(shí)施適合當前系統的藍綠方案。部署方案。為了保證系統的穩定性,在作業(yè)運行過(guò)程中又啟動(dòng)了一個(gè)相同的作業(yè)。當新作業(yè)運行沒(méi)有問(wèn)題時(shí),舊作業(yè)被切換。藍綠發(fā)布流程圖如下:
  圖10 藍綠發(fā)布流程圖 使用藍綠部署后,徹底解決了因資源不足或參數不正確導致上線(xiàn)失敗的問(wèn)題,平均部署切換時(shí)間保持在1分鐘以?xún)?,基本避免了因資源不足或參數錯誤導致的日志消耗釋放延遲問(wèn)題。4 實(shí)施結果 洛根實(shí)時(shí)日志在建設初期就受到了各業(yè)務(wù)的廣泛關(guān)注。程序、優(yōu)選商戶(hù)、餐飲SaaS等大體量業(yè)務(wù)。以下是業(yè)務(wù)系統接入的一些典型使用場(chǎng)景,供大家參考: 核心鏈路還原:道家C端小程序使用Logan實(shí)時(shí)記錄程序核心鏈路的關(guān)鍵日志和異常日志。當網(wǎng)上有客戶(hù)投訴出現問(wèn)題時(shí),可以查看實(shí)時(shí)日志,第一時(shí)間定位問(wèn)題。項目上線(xiàn)后,客戶(hù)投訴的平均定位時(shí)間從之前的10分鐘縮短到3分鐘以?xún)?,排查效率顯著(zhù)提升。內測階段排查問(wèn)題:某企業(yè)平臺前端項目,由于2.0改版后發(fā)生了較大變化,所以在內測階段使用Logan實(shí)時(shí)日志,增加更多調試日志,方便定位在線(xiàn)問(wèn)題。項目上線(xiàn)后,不僅為用戶(hù)每次排錯上報日志節省了10-15分鐘的時(shí)間,而且杜絕了因存儲空間不足而無(wú)法獲取用戶(hù)日志的情況。日志數據分析:美團到店團隊利用Logan實(shí)時(shí)日志分析前后端交互過(guò)程中的請求頭、請求參數、響應體等數據是否符合規范規范。經(jīng)過(guò)一個(gè)多月的試運行,一期版本上線(xiàn)后,覆蓋300+前端頁(yè)面,500+前端界面,共發(fā)現1000+規范問(wèn)題。5 未來(lái)規劃 龍光實(shí)時(shí)日志經(jīng)過(guò)半年的建設和推廣,系統基本能力已經(jīng)完成,可以滿(mǎn)足用戶(hù)對實(shí)時(shí)日志的基本需求。但不支持日志數據的深度加工清洗、日志統計、告警等高層次需求。所以,
  如果喜歡本文,請點(diǎn)擊右上角分享文章到朋友圈
  想了解學(xué)習的技術(shù)要點(diǎn),歡迎給若飛留言安排分享
  ·結尾·
  <p style="outline: 0px;max-width: 100%;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;">相關(guān)閱讀:一張圖看懂微服務(wù)架構路線(xiàn)<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />基于Spring Cloud的微服務(wù)架構分析微服務(wù)等于Spring Cloud?了解微服務(wù)架構和框架<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />如何構建基于 DDD 領(lǐng)域驅動(dòng)的微服務(wù)?
  小團隊真的適合引入SpringCloud微服務(wù)嗎?<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  DDD興起的原因以及與微服務(wù)的關(guān)系
  微服務(wù)之間的最佳調用方式<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  微服務(wù)架構設計總結實(shí)踐<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  基于 Kubernetes 的微服務(wù)項目設計與實(shí)現
  微服務(wù)架構-設計總結
  為什么微服務(wù)一定要有網(wǎng)關(guān)?
  主流微服務(wù)全鏈路監控系統之戰<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)架構實(shí)施原理詳解<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)的簡(jiǎn)介和技術(shù)棧微服務(wù)場(chǎng)景下的數據一致性解決方案設計一個(gè)容錯的微服務(wù)架構</p>
  解決方案:WPJAM Basic 詳細介紹:一鍵搞定 WordPress 功能屏蔽和增強優(yōu)
  WPJAM Basic插件的“優(yōu)化設置”是WPJAM Basic的初始功能??梢哉f(shuō)是我愛(ài)水煮魚(yú)博客根據多年使用WordPress的經(jīng)驗整理出來(lái)的優(yōu)化插件。
  以上是該功能的完整視頻介紹。當時(shí)的想法是為各種不用的功能,或者可能影響性能的功能提供開(kāi)關(guān),讓你只需要一鍵即可完成WordPress定制開(kāi)發(fā)。經(jīng)過(guò)幾年的發(fā)展,我的優(yōu)化設置的功能分為功能屏蔽和增強優(yōu)化兩部分:
  功能掩蔽
  從上圖可以清楚的看出,功能屏蔽就是讓你屏蔽掉WordPress中一些不用的功能,也給出了一些簡(jiǎn)單的理由以及哪些場(chǎng)景可以屏蔽這個(gè)功能。當前支持阻止以下功能:
  1.
  文章 改版時(shí)會(huì )往Posts表中插入多條歷史數據,導致Posts表冗余。建議屏蔽文章修改功能,提高數據庫效率。
  2.
  Trackbacks協(xié)議被濫用,會(huì )在博客上產(chǎn)生大量垃圾信息。建議完全關(guān)閉 Trackbacks。
  3.
  WordPress使用圖片渲染Emoji表情文字,但是渲染后的圖片經(jīng)常打不開(kāi),現在主流瀏覽器已經(jīng)支持Emoji文字,建議屏蔽Emoji功能。
  4.
  WordPress會(huì )將一些純文本字符轉換成格式化的HTML實(shí)體,但是這些轉換不適合中文環(huán)境,所以我們最好去掉這些字符轉換。
  5.
  WordPress feeds主要用于閱讀器,但現在使用閱讀器的用戶(hù)越來(lái)越少,feeds更多用于采集,造成不必要的資源消耗,建議關(guān)閉本站feeds。
  6.
  管理員每六個(gè)月重新登錄一次后,就會(huì )看到站點(diǎn)管理員的郵箱驗證界面。如果您認為沒(méi)有必要,可以屏蔽郵箱驗證。
  7.
  GDPR 是歐洲的通用數據保護條例。為了適應這個(gè)規律,WordPress在后臺設置了很多隱私功能。如果您只在中國運營(yíng)博客,您可以在后臺刪除與隱私相關(guān)的頁(yè)面。
  8.
  WordPress更新服務(wù)器位于國外,經(jīng)常打不開(kāi)。建議關(guān)閉WordPress后臺和自動(dòng)更新功能,手動(dòng)或通過(guò)SSH更新WordPress。
  
  9.
  Auto Embeds 協(xié)議允許您插入視頻網(wǎng)站 或照片分享網(wǎng)站 的鏈接,鏈接中收錄的視頻或圖片將自動(dòng)顯示。不過(guò)這個(gè)功能支持的網(wǎng)站都是國外的。建議禁用自動(dòng)嵌入功能以加快頁(yè)面解析。
  10.
  文章Embed 功能允許您將 WordPress文章 嵌入本站點(diǎn)或 WordPress 站點(diǎn)中的其他站點(diǎn)。如果不需要,可以屏蔽文章Embed 功能。
  11.
  WordPress 5.0發(fā)布帶來(lái)的Gutenberg編輯器很酷,但是很多人不習慣,還是喜歡原來(lái)簡(jiǎn)單的編輯器,可以屏蔽Gutenberg。
  12.
  XML-RPC協(xié)議用于在客戶(hù)端發(fā)布文章,如果只在后臺發(fā)布,可以關(guān)閉XML-RPC功能。
  增強優(yōu)化
  加速優(yōu)化是清理WordPress產(chǎn)生的無(wú)用代碼,加速優(yōu)化一些WordPress資源。目前,它具有以下功能:
  Google 字體非常易于使用和方便。很多WordPress主題也使用谷歌字體,但是谷歌在線(xiàn)字體在國內的速度不是很快,有時(shí)甚至打不開(kāi)。這就是為什么 WordPress 在中國有時(shí)速度不夠快的原因。
  WPJAM Basic允許您選擇第三方Google Font字體加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  Gravatar部分CDN服務(wù)器在國內訪(fǎng)問(wèn)困難,存在無(wú)法顯示頭像的問(wèn)題,而且WordPress后臺或評論頁(yè)面有時(shí)會(huì )默認加載Gravatar頭像圖片,可能會(huì )導致頁(yè)面卡頓。
  WPJAM Basic允許您選擇第三方Gravatar圖片加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  WPJAM Basic允許您直接在后臺設置Frame嵌入,避免點(diǎn)擊劫持,增強網(wǎng)站的安全性:
  詳細介紹:
  
  刪除類(lèi)別類(lèi)別和 WordPress 頁(yè)面的 URL。這兩個(gè)頁(yè)面的頁(yè)面重寫(xiě)規則是否相同?那么我們可以直接使用頁(yè)面重寫(xiě)規則來(lái)處理。
  WPJAM Basic 還添加了一個(gè)附加選項。如果博客自定義了其他自定義分類(lèi)模式,您可以選擇將此功能應用于哪種分類(lèi)模式:
  詳細介紹:
  如果長(cháng)時(shí)間上傳的圖片名稱(chēng)是1.jpg,那么上傳一張圖片就會(huì )導致數據庫執行幾十到上百條SQL查詢(xún)。上傳的時(shí)候要改一下圖片的名字,圖片的名字要多加一個(gè)時(shí)間戳,這樣幾乎可以保證圖片名字不能重復:
  詳細介紹:
  WordPress會(huì )在頁(yè)面頭部輸出版權信息和其他服務(wù)發(fā)現代碼。版權信息代碼會(huì )讓用戶(hù)知道你當前運行的 WordPress 版本,服務(wù)發(fā)現代碼會(huì )告訴用戶(hù)你的博客支持哪些服務(wù)。
  這些代碼會(huì )在前臺造成一些安全問(wèn)題,最好一鍵刪除。
  詳細介紹:
  一般不建議在網(wǎng)站前臺顯示W(wǎng)ordPress工具欄,可以一鍵移除。
  詳細介紹:
  如果熟悉WordPress的用戶(hù),就會(huì )知道如何寫(xiě)出正確的WordPress模式,所以從效率的角度來(lái)說(shuō),沒(méi)有必要在這個(gè)轉換上浪費時(shí)間,也可以一鍵移除。
  詳細介紹:
  在很多WordPress后臺頁(yè)面的右上角,比如后臺文章列表頁(yè)面,都會(huì )有“顯示選項”和“幫助”兩個(gè)按鈕。一個(gè)用于顯示和設置本頁(yè)面的選項,另一個(gè)用于獲取頁(yè)面的幫助信息:
  首先,這兩個(gè)按鈕在右上角。很多用戶(hù)沒(méi)有特別注意,以至于忘記操作,幫助文檔對用戶(hù)的幫助也不是很大。建議兩者都去掉。
  詳細介紹:
  最后,如果大家對使用WPJAM Basic有什么疑問(wèn),或者有什么功能需求,歡迎給我留言。
  點(diǎn)擊卡片關(guān)注“WordPress Jam”
  每天分享 WordPress 技巧 查看全部

  解決方案:從0到1搭建高性能實(shí)時(shí)日志系統
  建筑師(JiaGouX) 我們都是建筑師!
  共創(chuàng )未來(lái),你會(huì )來(lái)嗎?
  因公眾號推送規則變更,請第一時(shí)間點(diǎn)擊“在看”加“星”獲取精彩技術(shù)分享
  你是否經(jīng)常遇到需要在線(xiàn)查看日志卻又長(cháng)時(shí)間聯(lián)系不到用戶(hù)上報日志的情況?或者你是否經(jīng)常陷入存儲空間不足導致日志無(wú)法寫(xiě)入的尷尬?本文介紹美團如何從0到1搭建高性能的終端實(shí)時(shí)日志系統,徹底解決了日志丟失和寫(xiě)滿(mǎn)的問(wèn)題。希望能給您帶來(lái)一些幫助和啟發(fā)。
  2 設計實(shí)現
  3 穩定性保證
  4 成就
  5 未來(lái)規劃
  1 背景 1.1 Logan簡(jiǎn)介 Logan是美團統一的終端日志服務(wù)。已支持移動(dòng)APP、Web、小程序、IoT等多種環(huán)境,具備日志采集、存儲、上傳、查詢(xún)、分析等能力。幫助用戶(hù)定位研發(fā)問(wèn)題,提升排查效率。同時(shí),Logan也是業(yè)界較早開(kāi)源的大型前端日志系統,具有寫(xiě)入性能高、安全性高、日志防丟失等優(yōu)點(diǎn)。1.2 登錄工作流程 為了方便讀者更好的理解登錄系統的工作原理,下圖是一個(gè)簡(jiǎn)化的登錄系統工作流程。主要分為以下幾個(gè)部分:
  圖1 登錄系統工作流程圖 1.3 為什么需要實(shí)時(shí)日志?前文提到,這種“本地存儲+主動(dòng)上報”的模式雖然解決了大前端場(chǎng)景下基本的日志使用需求,但隨著(zhù)業(yè)務(wù)復雜度的不斷提升,用戶(hù)對日志的要求也越來(lái)越高。當前 Logan 架構存在的問(wèn)題也越來(lái)越突出,主要體現在以下幾個(gè)方面: 部分場(chǎng)景下日志的上報受限:因為用戶(hù)在 Web 和小程序上的一般使用場(chǎng)景是離開(kāi)后使用,當在線(xiàn)出現問(wèn)題時(shí),聯(lián)系用戶(hù)主動(dòng)上報日志。整個(gè)處理周期長(cháng),可能會(huì )錯過(guò)最佳故障排除時(shí)機。缺乏實(shí)時(shí)分析和告警能力:目前,缺乏實(shí)時(shí)分析和告警能力。用戶(hù)多次提到,他們想監控線(xiàn)上的異常日志,當出現符合規則的異常日志時(shí),接收告警信息。缺乏全鏈路跟蹤能力:目前多端日志分散在各個(gè)系統中。研發(fā)人員在定位問(wèn)題時(shí)需要手動(dòng)關(guān)聯(lián)日志,操作起來(lái)非常不方便。美團缺乏通用的全鏈路跟蹤解決方案。針對以上痛點(diǎn),我們提出了Logan實(shí)時(shí)日志的構建,旨在提供一個(gè)統一的、高性能的實(shí)時(shí)日志服務(wù),解決美團不同業(yè)務(wù)系統想要登錄云端的需求。這個(gè)階段。1.4 什么是Logan實(shí)時(shí)日志?Logan實(shí)時(shí)日志是一個(gè)服務(wù)于手機App的實(shí)時(shí)日志解決方案,Web、小程序、IoT等終端場(chǎng)景。旨在提供高擴展性、高性能、高可靠性的實(shí)時(shí)日志服務(wù),包括日志采集、上傳、處理、消費、投遞、查詢(xún)和分析能力。
  圖2 洛根實(shí)時(shí)日志產(chǎn)品功能 圖2 設計與實(shí)現 2.1 總體架構
  
  圖3 洛根實(shí)時(shí)日志的整體架構如上圖所示。整體架構主要分為五個(gè)部分,分別是: 2.2 采集通用采集端架構,解決跨平臺復用采集Device SDK用于設備端日志采集和需求在各種終端環(huán)境中實(shí)施。但由于終端和平臺眾多,技術(shù)棧和運行環(huán)境不一致,多終端的開(kāi)發(fā)和維護成本會(huì )比較高。因此,我們設計了一套核心邏輯復用的通用采集端架構,具體的平臺相關(guān)代碼單獨適配。我們推出了微信、MMP、Web、MRN終端,邏輯層代碼已經(jīng)完全復用。采集
  圖4 采集端SDK架構圖 關(guān)鍵模塊介紹:磁盤(pán)緩存+報表恢復防止日志丟失 為了方便讀者更好的理解端日志采集流程,下面將介紹采集詳細結束流程設計。采集端初始化API開(kāi)始調用時(shí),首先創(chuàng )建Logger、Encryptor、Storage等實(shí)例對象,并異步拉取環(huán)境配置文件。初始化完成后,首先檢查是否有放置成功,但報告失敗的日志,如果有,則立即恢復上傳過(guò)程。正常調用寫(xiě)日志接口時(shí),將原創(chuàng )日志加密后加入當前上報組。當報告事件(時(shí)間、條目數、導航等)發(fā)生時(shí) )被觸發(fā),當前上報組的所有日志加入上報隊列并上傳。采集終端詳細流程圖如下:
  圖5 采集SDK流程圖 2.3 數據接入層 對于實(shí)時(shí)日志系統,接入層需要滿(mǎn)足以下要求: (1) 支持公網(wǎng)域名上報;(2) 支持高并發(fā)處理;(3) 實(shí)時(shí)性高,延時(shí)在分鐘級;(4) 支持向Kafka消息隊列投遞數據。經(jīng)過(guò)對比,美團統一的日志采集通道都滿(mǎn)足以上需求,所以我們選擇了統一的日志采集通道作為接入層。采集端SDK通過(guò)獨立的公共域名上報日志后,采集通道將日志數據匯總后投遞到指定的Kafka消息隊列。如果讀者公司沒(méi)有類(lèi)似的日志采集渠道,
  圖6 接入層流程圖 2.4 數據處理層 在數據處理框架的技術(shù)選擇上,我們考慮了傳統架構(Java應用)、Storm架構、Flink架構三種方案。尺寸對比數據如下:
  表1 技術(shù)選型對比表 總的來(lái)說(shuō),傳統架構雖然成熟度和靈活性都比較好,但是在擴展性、容錯性、性能等方面不能滿(mǎn)足系統的要求,而Flink架構和Storm架構則相對優(yōu)秀。擴展性和容錯性,但是Flink架構在延遲和吞吐量方面表現更好,所以我們最終選擇了Flink架構作為數據處理框架。Flink:業(yè)界領(lǐng)先的流式計算引擎,具有高吞吐、低延遲、高可靠、精準計算等特點(diǎn)。它對事件窗口的支持非常好,被業(yè)界許多公司認為是首選的流計算引擎。在日志處理流程的設計中,日志數據經(jīng)過(guò)接入層處理后投遞到summary topic,再通過(guò)Flink job的邏輯處理分發(fā)到下游。處理流程如下圖所示:
  圖7 日志處理層流程圖 匯總的日志數據處理和分發(fā)依賴(lài)于實(shí)時(shí)計算平臺的實(shí)時(shí)運算能力。底層使用Flink數據處理引擎,主要負責日志數據的解析,日志內容的解密,拆分到下游。元數據解析:通過(guò)實(shí)時(shí)運算能力將原創(chuàng )日志數據解析為JSON對象數據。內容解密:對加密后的內容進(jìn)行解密,其中使用非對稱(chēng)協(xié)商計算出對稱(chēng)加密密鑰,然后進(jìn)行解密。服務(wù)維度拆分:通過(guò)topic字段將日志分發(fā)到各個(gè)業(yè)務(wù)系統所屬的topic中,實(shí)現業(yè)務(wù)日志的相互隔離。數據自定義處理:根據用戶(hù)自定義的處理語(yǔ)法模板,實(shí)時(shí)消費處理從服務(wù)主題到自定義主題的數據。2.5 數據消費層
  對于大多數用戶(hù)來(lái)說(shuō),Logan實(shí)時(shí)日志提供的日志采集、處理、檢索能力可以滿(mǎn)足他們的大部分需求。但在與用戶(hù)交流的過(guò)程中,我們發(fā)現還有一些更高層次的需求,比如指標監控、前后端鏈路對接、離線(xiàn)數據計算等。因此,我們將Logan標準化的日志統一下發(fā)到Kafka流處理平臺,并提供一些通用的數據轉換能力,方便用戶(hù)按需接入不同的第三方系統。數據消費層設計如下圖所示:
  圖 8 數據消費層設計圖 數據消費層的一些典型應用場(chǎng)景: 網(wǎng)絡(luò )全鏈路跟蹤:現階段前后端日志可能分布在不同的系統中,前端日志系統主要記錄代碼級日志、端到端日志等,后端日志系統記錄鏈接關(guān)系、服務(wù)耗時(shí)等信息。通過(guò)羅根實(shí)時(shí)日志開(kāi)放的數據消費能力,用戶(hù)可以根據自己的需求拼接多端日志,實(shí)現網(wǎng)絡(luò )全鏈路跟蹤。指標聚合統計&amp;告警:實(shí)時(shí)日志也是一種實(shí)時(shí)數據流,可以作為指標數據上報的載體。如果日志數據接入數據統計平臺,可實(shí)現指標監測和報警。離線(xiàn)數據分析:如果某些需求場(chǎng)景需要對數據進(jìn)行長(cháng)期存儲或離線(xiàn)分析,可以將數據導入Hive來(lái)實(shí)現。2.6 日志平臺
  
  日志平臺的核心功能是為用戶(hù)提供日志檢索支持。日志平臺提供用戶(hù)ID、自定義標簽、關(guān)鍵字等多種檢索過(guò)濾方式。在底層日志存儲架構的選擇上,目前業(yè)界普遍采用Elasticsearch??紤]到計費和運維成本的關(guān)系,美團已經(jīng)有了統一的框架可以使用,所以我們也選擇了Elasticsearch架構。同時(shí),我們也通過(guò)一個(gè)單獨的接口層來(lái)支持其他的存儲引擎。日志查詢(xún)流程如下:
  圖9 日志查詢(xún)流程設計圖 Elasticsearch:是分布式開(kāi)源搜索分析引擎,具有訪(fǎng)問(wèn)成本低、擴展性高、近實(shí)時(shí)等優(yōu)點(diǎn),更適合大數據的全文檢索服務(wù)3 穩定性保障 3.1 核心監控 為了衡量終端實(shí)時(shí)日志系統的可用性,我們制定了以下核心SLA指標:
  表2 核心SLA指標表 除了核心指標監控,我們還搭建了全程監控面板,涵蓋了子端上報成功率、域名可用性、域名QPS、作業(yè)吞吐量等重要觀(guān)察指標,以及聚合記錄的平均數量。針對上報成功率、域名QPS、作業(yè)吞吐量等,配置一體化告警。當線(xiàn)上出現異常時(shí),第一時(shí)間發(fā)現并處理。3.2 藍綠發(fā)布
  實(shí)時(shí)日志依賴(lài)于實(shí)時(shí)作業(yè)的處理和計算能力,但是實(shí)時(shí)作業(yè)的發(fā)布和部署目前還不能無(wú)縫對接,中間可能會(huì )出現真空。重啟作業(yè)時(shí),需要先停止原來(lái)的作業(yè),然后再啟動(dòng)新的作業(yè)。如果遇到代碼故障或者系統資源不足,就會(huì )導致作業(yè)啟動(dòng)失敗,直接面臨消息積壓嚴重,數據延遲增加的問(wèn)題,這是實(shí)時(shí)日志系統無(wú)法承受的。
  Blue Green Deployment 是一種平滑過(guò)渡的發(fā)布模式。在藍綠發(fā)布模型中,應用程序必須首先被分成兩個(gè)相等的組,藍色和綠色。藍色組發(fā)布新產(chǎn)品代碼并引入一點(diǎn)線(xiàn)上流量,綠色組繼續運行舊產(chǎn)品代碼。當新產(chǎn)品代碼跑上線(xiàn),觀(guān)察沒(méi)有問(wèn)題時(shí),逐漸引入更多的線(xiàn)上流量,直到所有流量都接入藍組的新產(chǎn)品。因此,藍綠發(fā)布可以保證整個(gè)系統的穩定性,可以在產(chǎn)品發(fā)布的早期發(fā)現問(wèn)題并解決問(wèn)題,保證其影響可控。
  目前,美團對于實(shí)時(shí)運營(yíng)有不同的藍綠部署方案。由于洛根實(shí)時(shí)日志訪(fǎng)問(wèn)業(yè)務(wù)系統較多,數據量較大,經(jīng)過(guò)綜合考慮,我們決定實(shí)施適合當前系統的藍綠方案。部署方案。為了保證系統的穩定性,在作業(yè)運行過(guò)程中又啟動(dòng)了一個(gè)相同的作業(yè)。當新作業(yè)運行沒(méi)有問(wèn)題時(shí),舊作業(yè)被切換。藍綠發(fā)布流程圖如下:
  圖10 藍綠發(fā)布流程圖 使用藍綠部署后,徹底解決了因資源不足或參數不正確導致上線(xiàn)失敗的問(wèn)題,平均部署切換時(shí)間保持在1分鐘以?xún)?,基本避免了因資源不足或參數錯誤導致的日志消耗釋放延遲問(wèn)題。4 實(shí)施結果 洛根實(shí)時(shí)日志在建設初期就受到了各業(yè)務(wù)的廣泛關(guān)注。程序、優(yōu)選商戶(hù)、餐飲SaaS等大體量業(yè)務(wù)。以下是業(yè)務(wù)系統接入的一些典型使用場(chǎng)景,供大家參考: 核心鏈路還原:道家C端小程序使用Logan實(shí)時(shí)記錄程序核心鏈路的關(guān)鍵日志和異常日志。當網(wǎng)上有客戶(hù)投訴出現問(wèn)題時(shí),可以查看實(shí)時(shí)日志,第一時(shí)間定位問(wèn)題。項目上線(xiàn)后,客戶(hù)投訴的平均定位時(shí)間從之前的10分鐘縮短到3分鐘以?xún)?,排查效率顯著(zhù)提升。內測階段排查問(wèn)題:某企業(yè)平臺前端項目,由于2.0改版后發(fā)生了較大變化,所以在內測階段使用Logan實(shí)時(shí)日志,增加更多調試日志,方便定位在線(xiàn)問(wèn)題。項目上線(xiàn)后,不僅為用戶(hù)每次排錯上報日志節省了10-15分鐘的時(shí)間,而且杜絕了因存儲空間不足而無(wú)法獲取用戶(hù)日志的情況。日志數據分析:美團到店團隊利用Logan實(shí)時(shí)日志分析前后端交互過(guò)程中的請求頭、請求參數、響應體等數據是否符合規范規范。經(jīng)過(guò)一個(gè)多月的試運行,一期版本上線(xiàn)后,覆蓋300+前端頁(yè)面,500+前端界面,共發(fā)現1000+規范問(wèn)題。5 未來(lái)規劃 龍光實(shí)時(shí)日志經(jīng)過(guò)半年的建設和推廣,系統基本能力已經(jīng)完成,可以滿(mǎn)足用戶(hù)對實(shí)時(shí)日志的基本需求。但不支持日志數據的深度加工清洗、日志統計、告警等高層次需求。所以,
  如果喜歡本文,請點(diǎn)擊右上角分享文章到朋友圈
  想了解學(xué)習的技術(shù)要點(diǎn),歡迎給若飛留言安排分享
  ·結尾·
  <p style="outline: 0px;max-width: 100%;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;">相關(guān)閱讀:一張圖看懂微服務(wù)架構路線(xiàn)<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />基于Spring Cloud的微服務(wù)架構分析微服務(wù)等于Spring Cloud?了解微服務(wù)架構和框架<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />如何構建基于 DDD 領(lǐng)域驅動(dòng)的微服務(wù)?
  小團隊真的適合引入SpringCloud微服務(wù)嗎?<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  DDD興起的原因以及與微服務(wù)的關(guān)系
  微服務(wù)之間的最佳調用方式<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  微服務(wù)架構設計總結實(shí)踐<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  基于 Kubernetes 的微服務(wù)項目設計與實(shí)現
  微服務(wù)架構-設計總結
  為什么微服務(wù)一定要有網(wǎng)關(guān)?
  主流微服務(wù)全鏈路監控系統之戰<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)架構實(shí)施原理詳解<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)的簡(jiǎn)介和技術(shù)棧微服務(wù)場(chǎng)景下的數據一致性解決方案設計一個(gè)容錯的微服務(wù)架構</p>
  解決方案:WPJAM Basic 詳細介紹:一鍵搞定 WordPress 功能屏蔽和增強優(yōu)
  WPJAM Basic插件的“優(yōu)化設置”是WPJAM Basic的初始功能??梢哉f(shuō)是我愛(ài)水煮魚(yú)博客根據多年使用WordPress的經(jīng)驗整理出來(lái)的優(yōu)化插件。
  以上是該功能的完整視頻介紹。當時(shí)的想法是為各種不用的功能,或者可能影響性能的功能提供開(kāi)關(guān),讓你只需要一鍵即可完成WordPress定制開(kāi)發(fā)。經(jīng)過(guò)幾年的發(fā)展,我的優(yōu)化設置的功能分為功能屏蔽和增強優(yōu)化兩部分:
  功能掩蔽
  從上圖可以清楚的看出,功能屏蔽就是讓你屏蔽掉WordPress中一些不用的功能,也給出了一些簡(jiǎn)單的理由以及哪些場(chǎng)景可以屏蔽這個(gè)功能。當前支持阻止以下功能:
  1.
  文章 改版時(shí)會(huì )往Posts表中插入多條歷史數據,導致Posts表冗余。建議屏蔽文章修改功能,提高數據庫效率。
  2.
  Trackbacks協(xié)議被濫用,會(huì )在博客上產(chǎn)生大量垃圾信息。建議完全關(guān)閉 Trackbacks。
  3.
  WordPress使用圖片渲染Emoji表情文字,但是渲染后的圖片經(jīng)常打不開(kāi),現在主流瀏覽器已經(jīng)支持Emoji文字,建議屏蔽Emoji功能。
  4.
  WordPress會(huì )將一些純文本字符轉換成格式化的HTML實(shí)體,但是這些轉換不適合中文環(huán)境,所以我們最好去掉這些字符轉換。
  5.
  WordPress feeds主要用于閱讀器,但現在使用閱讀器的用戶(hù)越來(lái)越少,feeds更多用于采集,造成不必要的資源消耗,建議關(guān)閉本站feeds。
  6.
  管理員每六個(gè)月重新登錄一次后,就會(huì )看到站點(diǎn)管理員的郵箱驗證界面。如果您認為沒(méi)有必要,可以屏蔽郵箱驗證。
  7.
  GDPR 是歐洲的通用數據保護條例。為了適應這個(gè)規律,WordPress在后臺設置了很多隱私功能。如果您只在中國運營(yíng)博客,您可以在后臺刪除與隱私相關(guān)的頁(yè)面。
  8.
  WordPress更新服務(wù)器位于國外,經(jīng)常打不開(kāi)。建議關(guān)閉WordPress后臺和自動(dòng)更新功能,手動(dòng)或通過(guò)SSH更新WordPress。
  
  9.
  Auto Embeds 協(xié)議允許您插入視頻網(wǎng)站 或照片分享網(wǎng)站 的鏈接,鏈接中收錄的視頻或圖片將自動(dòng)顯示。不過(guò)這個(gè)功能支持的網(wǎng)站都是國外的。建議禁用自動(dòng)嵌入功能以加快頁(yè)面解析。
  10.
  文章Embed 功能允許您將 WordPress文章 嵌入本站點(diǎn)或 WordPress 站點(diǎn)中的其他站點(diǎn)。如果不需要,可以屏蔽文章Embed 功能。
  11.
  WordPress 5.0發(fā)布帶來(lái)的Gutenberg編輯器很酷,但是很多人不習慣,還是喜歡原來(lái)簡(jiǎn)單的編輯器,可以屏蔽Gutenberg。
  12.
  XML-RPC協(xié)議用于在客戶(hù)端發(fā)布文章,如果只在后臺發(fā)布,可以關(guān)閉XML-RPC功能。
  增強優(yōu)化
  加速優(yōu)化是清理WordPress產(chǎn)生的無(wú)用代碼,加速優(yōu)化一些WordPress資源。目前,它具有以下功能:
  Google 字體非常易于使用和方便。很多WordPress主題也使用谷歌字體,但是谷歌在線(xiàn)字體在國內的速度不是很快,有時(shí)甚至打不開(kāi)。這就是為什么 WordPress 在中國有時(shí)速度不夠快的原因。
  WPJAM Basic允許您選擇第三方Google Font字體加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  Gravatar部分CDN服務(wù)器在國內訪(fǎng)問(wèn)困難,存在無(wú)法顯示頭像的問(wèn)題,而且WordPress后臺或評論頁(yè)面有時(shí)會(huì )默認加載Gravatar頭像圖片,可能會(huì )導致頁(yè)面卡頓。
  WPJAM Basic允許您選擇第三方Gravatar圖片加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  WPJAM Basic允許您直接在后臺設置Frame嵌入,避免點(diǎn)擊劫持,增強網(wǎng)站的安全性:
  詳細介紹:
  
  刪除類(lèi)別類(lèi)別和 WordPress 頁(yè)面的 URL。這兩個(gè)頁(yè)面的頁(yè)面重寫(xiě)規則是否相同?那么我們可以直接使用頁(yè)面重寫(xiě)規則來(lái)處理。
  WPJAM Basic 還添加了一個(gè)附加選項。如果博客自定義了其他自定義分類(lèi)模式,您可以選擇將此功能應用于哪種分類(lèi)模式:
  詳細介紹:
  如果長(cháng)時(shí)間上傳的圖片名稱(chēng)是1.jpg,那么上傳一張圖片就會(huì )導致數據庫執行幾十到上百條SQL查詢(xún)。上傳的時(shí)候要改一下圖片的名字,圖片的名字要多加一個(gè)時(shí)間戳,這樣幾乎可以保證圖片名字不能重復:
  詳細介紹:
  WordPress會(huì )在頁(yè)面頭部輸出版權信息和其他服務(wù)發(fā)現代碼。版權信息代碼會(huì )讓用戶(hù)知道你當前運行的 WordPress 版本,服務(wù)發(fā)現代碼會(huì )告訴用戶(hù)你的博客支持哪些服務(wù)。
  這些代碼會(huì )在前臺造成一些安全問(wèn)題,最好一鍵刪除。
  詳細介紹:
  一般不建議在網(wǎng)站前臺顯示W(wǎng)ordPress工具欄,可以一鍵移除。
  詳細介紹:
  如果熟悉WordPress的用戶(hù),就會(huì )知道如何寫(xiě)出正確的WordPress模式,所以從效率的角度來(lái)說(shuō),沒(méi)有必要在這個(gè)轉換上浪費時(shí)間,也可以一鍵移除。
  詳細介紹:
  在很多WordPress后臺頁(yè)面的右上角,比如后臺文章列表頁(yè)面,都會(huì )有“顯示選項”和“幫助”兩個(gè)按鈕。一個(gè)用于顯示和設置本頁(yè)面的選項,另一個(gè)用于獲取頁(yè)面的幫助信息:
  首先,這兩個(gè)按鈕在右上角。很多用戶(hù)沒(méi)有特別注意,以至于忘記操作,幫助文檔對用戶(hù)的幫助也不是很大。建議兩者都去掉。
  詳細介紹:
  最后,如果大家對使用WPJAM Basic有什么疑問(wèn),或者有什么功能需求,歡迎給我留言。
  點(diǎn)擊卡片關(guān)注“WordPress Jam”
  每天分享 WordPress 技巧

解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-11-18 07:46 ? 來(lái)自相關(guān)話(huà)題

  解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章
 ?。c(diǎn)擊上方公眾號快速關(guān)注)。
  資料來(lái)源:foreach_break,
  前言
  這是一份學(xué)習筆記。
  學(xué)習材料來(lái)自Jay Kreps的日志博客文章。
  原文很長(cháng),但我堅持閱讀,收獲頗豐,對 Jay 的技術(shù)能力、架構能力和對分布式系統的深刻理解印象深刻。同時(shí),他有點(diǎn)沾沾自喜,因為他的一些理解與周杰倫的觀(guān)點(diǎn)相吻合。
  Jay Kreps是前LinkedIn首席參謀工程師,Confluent現任聯(lián)合創(chuàng )始人兼首席執行官,以及Kafka和Samza的主要作者。
  所謂筆記,讀文章背,因為周杰倫哥自己在這一章里組織得太好了,他自己的科學(xué)素養和哲學(xué)素養也很高,所以他覺(jué)得很精彩的就不省略了。
  I. 信息來(lái)源
  日志:每個(gè)軟件工程師都應該知道的關(guān)于實(shí)時(shí)數據的統一抽象()
  2. 注意事項
  2.1 日志的值
  1)日志是以下系統的核心:
  2)日志可能與計算機一樣古老,是分布式數據系統和實(shí)時(shí)計算系統的核心。
  3)日志有很多名稱(chēng):
  4)不懂日志,就不能完全看懂
  它
  2.2 什么是日志?
  2.2.1 概述
  記錄的順序定義了時(shí)間等概念。
  因為越靠左,記錄越早。
  條目的序號作為一種時(shí)間戳的概念,以及記錄的順序作為時(shí)間的概念可能看起來(lái)很奇怪,但正如您很快就會(huì )發(fā)現的那樣,它可以很容易地將“時(shí)間”與任何特定的物理時(shí)鐘分離。
  日志與普通文件和表沒(méi)有太大區別。
  這樣,你可能會(huì )覺(jué)得日志這么簡(jiǎn)單,還有需要討論的嗎?
  其實(shí)日志的核心含義是:
  日志記錄發(fā)生了什么以及何時(shí)發(fā)生。
  而這個(gè)通常是分布式系統最核心的東西。
  請注意,這里有必要澄清幾個(gè)概念:
  2.2.2 數據庫中的日志
  Log的起源是未知的,就像發(fā)明二進(jìn)制查找的人一樣,很難意識到這項發(fā)明是一項發(fā)明。
  日志早在IBM的System R中就出現了。
  在數據庫中,當數據庫崩潰時(shí),您需要使各種數據結構和索引保持同步。
  為了確保原子性和持久性,數據庫需要在修改數據結構和索引之前記錄要修改的內容。
  因此,日志記錄何時(shí)發(fā)生某些事情,每個(gè)表和索引本身就是此歷史信息的映射。
  由于日志是立即持久的,因此在發(fā)生崩潰時(shí),它將成為還原其他持久結構的可靠來(lái)源。
  日志已經(jīng)從 ACID 功能的實(shí)現發(fā)展成為數據庫之間數據復制的一種方式。
  顯然,數據庫中發(fā)生的一系列數據變化已經(jīng)成為維持數據庫之間同步最需要的信息。
  Oracle,MySQL和PostgreSQL都收錄日志傳輸協(xié)議,該協(xié)議將部分日志發(fā)送到用于持久復制的從屬服務(wù)器。Oracle
  的XStreams和GoldenState使用日志作為通用數據訂閱機制,為非Oracle數據庫提供訂閱數據。
  MySQL和PostgreSQL提供了類(lèi)似的組件,這些組件是數據系統架構的核心。
  面向機器的日志不僅可以用于數據庫,還可以用于:
  2.2.3 分布式系統中的日志
  日志解決了分布式數據系統中的兩個(gè)重要問(wèn)題:
  1) 有序數據更改
  2) 數據分發(fā)
  所謂的狀態(tài)機復制原理:
  如果兩個(gè)確定性進(jìn)程,從相同的狀態(tài)開(kāi)始,以相同的順序,接收相同的輸入,那么它們將產(chǎn)生相同的輸出并以相同的狀態(tài)結束。
  確定性意味著(zhù)處理過(guò)程與時(shí)間無(wú)關(guān),并且處理結果不受其他輸入的影響。
  可以通過(guò)非確定性示例來(lái)理解:
  所謂狀態(tài)可以是機器上的任何數據,無(wú)論是在機器的內存中,還是處理完成后的磁盤(pán)上。值得注意的是,相同的
  輸入以相同的順序產(chǎn)生相同的結果,這就是為什么日志如此重要的原因,這是一個(gè)直觀(guān)的概念:如果你將相同的日志輸入兩個(gè)確定性程序,它們將產(chǎn)生相同的輸出。
  在分布式系統的構建中,認識到這一點(diǎn),可以使:
  讓所有機器做同樣的事情,協(xié)議是:
  構建分布式、一致的日志系統,為所有處理系統提供輸入。
  日志系統的作用是分散所有輸入流之上的不確定性,并確保處理相同輸入的所有復制節點(diǎn)同步。
  這種方法最好的一點(diǎn)是,您可以將索引日志的時(shí)間戳視為所有復制節點(diǎn)的時(shí)鐘:通過(guò)使用復制節點(diǎn)處理的日志
  中最大的時(shí)間戳作為復制節點(diǎn)的唯一 ID,時(shí)間戳與日志相結合可以唯一地表示節點(diǎn)的整個(gè)狀態(tài)。
  還有許多方法可以應用此方法:
  從理論上講,我們可以記錄一系列機器指令,或者調用的方法的名稱(chēng)和參數,只要數據處理過(guò)程的行為相同,這些過(guò)程就可以保證節點(diǎn)之間的一致性。
  玩數據庫的人通常以不同的方式處理邏輯日志和物理日志:
  對于分布式系統,通常有兩種方法來(lái)處理復制和數據處理:
  1) 狀態(tài)機模型(主動(dòng) – 主動(dòng))
  2) 主回模型(主動(dòng) – 被動(dòng))
  如下圖所示:
  為了理解上述兩種方法之間的區別,讓我們看一個(gè)簡(jiǎn)單的例子:
  現在,集群需要提供一個(gè)簡(jiǎn)單的服務(wù)來(lái)執行算術(shù)運算,例如加法和乘法。最初,維護一個(gè)數字,例如 0。
  上面的例子也說(shuō)明了為什么順序是復制節點(diǎn)之間一致性的關(guān)鍵因素,如果這些操作的順序被打亂,將獲得不同的結果。
  分布式日志,可以作為一些共識算法的數據結構:
  表示有關(guān)下一個(gè)值的一系列決策的日志。
  2.2.4 更新日志
  從數據庫的角度來(lái)看,記錄數據更改的一組更改日志和表是雙重且可互操作的。
  1) 基于記錄數據更改的日志,可以重構處于特定狀態(tài)的表(也可以是非關(guān)系存儲系統中帶有鍵的記錄)。
  2)相反,如果表發(fā)生變化,則可以在日志中計算更改。
  這正是您想要的準實(shí)時(shí)副本的秘密所在!
  這與版本控制的作用非常相似:管理分布式、并發(fā)、狀態(tài)更改。
  版本控制工具(用于維護反映更改的修補程序)本質(zhì)上是日志,您可以與簽出的分支快照進(jìn)行交互,該快照等效于數據庫中的表。您會(huì )發(fā)現復制在版本控制和分布式系統中都是基于日志的:更新版本時(shí),只需提取反映版本更改的修補程序并將其應用于當前分支快照。
  2.3 數據集成
  2.3.1 數據集成的含義數據
  集成是為組織中的所有服務(wù)和系統提供數據。
  事實(shí)上,數據的有效利用非常符合馬斯洛的需求層次。
  金字塔的底部是采集數據并將其集成到應用程序中(無(wú)論是實(shí)時(shí)計算引擎,文本文件還是Python腳本)。
  并且需要轉換這些數據,以保持易于閱讀和處理的統一、標準化和整潔的格式。
  一旦滿(mǎn)足了上述要求,就可以開(kāi)始考慮各種數據處理方法,如map-reduce或實(shí)時(shí)查詢(xún)系統。
  顯然,如果沒(méi)有可靠、完整的數據流,Hadoop 只是一個(gè)昂貴的、難以集成的加熱器(集群是耗電的嗎?)。
  相反,如果可以確保數據流可靠、可用且完整,則可以考慮更高級的游戲玩法、更好的數據模型以及一致、更易于理解的語(yǔ)義。
  然后,注意力可以轉移到可視化、報告、算法和預測(挖掘器、深度)上。
  2.3.2 數據集成的兩種復雜性
  事件事件
  數據記錄事件如何發(fā)生,而不僅僅是發(fā)生的情況,通常用作應用程序日志,因為它通常由應用程序系統寫(xiě)入。但這實(shí)際上混淆了日志的功能。
  事實(shí)上,谷歌的財富是由建立在(用戶(hù))點(diǎn)擊流和好惡(體驗)上的關(guān)聯(lián)管道產(chǎn)生的,點(diǎn)擊流和展示是事件。
  各種專(zhuān)業(yè)數據系統的爆炸式增長(cháng)
  為什么這些系統存在:
  顯然,將數據集成到這樣的系統中對于數據集成來(lái)說(shuō)是極其困難的。
  2.3.3 基于日志結構的數據流
  可以根據日志對每個(gè)邏輯數據源進(jìn)行建模。
  數據源可以是記錄事件(命中和 PV)的應用程序,也可以是接受更改的數據庫表。
  每個(gè)訂閱者都盡快從這些數據源生成的日志中獲取新記錄,將其應用于本地存儲系統,并改善其在日志中的讀取偏移。訂閱者可以是任何數據系統,例如緩存、Hadoop、另一個(gè)站點(diǎn)的數據庫或搜索引擎。
  登錄事實(shí)上,提供了一個(gè)邏輯時(shí)鐘,用于測量不同訂閱者
  的狀態(tài)以響應數據變化,因為這些訂閱者在日志中具有不同且獨立的讀取偏移量,這就像時(shí)間意義上的“時(shí)刻”。
  考慮這樣一個(gè)示例、數據庫和一些緩存服務(wù)器:
  
  日志提供了同步所有緩存服務(wù)器并推送它們所處的“時(shí)刻”的能力。
  假設我們寫(xiě)一個(gè)編號為 X 的日志,讀取來(lái)自緩存服務(wù)器
  的數據,為了不讀取舊數據,我們只需要確保在緩存服務(wù)器將數據(同步)復制到 X 位置之前我們不會(huì )從該緩存中讀取任何內容。
  此外,日志還提供了充當緩沖區的功能,以異步方式支持生產(chǎn)者和使用者的行為。
  支持異步的最關(guān)鍵原因之一是訂閱系統可能會(huì )崩潰,離線(xiàn)進(jìn)行維護,然后重新上線(xiàn),在這種情況下,每個(gè)訂閱者都按照自己的節奏使用數據。
  批處理系統(如 Hadoop 或數據倉庫)使用數據
  每小時(shí)或每天一次,而實(shí)時(shí)系統通常在幾秒鐘內消耗數據。
  數據源或日志對使用數據的訂閱者一無(wú)所知,因此需要在管道中無(wú)縫添加和刪除訂閱者。
  更重要的是,訂閱者只需要知道日志,不需要知道他們消費的數據來(lái)源,無(wú)論是RDBMS,Hadoop還是新流行的K-V數據庫。之所以討論日志,而不是消息系統,是因為不同的消息系統
  保證了不同的特性,而word消息系統很難完全準確地表達某種語(yǔ)義,因為消息系統更重要的是重定向消息。
  但是,日志可以理解為提供持久性保證和強有序語(yǔ)義的消息系統,這在通信系統中稱(chēng)為原子廣播。
  2.4 LinkedIn
  LinkedIn目前的主要系統包括(注:2013年):
  每個(gè)系統在其專(zhuān)業(yè)領(lǐng)域都提供專(zhuān)門(mén)的高級功能。
 ?。ㄟ@一段太長(cháng)太長(cháng)了,周杰倫哥很擅長(cháng),所以挑重點(diǎn)記??!
  1)引入數據流的概念是因為在Oracle數據庫中的表之上建立了抽象緩存層,為搜索引擎索引構建和社交圖譜更新提供擴展能力。
  2)為了更好的處理LinkedIn的一些推薦算法,我開(kāi)始構建Hadoop集群,但團隊在這方面的經(jīng)驗還不多,所以我走了不少彎路。
  3)一開(kāi)始,這只是一個(gè)粗略的想法,即將數據從Oracle數據倉庫中提取出來(lái)并將其扔到Hadoop中是可以的。結果發(fā)現:首先,從Oracle數據倉庫快速導出數據是一場(chǎng)噩夢(mèng);其次,也是更糟糕的是,數據倉庫中的一些數據沒(méi)有得到正確處理,導致Hadoop批處理任務(wù)無(wú)法按預期輸出結果,并且通過(guò)Hadoop批處理執行的任務(wù)通常是不可逆的,尤其是在報告出來(lái)之后。
  4)最后,團隊離開(kāi)數據倉庫,直接進(jìn)入數據庫和日志作為數據源。接下來(lái),建造了一個(gè)輪子:K-V 存儲(伏地魔)。
  5)即使是像數據復制這樣普通的工作也會(huì )占用團隊的大量時(shí)間來(lái)處理,更糟糕的是,一旦數據處理管道中存在一個(gè)點(diǎn),Hadoop立即變得浪費,因為無(wú)論算法在錯誤數據上運行多么出色,只有一個(gè)后果,那就是產(chǎn)生更多錯誤的數據。
  6)即使團隊在高度抽象上構建了一些東西,每個(gè)數據源也需要特定的配置,這是許多錯誤和失敗的根源。
  7)大量的程序員想要跟進(jìn),每個(gè)程序員都有大量的想法,集成這個(gè)系統,添加這個(gè)功能,集成這個(gè)功能,或者想要自定義數據源。
  8)周杰倫弟兄開(kāi)始意識到:
  首先,他們修建的管道雖然還很粗糙,但價(jià)值極高。即使解決數據在新系統(如Hadoop)中可用的問(wèn)題,也可以解鎖大量可能性。以前難以進(jìn)行的計算開(kāi)始成為可能。只需從其他系統解鎖數據并集成它們,即可輕松創(chuàng )建新產(chǎn)品和分析。其次,很明顯,可靠的數據加載
  需要更堅實(shí)的支持,如果可以捕獲所有結構,Hadoop數據加載可以完全自動(dòng)化,而無(wú)需添加新數據源或手動(dòng)修改數據的模式。數據會(huì )神奇地出現在HDFS中,當添加新的數據源時(shí),Hive的表會(huì )自動(dòng)自適應地生成相應的列。
  第三,數據覆蓋面遠遠不夠。很難處理許多新的數據源。
  9)為了解決添加新數據源后的數據加載問(wèn)題,團隊開(kāi)始了這樣的嘗試:
  很快,他們發(fā)現這行不通,因為發(fā)布和訂閱,生產(chǎn)和消費,數據流通常仍然是雙向的,這變成了O(n^2)問(wèn)題。
  所以,他們需要的是這樣的模型:
  每個(gè)使用者都需要與數據源隔離,理想情況下只與一個(gè)數據存儲庫交互,該存儲庫為他們提供對任意數據的訪(fǎng)問(wèn)權限。
  10)消息系統+日志=卡夫卡,卡夫卡誕生了。
  2.5 日志ETL與數據倉庫的關(guān)系
  2.5.1 數據倉庫
  1) 一個(gè)干凈、結構化、集成的數據存儲庫,用于分析。
  2)雖然這個(gè)想法很棒,但獲取數據的方式有點(diǎn)過(guò)時(shí)了:定期從數據庫中獲取數據并將其轉換為更易讀的格式。
  3)以前的數據倉庫問(wèn)題是干凈的數據和數據倉庫是高度耦合的。
  數據倉庫應該是一組查詢(xún)功能的集合,服務(wù)于報表、搜索、廣告熱分析,包括計數、聚合、過(guò)濾等操作,所以它應該是一個(gè)批處理系統。
  但是干凈數據與這種批處理系統的高度耦合意味著(zhù)這些數據不能被實(shí)時(shí)系統消費,例如搜索引擎索引,實(shí)時(shí)計算和實(shí)時(shí)監控系統等。
  2.5.2 ETL
  Jay認為ETL只做兩件事:
  1)數據提取和清理,從特定系統解鎖數據
  2)重構數據,以便可以通過(guò)數據倉庫進(jìn)行查詢(xún)。例如,更改數據類(lèi)型以適應關(guān)系數據庫的類(lèi)型,將架構轉換為星形或雪花圖案,或將其分解為面向列的存儲格式。
  但是將這兩件事結合在一起是一個(gè)大問(wèn)題,因為集成的、干凈的數據應該被其他實(shí)時(shí)系統、索引系統和低延遲處理系統使用。數據倉庫團隊
  負責采集和清理數據,但這些數據的生產(chǎn)者往往不知道數據倉庫團隊的數據處理需求,導致數據難以提取和清理。
  同時(shí),由于核心業(yè)務(wù)團隊對跟上公司其他部門(mén)的步伐不敏感,真正可以處理的數據覆蓋率很低,數據流很脆弱,很難快速響應變化。
  所以,一個(gè)更好的方法:
  如果要在干凈的數據集上做一些搜索、實(shí)時(shí)監控趨勢圖、實(shí)時(shí)告警,不宜使用原創(chuàng )數據倉庫或Hadoop集群作為基礎設施。更糟糕的是,ETL為數據倉庫構建的數據加載系統對其他(實(shí)時(shí))系統幾乎沒(méi)有用處。
  最好的模型是完成在數據發(fā)布者發(fā)布數據之前進(jìn)行數據
  清理過(guò)程,因為只有發(fā)布者最了解其數據的外觀(guān)。在此階段完成的所有操作都應該是令人滿(mǎn)意的無(wú)損和可逆的。
  所有豐富的語(yǔ)義或附加值的實(shí)時(shí)轉換都應在原創(chuàng )日志后處理之后進(jìn)行后處理,包括為事件數據建立會(huì )話(huà)或添加某些感興趣的字段。原創(chuàng )日志仍然可以單獨使用,但此類(lèi)實(shí)時(shí)應用程序也會(huì )派生新的參數化日志。
  最后,只有與特定目標系統相對應的數據聚合操作才應成為數據加載的一部分,例如轉換為星形或雪花圖案,以便在數據倉庫中進(jìn)行分析和報告。因為這個(gè)階段,就像傳統的ETL一樣,由于一個(gè)非常干凈和標準化的數據流,(帶日志)現在非常簡(jiǎn)單。
  2.6 日志文件和事件
  一
  以日志為核心的架構還有一個(gè)額外的好處,那就是易于實(shí)現無(wú)耦合、事件驅動(dòng)的系統。
  捕獲用戶(hù)活動(dòng)和系統變化的傳統方法是將這些信息寫(xiě)入文本日志,然后將其提取到數據倉庫或 Hadoop 集群中進(jìn)行聚合和處理,這類(lèi)似于前面描述的數據倉庫和 ETL 問(wèn)題:數據與數據倉庫高度耦合。
  在LinkedIn,它構建了一個(gè)基于kafka的事件數據處理系統。為各種操作定義了數百種事件類(lèi)型,從 PV、廣告展示、搜索到服務(wù)調用和應用程序異常。
  要了解上述事件驅動(dòng)系統的好處,請考慮一個(gè)簡(jiǎn)單的事件示例:
  在“工作機會(huì )”頁(yè)上,提供機會(huì )。此頁(yè)面應僅負責如何呈現機會(huì ),不應收錄太多其他邏輯。但是,您會(huì )發(fā)現在相當大的網(wǎng)站中執行此操作很容易涉及越來(lái)越多的與演示機會(huì )無(wú)關(guān)的邏輯。
  例如,我們要集成以下系統功能:
  1)我們需要將數據發(fā)送到Hadoop和數據倉庫進(jìn)行離線(xiàn)處理。
  2)我們需要計算頁(yè)面瀏覽量,以確保某些視圖不是用于抓取Web內容或任何東西。
  3) 我們需要匯總此頁(yè)面上的瀏覽信息,以顯示在業(yè)務(wù)機會(huì )發(fā)布商的分析頁(yè)面上。
  4)我們需要記錄一個(gè)用戶(hù)瀏覽這個(gè)頁(yè)面的歷史記錄,以確保我們?yōu)檫@個(gè)用戶(hù)提供任何適合這個(gè)用戶(hù)的工作機會(huì ),有價(jià)值和良好的體驗,而不是一遍又一遍地反復向這個(gè)用戶(hù)展示一個(gè)機會(huì )(想想只有老婆不在家的時(shí)候才能玩的游戲, 紅綠藍閃爍的特效,配上轟轟烈烈的DJ風(fēng)格舞曲,或是事業(yè)巔峰和穿短裙的女生的搖擺焦點(diǎn),再點(diǎn)擊發(fā)現是標題黨的廣告?。?。
  5)我們的推薦系統需要記錄此頁(yè)面的瀏覽歷史記錄,以正確跟蹤此工作機會(huì )的受歡迎程度。
  很快,僅顯示機會(huì )的頁(yè)面的邏輯變得復雜。當我們把這個(gè)機會(huì )也添加到移動(dòng)端時(shí),我們也不得不遷移邏輯,這增加了復雜性。訣竅是,在此頁(yè)面上工作的工程師需要了解其他系統,以確保正確集成上述功能。
  這只是一個(gè)非常簡(jiǎn)單的例子,在實(shí)踐中,情況只會(huì )變得更加復雜。
  事件驅動(dòng)可以使這變得容易。負責展示機會(huì )的頁(yè)面
  只需要展示機會(huì )并記錄一些與演示相關(guān)的因素,例如工作機會(huì )的屬性、查看頁(yè)面的人員以及其他有用的演示相關(guān)信息。頁(yè)面不需要維護其他系統的知識和知識,例如推薦系統、安全系統、機會(huì )發(fā)布者分析系統、數據倉庫等,所有這些系統只需要以訂閱者的身份訂閱事件,然后獨立處理,而提供機會(huì )的頁(yè)面不需要修改新的訂閱者或消費者加入。
  2.7 構建可擴展日志
  分離發(fā)布者和訂閱者并不是什么新鮮事,但日志系統很難確保多個(gè)訂閱者可以實(shí)時(shí)處理消息,同時(shí)確??蓴U展性。如果日志構建
  速度不快、開(kāi)銷(xiāo)低且可擴展,那么在此日志系統之上構建的所有好處都消失了。
  許多人可能認為日志記錄系統在分布式系統中是一項緩慢而昂貴的工作,并且僅用于處理元數據等信息,類(lèi)似于 ZooKeeper 更適合處理的內容。
  但是LinkedIn現在每天在kafka中處理600億次不同的消息寫(xiě)入(如果算上數據中心鏡像,則為數千億次寫(xiě)入)。
  周杰倫兄弟,他們是怎么做到的?
  1) 對日志進(jìn)行分區
  2) 通過(guò)批量讀取和寫(xiě)入優(yōu)化吞吐量
  3) 避免不必要的數據復制
  通過(guò)將日志切片為多個(gè)分區來(lái)提供可擴展性:
  1)每個(gè)分區都是有序日志,但分區之間沒(méi)有全局順序。
  2)將消息寫(xiě)入哪個(gè)分區完全由編寫(xiě)器控制,方法是根據某種類(lèi)型的鍵(例如user_id)對其進(jìn)行拆分。
  3)拆分允許在不協(xié)調分片的情況下執行日志的附加操作,同時(shí)保證系統的吞吐量與Kafka集群的大小呈線(xiàn)性相關(guān)。
  4)雖然沒(méi)有全局順序(實(shí)際上有成千上萬(wàn)的消費者或訂閱者,討論他們的全局順序通常沒(méi)有什么價(jià)值),但Kafka提供了一個(gè)保證,發(fā)送方以什么順序向一個(gè)分區發(fā)送消息,以及消息從這個(gè)分區傳遞的順序(以什么順序,以什么順序)。
  5)每個(gè)分區按照配置的編號進(jìn)行復制,如果一個(gè)領(lǐng)導節點(diǎn)掛起,其他節點(diǎn)將成為新的主節點(diǎn)。
  6)一個(gè)日志,就像文件系統一樣,線(xiàn)性讀寫(xiě)模式可以?xún)?yōu)化,這樣一個(gè)小的讀寫(xiě)日志就可以組成更大的、高吞吐量的操作??ǚ蚩ㄔ谶@件事上做得很艱難。批處理用于各種場(chǎng)景,例如客戶(hù)端向服務(wù)器發(fā)送數據、將數據寫(xiě)入磁盤(pán)、在服務(wù)器之間復制數據、向消費者傳輸數據、確認提交數據等。
  7)最后,Kafka對內存日志,磁盤(pán)日志和通過(guò)網(wǎng)絡(luò )發(fā)送的日志使用非常簡(jiǎn)單的二進(jìn)制格式,以方便使用各種優(yōu)化技術(shù),例如零拷貝數據傳輸。
  許多優(yōu)化技術(shù)結合在一起,允許您以磁盤(pán)或網(wǎng)絡(luò )可以提供的最大容量讀取和寫(xiě)入數據,即使內存已滿(mǎn)也是如此。
  2.8 日志和實(shí)時(shí)處理
  你認為周杰倫提供了一種如此漂亮的方法來(lái)復制數據并復制它嗎?
  你!錯!完成!日志是
  流式處理的另一種說(shuō)法,日志是流處理的核心。
  2.8.1 什么是流處理
 ???
  周杰倫哥認為:
  1)流處理是連續數據處理的基礎設施。
  2)流處理的計算模型,如MapReduce或其他分布式處理框架,只需要保證低延遲。
  3)批處理式數據采集模式導致批量式數據處理模式。
  4)連續的數據采集模式,導致連續的數據處理模式。
  5)杰伊哥講解美國人口普查方式解釋批處理。
  在LinkedIn,活動(dòng)數據和數據庫更改都是連續的。
  
  批處理每天處理數據,類(lèi)似于連續計算,將窗口設置為一天。
  因此,流處理是一個(gè)這樣的過(guò)程:
  6)在處理數據時(shí),有時(shí)間的概念,不需要維護數據的靜態(tài)快照,因此結果可以以用戶(hù)定義的頻率輸出,而無(wú)需等待數據集達到某個(gè)“結束”狀態(tài)。
  7)從這個(gè)意義上說(shuō),流處理是批處理的泛化,鑒于實(shí)時(shí)數據的普及,這是一個(gè)極其重要的泛化。
  8)許多商業(yè)公司無(wú)法構建流處理引擎,通常是因為他們無(wú)法構建流數據采集引擎。
  9) 流處理彌合了實(shí)時(shí)響應服務(wù)和離線(xiàn)批處理基礎設施之間的差距。
  10)日志系統,解決了流處理模式下的許多關(guān)鍵問(wèn)題,其中最大的問(wèn)題是如何在實(shí)時(shí)多訂閱者模式下提供可用數據(流數據采集)。
  2.9 數據流圖
  關(guān)于流處理最有趣的事情是它擴展了源的概念。
  無(wú)論是日志、源還是事件,逐行數據記錄都來(lái)自應用程序的活動(dòng)。
  但是,流式處理還允許我們處理來(lái)自其他源的數據,這些數據與提供給消費者的原創(chuàng )數據一樣好,并且這些派生源可以收錄任何級別的復雜性。
  流處理任務(wù)應如下所示:從日志中讀取數據并將輸出寫(xiě)入日志或其他系統。
  作為輸入和輸出日志,進(jìn)程本身和其他進(jìn)程連接起來(lái)形成一個(gè)圖。
  事實(shí)上,以日志為中心的系統允許您從組織捕獲、轉換和流式傳輸數據,作為一系列日志和寫(xiě)入日志處理的組合。
  流處理程序不必很高:它可以是一個(gè)進(jìn)程或一組進(jìn)程,但可以提供一些額外的基礎結構和支持,以便更輕松地管理用于處理的代碼。
  引入日志有兩個(gè)目的:
  1)確保數據集可以支持多個(gè)訂閱者模式并且有序。
  2)可以用作應用程序的緩沖區。這一點(diǎn)很重要,因為在異步數據處理過(guò)程中,如果上游生產(chǎn)者更快地生成數據并且使用者無(wú)法跟上,則要么阻塞該過(guò)程,要么引入緩沖區,要么丟棄數據。
  丟棄數據似乎不是一個(gè)好的選擇,阻塞處理進(jìn)程會(huì )導致處理進(jìn)程在所有數據流的處理圖中卡住.log另一方面是一個(gè)大的、超大的、非常大的緩沖區,它允許重啟處理進(jìn)程,這樣如果一個(gè)進(jìn)程失敗, 它不會(huì )影響流處理圖中的其他進(jìn)程。這對于大型組織擴展數據流至關(guān)重要,因為不同的團隊有不同的處理任務(wù),顯然整個(gè)流處理過(guò)程不會(huì )因為一個(gè)任務(wù)中的錯誤而停滯不前。
  Storm 和 Samza 就是這樣的流處理引擎,它們都可以使用 Kafka 或其他類(lèi)似的系統作為它們的日志系統。
 ?。ㄗⅲ褐芙軅惛绺缤春返?,卡夫卡在前,三輪在后。
  2.10 有狀態(tài)實(shí)時(shí)處理許多流處理
  引擎是無(wú)狀態(tài)的,一次一條記錄,但許多用例需要在一定的時(shí)間窗口內進(jìn)行復雜的計數、聚合和聯(lián)接操作才能進(jìn)行流處理。
  例如,在點(diǎn)擊流中,聯(lián)接用戶(hù)信息。
  然后,此用例需要狀態(tài)支持。在處理數據的地方,需要維護特定數據的狀態(tài)。
  問(wèn)題是,在處理器可能掛斷的情況下,如何保持正確?
  在內存中維護狀態(tài)可能是最簡(jiǎn)單的,但它不會(huì )承受崩潰。
  如果狀態(tài)僅在某個(gè)時(shí)間窗口內保持,則當發(fā)生掛起或故障時(shí),則可以將處理直接重放回窗口的開(kāi)頭,但如果窗口長(cháng)達 1 小時(shí),則可能不起作用。
  另一種簡(jiǎn)單的解決方案是將狀態(tài)存儲在遠程存儲系統或數據庫中,但這會(huì )丟失數據的局部性并產(chǎn)生大量的網(wǎng)絡(luò )往返。
  回想一下上面提到的數據庫中表和日志的雙重性。
  可以使用本地存儲或索引來(lái)維護狀態(tài)的流處理組件:
  通過(guò)記錄有關(guān)本地索引的更改日志,它用于在崩潰后還原狀態(tài)。實(shí)際上,此機制還揭示了一種通用狀態(tài),該狀態(tài)可以存儲為任意索引類(lèi)型,并與輸入流同時(shí)進(jìn)行共分區。
  當處理過(guò)程崩潰時(shí),它可以從更改日志中恢復索引,更改日志充當本地狀態(tài)基于時(shí)間備份的某種增量記錄的轉換器。
  這種機制也提供了一個(gè)非常優(yōu)雅的能力:進(jìn)程本身的狀態(tài)也可以記錄為日志,顯然其他進(jìn)程可以訂閱這個(gè)狀態(tài)。
  結合數據庫中的日志技術(shù),對于數據集成的場(chǎng)景,你經(jīng)??梢宰龇浅姶蟮氖虑椋?br />   通過(guò)從數據庫中提取日志并在各種流處理系統中為它們編制索引,可以聯(lián)接不同的事件流。
  2.11 日志合并
  顯然,不可能使用日志來(lái)記錄全職和全職狀態(tài)變化信息。
  Kafka 使用日志合并或日志垃圾回收技術(shù):
  1) 對于事件數據,Kafka 只保留一個(gè)時(shí)間窗口(可按時(shí)間配置為天或按空間配置)。
  2)對于鍵控更新,Kafka使用壓縮技術(shù)。這種類(lèi)型的日志可用于通過(guò)另一個(gè)系統中的重放技術(shù)重建源系統的狀態(tài)。
  如果全時(shí)保存日志,隨著(zhù)時(shí)間的推移,數據會(huì )越來(lái)越大,重放過(guò)程也會(huì )越來(lái)越長(cháng)。
  Kafka 不是簡(jiǎn)單地丟棄舊的日志信息,而是使用合并方法來(lái)丟棄過(guò)時(shí)的記錄,例如消息的主鍵最近是否更新。
  2.12 系統構建
  2.12.1 分布式系統
  日志,在數據流系統和分布式數據庫的數據集成中所扮演的角色是相同的:
  您可以將組織中的應用程序和數據流視為單個(gè)分布式數據庫。
  將面向查詢(xún)的獨立系統(如 Redis、SOLR、Hive 表等)視為特殊的數據頂級索引。
  將 Storm 和 Samza 等流處理系統視為精心設計的觸發(fā)器或物化視圖機制。
  各種數據系統,爆發(fā)式涌現,其實(shí)這種復雜性早已存在。在關(guān)系數據庫
  的鼎盛時(shí)期,公司或組織的光學(xué)關(guān)系數據庫有很多種。顯然,不可能
  把所有東西都扔到Hadoop集群中,并期望它能解決所有問(wèn)題。那么,如何構建一個(gè)好的系統,可能是這樣的:
  要構建一個(gè)分布式系統,每個(gè)組件都是一個(gè)小集群,每個(gè)集群可能無(wú)法提供完整的安全性、性能隔離或良好的可擴展性,但每個(gè)問(wèn)題都可以(專(zhuān)業(yè)地)解決。
  Jay認為,各種系統之所以爆炸式增長(cháng),是因為構建一個(gè)強大的分布式系統非常困難。如果將用例限制為查詢(xún)等簡(jiǎn)單場(chǎng)景,則每個(gè)系統都有足夠的能力來(lái)解決問(wèn)題,但很難集成這些系統。
  杰伊弟兄認為,未來(lái)構建系統有三種可能:
  1)維持現狀。在這種情況下,數據集成仍然是最大的問(wèn)題,因此外部日志系統很重要(kafka?。?br />   2)一個(gè)強大的(關(guān)系數據庫,如輝煌的日子)系統似乎不太可能解決所有問(wèn)題。
  3)新一代系統大多是開(kāi)源的,這揭示了第三種可能:數據基礎設施可以離散化為一組服務(wù),以及面向應用的系統API,每個(gè)都不完整,但可以專(zhuān)業(yè)解決專(zhuān)門(mén)的問(wèn)題,其實(shí)現有的Java技術(shù)??梢?jiàn)一斑:
  從某個(gè)
  從這個(gè)角度來(lái)看,構建這樣的分布式系統就像某個(gè)版本的樂(lè )高。這顯然與更關(guān)心 API 的最終用戶(hù)沒(méi)有太大關(guān)系,但它揭示了構建健壯系統并保持簡(jiǎn)單性的途徑:
  顯然,如果構建分布式系統的時(shí)間從幾年下降到幾周,構建大型獨立系統的復雜性就會(huì )消失,而這肯定是因為出現了更可靠和靈活的“構建塊”。
  2.12.2 登錄在系統建設中的作用
  如果系統受外部日志系統支持,
  那么每個(gè)獨立的系統都可以通過(guò)共享一個(gè)日志來(lái)降低自身的復雜性,Jay Ge認為日志的作用是:
  1)處理數據一致性問(wèn)題??梢酝ㄟ^(guò)序列化節點(diǎn)上的并發(fā)操作來(lái)實(shí)現即時(shí)和最終一致性。
  2) 提供節點(diǎn)間的數據復制。
  3)提供“提交”的語(yǔ)義。例如,如果您認為寫(xiě)入操作不會(huì )丟失,則為操作確認。
  4) 提供外部系統可以訂閱的源。
  5) 提供在節點(diǎn)因故障而丟失數據時(shí)恢復或重建新復制節點(diǎn)的功能。
  6) 處理節點(diǎn)之間的負載均衡。
  以上可能是完整分布式系統中應該提供的大多數功能(Jay 確實(shí)喜歡 Log!剩下的就是客戶(hù)端 API,構建索引等內容(如全文索引)需要獲取所有分區,而針對主鍵的查詢(xún)只需要提取分區中的數據。
 ?。鞘O碌木驼疹櫤昧?,周杰倫哥哥!
  該系統可以分為兩個(gè)邏輯組件(這種強大的理解和力量):
  1) 日志層
  2) 服務(wù)層
  日志層以序列化和有序的方式捕獲狀態(tài)更改,而服務(wù)層存儲外部查詢(xún)所需的索引,例如,K-V 存儲可能需要 B 樹(shù)和穩定索引,而搜索服務(wù)需要倒排索引。
  寫(xiě)入操作可以直接輸入到日志層中,也可以通過(guò)服務(wù)層代理。寫(xiě)入日志會(huì )產(chǎn)生邏輯時(shí)間戳(日志索引),例如數字 ID,如果系統已分區,則服務(wù)層和日志層將具有相同的分區(但它們各自的機器編號可能不同)。
  服務(wù)層訂閱日志層,并在以
  最快的速度順序存儲日志,并將數據和狀態(tài)變化同步到自己的本地索引中。
  客戶(hù)端將獲得讀寫(xiě)語(yǔ)義:
  通過(guò)攜帶寫(xiě)入任一節點(diǎn)(服務(wù)節點(diǎn))的時(shí)間時(shí)間戳Layer 接收此查詢(xún),將時(shí)間戳
  與其本地索引進(jìn)行比較,如有必要,為了防止返回過(guò)期的舊數據,請推遲請求的執行,直到此服務(wù)節點(diǎn)的索引同步跟上時(shí)間戳。
  服務(wù)層中的節點(diǎn)可能需要也可能不需要知道領(lǐng)導者的概念。在許多簡(jiǎn)單的用例中,服務(wù)層無(wú)法構建領(lǐng)導節點(diǎn),因為日志是事實(shí)的來(lái)源。
  還有一個(gè)問(wèn)題是如何處理節點(diǎn)故障后的恢復。這可以通過(guò)在日志中保留固定大小的時(shí)間窗口同時(shí)維護數據的快照來(lái)完成。您還可以讓 Log 保留數據的完整備份,并使用日志合并技術(shù)完成 Log 本身的垃圾回收。這種方法將服務(wù)層的大部分復雜性轉移到日志層,因為服務(wù)層是特定于系統的,并且日志層可以是通用的。
  基于日志系統,可以提供一套完整的API供開(kāi)發(fā)和使用,可以作為其他系統的ETL數據源,供其他系統訂閱。
  全棧 ! :
  顯然,以日志為核心的分布式系統立即成為可以為其他系統提供數據加載支持和數據流處理的角色。同樣,流處理系統可以同時(shí)使用多個(gè)數據流,并通過(guò)索引這些數據流然后輸出它們來(lái)向外部世界提供服務(wù)。系統基于
  日志層和服務(wù)層構建,使查詢(xún)相關(guān)因素與系統的可用性和一致性脫鉤。
  也許很多人認為在日志中維護數據的單獨備份,尤其是制作數據的完整副本,太浪費和奢侈,但事實(shí)并非如此:
  1)LinkedIn的Kafka生產(chǎn)集群每個(gè)數據中心維護75TB的數據,應用集群比Kafka集群需要更高的存儲空間和存儲條件(SSD+更多內存)。
  2)全文搜索索引最好全部加載到內存中,日志可以便宜使用,大容量磁盤(pán)因為它們是線(xiàn)性讀寫(xiě)的。
  3) 由于 Kafka 集群實(shí)際上以多訂閱者模型運行,多個(gè)系統使用數據,因此日志集群的開(kāi)銷(xiāo)被攤銷(xiāo)。
  4)由于所有這些原因,外部日志系統(kafka或類(lèi)似系統)的開(kāi)銷(xiāo)變得非常小。
  2.13 結論
  最后,周杰倫哥不僅大方地留下了大量有價(jià)值的學(xué)術(shù)和工程論文和參考鏈接,還虛心留下了這樣一句話(huà):
  如果你做到了這一步,你就知道我對日志的大部分了解。
  認為這篇文章對您有幫助嗎?請與更多人分享
  關(guān)注“進(jìn)口新品”查看技術(shù)干貨
  解決方案:網(wǎng)站優(yōu)化排名軟件有哪些,seo優(yōu)化必備的5種工具
  2019年哪些工具可以輔助SEO網(wǎng)站優(yōu)化?
  很多公司在做優(yōu)化的時(shí)候都想知道有哪些工具可以輔助優(yōu)化?這是每個(gè)seo都會(huì )遇到的問(wèn)題。哪些工具可以輔助優(yōu)化?網(wǎng)站 可以排名更好嗎?哪些工具可以經(jīng)常使用 什么?下面小編就為大家詳細講解一下。
  推薦幾款專(zhuān)業(yè)的SEO網(wǎng)站優(yōu)化工具?
  SEO工具是搜索引擎優(yōu)化的各種工具,如查詢(xún)工具、排名工具、流量分析軟件、站群軟件等,善用各種工具可以節省大量時(shí)間,讓SEO服務(wù)更輕松.
  1.站長(cháng)平臺
  
  1:百度站長(cháng)平臺:百度站長(cháng)工具提供Sitemap提交、死鏈接提交、網(wǎng)站安全檢測、URL優(yōu)化建議、百度索引查詢(xún)等功能。
  2:搜狗站長(cháng)平臺:搜狗站長(cháng)工具提供Sitemap提交、匹配網(wǎng)站logo、域名更改、爬蟲(chóng)壓力反饋、死鏈接提交、URL提交、收錄索引量和關(guān)鍵詞排名查詢(xún)等功能。
  3:360站長(cháng)平臺:360站長(cháng)平臺提供與上述兩個(gè)站長(cháng)平臺幾乎相同的功能,主要包括:數據提交、網(wǎng)站數據分析、網(wǎng)站保護和網(wǎng)站安全檢測和其他功能。
  2.SEO綜合查詢(xún)工具
  1:愛(ài)站:一個(gè)非常好用的SEO網(wǎng)站優(yōu)化綜合查詢(xún)工具,可用于查詢(xún)百度權重、親情鏈接、百度索引量、備案信息、關(guān)鍵詞挖掘等信息。
  2:站長(cháng)工具:站長(cháng)工具的功能和愛(ài)站差不多。這里值得一提的是,使用站長(cháng)工具和愛(ài)站工具查詢(xún)數據的結果有些不同。這是因為兩個(gè)工具的數據計算不同是正?,F象。
  3:5118:5118是SEO網(wǎng)站優(yōu)化師的必備工具,也是挖掘長(cháng)尾詞的最佳工具。通過(guò)此,您可以了解SEO數據的實(shí)時(shí)變化和關(guān)鍵詞排名的具體趨勢變化,指導關(guān)鍵詞的建設。
  拼多多的運營(yíng)工具有哪些(揭秘拼多多營(yíng)銷(xiāo)工具攻略)
  
  免費推廣工具有哪些(推廣工具內部情況綜合分析)
  有哪些網(wǎng)絡(luò )推廣軟件(好用工具分享)
  微信推廣軟件有哪些(微信推廣3款工具解析)
  常用的ui設計工具有哪些(最好用的7款ui設計工具)
  公眾號文章排版工具有哪些(最實(shí)用的3款排版工具)
  【本文標題及網(wǎng)址,轉載請注明出處】網(wǎng)站優(yōu)化排名軟件有哪些,SEO優(yōu)化必備的5個(gè)工具
  內容更新時(shí)間(UpDate):2022年11月18日星期五 查看全部

  解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章
 ?。c(diǎn)擊上方公眾號快速關(guān)注)。
  資料來(lái)源:foreach_break,
  前言
  這是一份學(xué)習筆記。
  學(xué)習材料來(lái)自Jay Kreps的日志博客文章。
  原文很長(cháng),但我堅持閱讀,收獲頗豐,對 Jay 的技術(shù)能力、架構能力和對分布式系統的深刻理解印象深刻。同時(shí),他有點(diǎn)沾沾自喜,因為他的一些理解與周杰倫的觀(guān)點(diǎn)相吻合。
  Jay Kreps是前LinkedIn首席參謀工程師,Confluent現任聯(lián)合創(chuàng )始人兼首席執行官,以及Kafka和Samza的主要作者。
  所謂筆記,讀文章背,因為周杰倫哥自己在這一章里組織得太好了,他自己的科學(xué)素養和哲學(xué)素養也很高,所以他覺(jué)得很精彩的就不省略了。
  I. 信息來(lái)源
  日志:每個(gè)軟件工程師都應該知道的關(guān)于實(shí)時(shí)數據的統一抽象()
  2. 注意事項
  2.1 日志的值
  1)日志是以下系統的核心:
  2)日志可能與計算機一樣古老,是分布式數據系統和實(shí)時(shí)計算系統的核心。
  3)日志有很多名稱(chēng):
  4)不懂日志,就不能完全看懂
  它
  2.2 什么是日志?
  2.2.1 概述
  記錄的順序定義了時(shí)間等概念。
  因為越靠左,記錄越早。
  條目的序號作為一種時(shí)間戳的概念,以及記錄的順序作為時(shí)間的概念可能看起來(lái)很奇怪,但正如您很快就會(huì )發(fā)現的那樣,它可以很容易地將“時(shí)間”與任何特定的物理時(shí)鐘分離。
  日志與普通文件和表沒(méi)有太大區別。
  這樣,你可能會(huì )覺(jué)得日志這么簡(jiǎn)單,還有需要討論的嗎?
  其實(shí)日志的核心含義是:
  日志記錄發(fā)生了什么以及何時(shí)發(fā)生。
  而這個(gè)通常是分布式系統最核心的東西。
  請注意,這里有必要澄清幾個(gè)概念:
  2.2.2 數據庫中的日志
  Log的起源是未知的,就像發(fā)明二進(jìn)制查找的人一樣,很難意識到這項發(fā)明是一項發(fā)明。
  日志早在IBM的System R中就出現了。
  在數據庫中,當數據庫崩潰時(shí),您需要使各種數據結構和索引保持同步。
  為了確保原子性和持久性,數據庫需要在修改數據結構和索引之前記錄要修改的內容。
  因此,日志記錄何時(shí)發(fā)生某些事情,每個(gè)表和索引本身就是此歷史信息的映射。
  由于日志是立即持久的,因此在發(fā)生崩潰時(shí),它將成為還原其他持久結構的可靠來(lái)源。
  日志已經(jīng)從 ACID 功能的實(shí)現發(fā)展成為數據庫之間數據復制的一種方式。
  顯然,數據庫中發(fā)生的一系列數據變化已經(jīng)成為維持數據庫之間同步最需要的信息。
  Oracle,MySQL和PostgreSQL都收錄日志傳輸協(xié)議,該協(xié)議將部分日志發(fā)送到用于持久復制的從屬服務(wù)器。Oracle
  的XStreams和GoldenState使用日志作為通用數據訂閱機制,為非Oracle數據庫提供訂閱數據。
  MySQL和PostgreSQL提供了類(lèi)似的組件,這些組件是數據系統架構的核心。
  面向機器的日志不僅可以用于數據庫,還可以用于:
  2.2.3 分布式系統中的日志
  日志解決了分布式數據系統中的兩個(gè)重要問(wèn)題:
  1) 有序數據更改
  2) 數據分發(fā)
  所謂的狀態(tài)機復制原理:
  如果兩個(gè)確定性進(jìn)程,從相同的狀態(tài)開(kāi)始,以相同的順序,接收相同的輸入,那么它們將產(chǎn)生相同的輸出并以相同的狀態(tài)結束。
  確定性意味著(zhù)處理過(guò)程與時(shí)間無(wú)關(guān),并且處理結果不受其他輸入的影響。
  可以通過(guò)非確定性示例來(lái)理解:
  所謂狀態(tài)可以是機器上的任何數據,無(wú)論是在機器的內存中,還是處理完成后的磁盤(pán)上。值得注意的是,相同的
  輸入以相同的順序產(chǎn)生相同的結果,這就是為什么日志如此重要的原因,這是一個(gè)直觀(guān)的概念:如果你將相同的日志輸入兩個(gè)確定性程序,它們將產(chǎn)生相同的輸出。
  在分布式系統的構建中,認識到這一點(diǎn),可以使:
  讓所有機器做同樣的事情,協(xié)議是:
  構建分布式、一致的日志系統,為所有處理系統提供輸入。
  日志系統的作用是分散所有輸入流之上的不確定性,并確保處理相同輸入的所有復制節點(diǎn)同步。
  這種方法最好的一點(diǎn)是,您可以將索引日志的時(shí)間戳視為所有復制節點(diǎn)的時(shí)鐘:通過(guò)使用復制節點(diǎn)處理的日志
  中最大的時(shí)間戳作為復制節點(diǎn)的唯一 ID,時(shí)間戳與日志相結合可以唯一地表示節點(diǎn)的整個(gè)狀態(tài)。
  還有許多方法可以應用此方法:
  從理論上講,我們可以記錄一系列機器指令,或者調用的方法的名稱(chēng)和參數,只要數據處理過(guò)程的行為相同,這些過(guò)程就可以保證節點(diǎn)之間的一致性。
  玩數據庫的人通常以不同的方式處理邏輯日志和物理日志:
  對于分布式系統,通常有兩種方法來(lái)處理復制和數據處理:
  1) 狀態(tài)機模型(主動(dòng) – 主動(dòng))
  2) 主回模型(主動(dòng) – 被動(dòng))
  如下圖所示:
  為了理解上述兩種方法之間的區別,讓我們看一個(gè)簡(jiǎn)單的例子:
  現在,集群需要提供一個(gè)簡(jiǎn)單的服務(wù)來(lái)執行算術(shù)運算,例如加法和乘法。最初,維護一個(gè)數字,例如 0。
  上面的例子也說(shuō)明了為什么順序是復制節點(diǎn)之間一致性的關(guān)鍵因素,如果這些操作的順序被打亂,將獲得不同的結果。
  分布式日志,可以作為一些共識算法的數據結構:
  表示有關(guān)下一個(gè)值的一系列決策的日志。
  2.2.4 更新日志
  從數據庫的角度來(lái)看,記錄數據更改的一組更改日志和表是雙重且可互操作的。
  1) 基于記錄數據更改的日志,可以重構處于特定狀態(tài)的表(也可以是非關(guān)系存儲系統中帶有鍵的記錄)。
  2)相反,如果表發(fā)生變化,則可以在日志中計算更改。
  這正是您想要的準實(shí)時(shí)副本的秘密所在!
  這與版本控制的作用非常相似:管理分布式、并發(fā)、狀態(tài)更改。
  版本控制工具(用于維護反映更改的修補程序)本質(zhì)上是日志,您可以與簽出的分支快照進(jìn)行交互,該快照等效于數據庫中的表。您會(huì )發(fā)現復制在版本控制和分布式系統中都是基于日志的:更新版本時(shí),只需提取反映版本更改的修補程序并將其應用于當前分支快照。
  2.3 數據集成
  2.3.1 數據集成的含義數據
  集成是為組織中的所有服務(wù)和系統提供數據。
  事實(shí)上,數據的有效利用非常符合馬斯洛的需求層次。
  金字塔的底部是采集數據并將其集成到應用程序中(無(wú)論是實(shí)時(shí)計算引擎,文本文件還是Python腳本)。
  并且需要轉換這些數據,以保持易于閱讀和處理的統一、標準化和整潔的格式。
  一旦滿(mǎn)足了上述要求,就可以開(kāi)始考慮各種數據處理方法,如map-reduce或實(shí)時(shí)查詢(xún)系統。
  顯然,如果沒(méi)有可靠、完整的數據流,Hadoop 只是一個(gè)昂貴的、難以集成的加熱器(集群是耗電的嗎?)。
  相反,如果可以確保數據流可靠、可用且完整,則可以考慮更高級的游戲玩法、更好的數據模型以及一致、更易于理解的語(yǔ)義。
  然后,注意力可以轉移到可視化、報告、算法和預測(挖掘器、深度)上。
  2.3.2 數據集成的兩種復雜性
  事件事件
  數據記錄事件如何發(fā)生,而不僅僅是發(fā)生的情況,通常用作應用程序日志,因為它通常由應用程序系統寫(xiě)入。但這實(shí)際上混淆了日志的功能。
  事實(shí)上,谷歌的財富是由建立在(用戶(hù))點(diǎn)擊流和好惡(體驗)上的關(guān)聯(lián)管道產(chǎn)生的,點(diǎn)擊流和展示是事件。
  各種專(zhuān)業(yè)數據系統的爆炸式增長(cháng)
  為什么這些系統存在:
  顯然,將數據集成到這樣的系統中對于數據集成來(lái)說(shuō)是極其困難的。
  2.3.3 基于日志結構的數據流
  可以根據日志對每個(gè)邏輯數據源進(jìn)行建模。
  數據源可以是記錄事件(命中和 PV)的應用程序,也可以是接受更改的數據庫表。
  每個(gè)訂閱者都盡快從這些數據源生成的日志中獲取新記錄,將其應用于本地存儲系統,并改善其在日志中的讀取偏移。訂閱者可以是任何數據系統,例如緩存、Hadoop、另一個(gè)站點(diǎn)的數據庫或搜索引擎。
  登錄事實(shí)上,提供了一個(gè)邏輯時(shí)鐘,用于測量不同訂閱者
  的狀態(tài)以響應數據變化,因為這些訂閱者在日志中具有不同且獨立的讀取偏移量,這就像時(shí)間意義上的“時(shí)刻”。
  考慮這樣一個(gè)示例、數據庫和一些緩存服務(wù)器:
  
  日志提供了同步所有緩存服務(wù)器并推送它們所處的“時(shí)刻”的能力。
  假設我們寫(xiě)一個(gè)編號為 X 的日志,讀取來(lái)自緩存服務(wù)器
  的數據,為了不讀取舊數據,我們只需要確保在緩存服務(wù)器將數據(同步)復制到 X 位置之前我們不會(huì )從該緩存中讀取任何內容。
  此外,日志還提供了充當緩沖區的功能,以異步方式支持生產(chǎn)者和使用者的行為。
  支持異步的最關(guān)鍵原因之一是訂閱系統可能會(huì )崩潰,離線(xiàn)進(jìn)行維護,然后重新上線(xiàn),在這種情況下,每個(gè)訂閱者都按照自己的節奏使用數據。
  批處理系統(如 Hadoop 或數據倉庫)使用數據
  每小時(shí)或每天一次,而實(shí)時(shí)系統通常在幾秒鐘內消耗數據。
  數據源或日志對使用數據的訂閱者一無(wú)所知,因此需要在管道中無(wú)縫添加和刪除訂閱者。
  更重要的是,訂閱者只需要知道日志,不需要知道他們消費的數據來(lái)源,無(wú)論是RDBMS,Hadoop還是新流行的K-V數據庫。之所以討論日志,而不是消息系統,是因為不同的消息系統
  保證了不同的特性,而word消息系統很難完全準確地表達某種語(yǔ)義,因為消息系統更重要的是重定向消息。
  但是,日志可以理解為提供持久性保證和強有序語(yǔ)義的消息系統,這在通信系統中稱(chēng)為原子廣播。
  2.4 LinkedIn
  LinkedIn目前的主要系統包括(注:2013年):
  每個(gè)系統在其專(zhuān)業(yè)領(lǐng)域都提供專(zhuān)門(mén)的高級功能。
 ?。ㄟ@一段太長(cháng)太長(cháng)了,周杰倫哥很擅長(cháng),所以挑重點(diǎn)記??!
  1)引入數據流的概念是因為在Oracle數據庫中的表之上建立了抽象緩存層,為搜索引擎索引構建和社交圖譜更新提供擴展能力。
  2)為了更好的處理LinkedIn的一些推薦算法,我開(kāi)始構建Hadoop集群,但團隊在這方面的經(jīng)驗還不多,所以我走了不少彎路。
  3)一開(kāi)始,這只是一個(gè)粗略的想法,即將數據從Oracle數據倉庫中提取出來(lái)并將其扔到Hadoop中是可以的。結果發(fā)現:首先,從Oracle數據倉庫快速導出數據是一場(chǎng)噩夢(mèng);其次,也是更糟糕的是,數據倉庫中的一些數據沒(méi)有得到正確處理,導致Hadoop批處理任務(wù)無(wú)法按預期輸出結果,并且通過(guò)Hadoop批處理執行的任務(wù)通常是不可逆的,尤其是在報告出來(lái)之后。
  4)最后,團隊離開(kāi)數據倉庫,直接進(jìn)入數據庫和日志作為數據源。接下來(lái),建造了一個(gè)輪子:K-V 存儲(伏地魔)。
  5)即使是像數據復制這樣普通的工作也會(huì )占用團隊的大量時(shí)間來(lái)處理,更糟糕的是,一旦數據處理管道中存在一個(gè)點(diǎn),Hadoop立即變得浪費,因為無(wú)論算法在錯誤數據上運行多么出色,只有一個(gè)后果,那就是產(chǎn)生更多錯誤的數據。
  6)即使團隊在高度抽象上構建了一些東西,每個(gè)數據源也需要特定的配置,這是許多錯誤和失敗的根源。
  7)大量的程序員想要跟進(jìn),每個(gè)程序員都有大量的想法,集成這個(gè)系統,添加這個(gè)功能,集成這個(gè)功能,或者想要自定義數據源。
  8)周杰倫弟兄開(kāi)始意識到:
  首先,他們修建的管道雖然還很粗糙,但價(jià)值極高。即使解決數據在新系統(如Hadoop)中可用的問(wèn)題,也可以解鎖大量可能性。以前難以進(jìn)行的計算開(kāi)始成為可能。只需從其他系統解鎖數據并集成它們,即可輕松創(chuàng )建新產(chǎn)品和分析。其次,很明顯,可靠的數據加載
  需要更堅實(shí)的支持,如果可以捕獲所有結構,Hadoop數據加載可以完全自動(dòng)化,而無(wú)需添加新數據源或手動(dòng)修改數據的模式。數據會(huì )神奇地出現在HDFS中,當添加新的數據源時(shí),Hive的表會(huì )自動(dòng)自適應地生成相應的列。
  第三,數據覆蓋面遠遠不夠。很難處理許多新的數據源。
  9)為了解決添加新數據源后的數據加載問(wèn)題,團隊開(kāi)始了這樣的嘗試:
  很快,他們發(fā)現這行不通,因為發(fā)布和訂閱,生產(chǎn)和消費,數據流通常仍然是雙向的,這變成了O(n^2)問(wèn)題。
  所以,他們需要的是這樣的模型:
  每個(gè)使用者都需要與數據源隔離,理想情況下只與一個(gè)數據存儲庫交互,該存儲庫為他們提供對任意數據的訪(fǎng)問(wèn)權限。
  10)消息系統+日志=卡夫卡,卡夫卡誕生了。
  2.5 日志ETL與數據倉庫的關(guān)系
  2.5.1 數據倉庫
  1) 一個(gè)干凈、結構化、集成的數據存儲庫,用于分析。
  2)雖然這個(gè)想法很棒,但獲取數據的方式有點(diǎn)過(guò)時(shí)了:定期從數據庫中獲取數據并將其轉換為更易讀的格式。
  3)以前的數據倉庫問(wèn)題是干凈的數據和數據倉庫是高度耦合的。
  數據倉庫應該是一組查詢(xún)功能的集合,服務(wù)于報表、搜索、廣告熱分析,包括計數、聚合、過(guò)濾等操作,所以它應該是一個(gè)批處理系統。
  但是干凈數據與這種批處理系統的高度耦合意味著(zhù)這些數據不能被實(shí)時(shí)系統消費,例如搜索引擎索引,實(shí)時(shí)計算和實(shí)時(shí)監控系統等。
  2.5.2 ETL
  Jay認為ETL只做兩件事:
  1)數據提取和清理,從特定系統解鎖數據
  2)重構數據,以便可以通過(guò)數據倉庫進(jìn)行查詢(xún)。例如,更改數據類(lèi)型以適應關(guān)系數據庫的類(lèi)型,將架構轉換為星形或雪花圖案,或將其分解為面向列的存儲格式。
  但是將這兩件事結合在一起是一個(gè)大問(wèn)題,因為集成的、干凈的數據應該被其他實(shí)時(shí)系統、索引系統和低延遲處理系統使用。數據倉庫團隊
  負責采集和清理數據,但這些數據的生產(chǎn)者往往不知道數據倉庫團隊的數據處理需求,導致數據難以提取和清理。
  同時(shí),由于核心業(yè)務(wù)團隊對跟上公司其他部門(mén)的步伐不敏感,真正可以處理的數據覆蓋率很低,數據流很脆弱,很難快速響應變化。
  所以,一個(gè)更好的方法:
  如果要在干凈的數據集上做一些搜索、實(shí)時(shí)監控趨勢圖、實(shí)時(shí)告警,不宜使用原創(chuàng )數據倉庫或Hadoop集群作為基礎設施。更糟糕的是,ETL為數據倉庫構建的數據加載系統對其他(實(shí)時(shí))系統幾乎沒(méi)有用處。
  最好的模型是完成在數據發(fā)布者發(fā)布數據之前進(jìn)行數據
  清理過(guò)程,因為只有發(fā)布者最了解其數據的外觀(guān)。在此階段完成的所有操作都應該是令人滿(mǎn)意的無(wú)損和可逆的。
  所有豐富的語(yǔ)義或附加值的實(shí)時(shí)轉換都應在原創(chuàng )日志后處理之后進(jìn)行后處理,包括為事件數據建立會(huì )話(huà)或添加某些感興趣的字段。原創(chuàng )日志仍然可以單獨使用,但此類(lèi)實(shí)時(shí)應用程序也會(huì )派生新的參數化日志。
  最后,只有與特定目標系統相對應的數據聚合操作才應成為數據加載的一部分,例如轉換為星形或雪花圖案,以便在數據倉庫中進(jìn)行分析和報告。因為這個(gè)階段,就像傳統的ETL一樣,由于一個(gè)非常干凈和標準化的數據流,(帶日志)現在非常簡(jiǎn)單。
  2.6 日志文件和事件
  一
  以日志為核心的架構還有一個(gè)額外的好處,那就是易于實(shí)現無(wú)耦合、事件驅動(dòng)的系統。
  捕獲用戶(hù)活動(dòng)和系統變化的傳統方法是將這些信息寫(xiě)入文本日志,然后將其提取到數據倉庫或 Hadoop 集群中進(jìn)行聚合和處理,這類(lèi)似于前面描述的數據倉庫和 ETL 問(wèn)題:數據與數據倉庫高度耦合。
  在LinkedIn,它構建了一個(gè)基于kafka的事件數據處理系統。為各種操作定義了數百種事件類(lèi)型,從 PV、廣告展示、搜索到服務(wù)調用和應用程序異常。
  要了解上述事件驅動(dòng)系統的好處,請考慮一個(gè)簡(jiǎn)單的事件示例:
  在“工作機會(huì )”頁(yè)上,提供機會(huì )。此頁(yè)面應僅負責如何呈現機會(huì ),不應收錄太多其他邏輯。但是,您會(huì )發(fā)現在相當大的網(wǎng)站中執行此操作很容易涉及越來(lái)越多的與演示機會(huì )無(wú)關(guān)的邏輯。
  例如,我們要集成以下系統功能:
  1)我們需要將數據發(fā)送到Hadoop和數據倉庫進(jìn)行離線(xiàn)處理。
  2)我們需要計算頁(yè)面瀏覽量,以確保某些視圖不是用于抓取Web內容或任何東西。
  3) 我們需要匯總此頁(yè)面上的瀏覽信息,以顯示在業(yè)務(wù)機會(huì )發(fā)布商的分析頁(yè)面上。
  4)我們需要記錄一個(gè)用戶(hù)瀏覽這個(gè)頁(yè)面的歷史記錄,以確保我們?yōu)檫@個(gè)用戶(hù)提供任何適合這個(gè)用戶(hù)的工作機會(huì ),有價(jià)值和良好的體驗,而不是一遍又一遍地反復向這個(gè)用戶(hù)展示一個(gè)機會(huì )(想想只有老婆不在家的時(shí)候才能玩的游戲, 紅綠藍閃爍的特效,配上轟轟烈烈的DJ風(fēng)格舞曲,或是事業(yè)巔峰和穿短裙的女生的搖擺焦點(diǎn),再點(diǎn)擊發(fā)現是標題黨的廣告?。?。
  5)我們的推薦系統需要記錄此頁(yè)面的瀏覽歷史記錄,以正確跟蹤此工作機會(huì )的受歡迎程度。
  很快,僅顯示機會(huì )的頁(yè)面的邏輯變得復雜。當我們把這個(gè)機會(huì )也添加到移動(dòng)端時(shí),我們也不得不遷移邏輯,這增加了復雜性。訣竅是,在此頁(yè)面上工作的工程師需要了解其他系統,以確保正確集成上述功能。
  這只是一個(gè)非常簡(jiǎn)單的例子,在實(shí)踐中,情況只會(huì )變得更加復雜。
  事件驅動(dòng)可以使這變得容易。負責展示機會(huì )的頁(yè)面
  只需要展示機會(huì )并記錄一些與演示相關(guān)的因素,例如工作機會(huì )的屬性、查看頁(yè)面的人員以及其他有用的演示相關(guān)信息。頁(yè)面不需要維護其他系統的知識和知識,例如推薦系統、安全系統、機會(huì )發(fā)布者分析系統、數據倉庫等,所有這些系統只需要以訂閱者的身份訂閱事件,然后獨立處理,而提供機會(huì )的頁(yè)面不需要修改新的訂閱者或消費者加入。
  2.7 構建可擴展日志
  分離發(fā)布者和訂閱者并不是什么新鮮事,但日志系統很難確保多個(gè)訂閱者可以實(shí)時(shí)處理消息,同時(shí)確??蓴U展性。如果日志構建
  速度不快、開(kāi)銷(xiāo)低且可擴展,那么在此日志系統之上構建的所有好處都消失了。
  許多人可能認為日志記錄系統在分布式系統中是一項緩慢而昂貴的工作,并且僅用于處理元數據等信息,類(lèi)似于 ZooKeeper 更適合處理的內容。
  但是LinkedIn現在每天在kafka中處理600億次不同的消息寫(xiě)入(如果算上數據中心鏡像,則為數千億次寫(xiě)入)。
  周杰倫兄弟,他們是怎么做到的?
  1) 對日志進(jìn)行分區
  2) 通過(guò)批量讀取和寫(xiě)入優(yōu)化吞吐量
  3) 避免不必要的數據復制
  通過(guò)將日志切片為多個(gè)分區來(lái)提供可擴展性:
  1)每個(gè)分區都是有序日志,但分區之間沒(méi)有全局順序。
  2)將消息寫(xiě)入哪個(gè)分區完全由編寫(xiě)器控制,方法是根據某種類(lèi)型的鍵(例如user_id)對其進(jìn)行拆分。
  3)拆分允許在不協(xié)調分片的情況下執行日志的附加操作,同時(shí)保證系統的吞吐量與Kafka集群的大小呈線(xiàn)性相關(guān)。
  4)雖然沒(méi)有全局順序(實(shí)際上有成千上萬(wàn)的消費者或訂閱者,討論他們的全局順序通常沒(méi)有什么價(jià)值),但Kafka提供了一個(gè)保證,發(fā)送方以什么順序向一個(gè)分區發(fā)送消息,以及消息從這個(gè)分區傳遞的順序(以什么順序,以什么順序)。
  5)每個(gè)分區按照配置的編號進(jìn)行復制,如果一個(gè)領(lǐng)導節點(diǎn)掛起,其他節點(diǎn)將成為新的主節點(diǎn)。
  6)一個(gè)日志,就像文件系統一樣,線(xiàn)性讀寫(xiě)模式可以?xún)?yōu)化,這樣一個(gè)小的讀寫(xiě)日志就可以組成更大的、高吞吐量的操作??ǚ蚩ㄔ谶@件事上做得很艱難。批處理用于各種場(chǎng)景,例如客戶(hù)端向服務(wù)器發(fā)送數據、將數據寫(xiě)入磁盤(pán)、在服務(wù)器之間復制數據、向消費者傳輸數據、確認提交數據等。
  7)最后,Kafka對內存日志,磁盤(pán)日志和通過(guò)網(wǎng)絡(luò )發(fā)送的日志使用非常簡(jiǎn)單的二進(jìn)制格式,以方便使用各種優(yōu)化技術(shù),例如零拷貝數據傳輸。
  許多優(yōu)化技術(shù)結合在一起,允許您以磁盤(pán)或網(wǎng)絡(luò )可以提供的最大容量讀取和寫(xiě)入數據,即使內存已滿(mǎn)也是如此。
  2.8 日志和實(shí)時(shí)處理
  你認為周杰倫提供了一種如此漂亮的方法來(lái)復制數據并復制它嗎?
  你!錯!完成!日志是
  流式處理的另一種說(shuō)法,日志是流處理的核心。
  2.8.1 什么是流處理
 ???
  周杰倫哥認為:
  1)流處理是連續數據處理的基礎設施。
  2)流處理的計算模型,如MapReduce或其他分布式處理框架,只需要保證低延遲。
  3)批處理式數據采集模式導致批量式數據處理模式。
  4)連續的數據采集模式,導致連續的數據處理模式。
  5)杰伊哥講解美國人口普查方式解釋批處理。
  在LinkedIn,活動(dòng)數據和數據庫更改都是連續的。
  
  批處理每天處理數據,類(lèi)似于連續計算,將窗口設置為一天。
  因此,流處理是一個(gè)這樣的過(guò)程:
  6)在處理數據時(shí),有時(shí)間的概念,不需要維護數據的靜態(tài)快照,因此結果可以以用戶(hù)定義的頻率輸出,而無(wú)需等待數據集達到某個(gè)“結束”狀態(tài)。
  7)從這個(gè)意義上說(shuō),流處理是批處理的泛化,鑒于實(shí)時(shí)數據的普及,這是一個(gè)極其重要的泛化。
  8)許多商業(yè)公司無(wú)法構建流處理引擎,通常是因為他們無(wú)法構建流數據采集引擎。
  9) 流處理彌合了實(shí)時(shí)響應服務(wù)和離線(xiàn)批處理基礎設施之間的差距。
  10)日志系統,解決了流處理模式下的許多關(guān)鍵問(wèn)題,其中最大的問(wèn)題是如何在實(shí)時(shí)多訂閱者模式下提供可用數據(流數據采集)。
  2.9 數據流圖
  關(guān)于流處理最有趣的事情是它擴展了源的概念。
  無(wú)論是日志、源還是事件,逐行數據記錄都來(lái)自應用程序的活動(dòng)。
  但是,流式處理還允許我們處理來(lái)自其他源的數據,這些數據與提供給消費者的原創(chuàng )數據一樣好,并且這些派生源可以收錄任何級別的復雜性。
  流處理任務(wù)應如下所示:從日志中讀取數據并將輸出寫(xiě)入日志或其他系統。
  作為輸入和輸出日志,進(jìn)程本身和其他進(jìn)程連接起來(lái)形成一個(gè)圖。
  事實(shí)上,以日志為中心的系統允許您從組織捕獲、轉換和流式傳輸數據,作為一系列日志和寫(xiě)入日志處理的組合。
  流處理程序不必很高:它可以是一個(gè)進(jìn)程或一組進(jìn)程,但可以提供一些額外的基礎結構和支持,以便更輕松地管理用于處理的代碼。
  引入日志有兩個(gè)目的:
  1)確保數據集可以支持多個(gè)訂閱者模式并且有序。
  2)可以用作應用程序的緩沖區。這一點(diǎn)很重要,因為在異步數據處理過(guò)程中,如果上游生產(chǎn)者更快地生成數據并且使用者無(wú)法跟上,則要么阻塞該過(guò)程,要么引入緩沖區,要么丟棄數據。
  丟棄數據似乎不是一個(gè)好的選擇,阻塞處理進(jìn)程會(huì )導致處理進(jìn)程在所有數據流的處理圖中卡住.log另一方面是一個(gè)大的、超大的、非常大的緩沖區,它允許重啟處理進(jìn)程,這樣如果一個(gè)進(jìn)程失敗, 它不會(huì )影響流處理圖中的其他進(jìn)程。這對于大型組織擴展數據流至關(guān)重要,因為不同的團隊有不同的處理任務(wù),顯然整個(gè)流處理過(guò)程不會(huì )因為一個(gè)任務(wù)中的錯誤而停滯不前。
  Storm 和 Samza 就是這樣的流處理引擎,它們都可以使用 Kafka 或其他類(lèi)似的系統作為它們的日志系統。
 ?。ㄗⅲ褐芙軅惛绺缤春返?,卡夫卡在前,三輪在后。
  2.10 有狀態(tài)實(shí)時(shí)處理許多流處理
  引擎是無(wú)狀態(tài)的,一次一條記錄,但許多用例需要在一定的時(shí)間窗口內進(jìn)行復雜的計數、聚合和聯(lián)接操作才能進(jìn)行流處理。
  例如,在點(diǎn)擊流中,聯(lián)接用戶(hù)信息。
  然后,此用例需要狀態(tài)支持。在處理數據的地方,需要維護特定數據的狀態(tài)。
  問(wèn)題是,在處理器可能掛斷的情況下,如何保持正確?
  在內存中維護狀態(tài)可能是最簡(jiǎn)單的,但它不會(huì )承受崩潰。
  如果狀態(tài)僅在某個(gè)時(shí)間窗口內保持,則當發(fā)生掛起或故障時(shí),則可以將處理直接重放回窗口的開(kāi)頭,但如果窗口長(cháng)達 1 小時(shí),則可能不起作用。
  另一種簡(jiǎn)單的解決方案是將狀態(tài)存儲在遠程存儲系統或數據庫中,但這會(huì )丟失數據的局部性并產(chǎn)生大量的網(wǎng)絡(luò )往返。
  回想一下上面提到的數據庫中表和日志的雙重性。
  可以使用本地存儲或索引來(lái)維護狀態(tài)的流處理組件:
  通過(guò)記錄有關(guān)本地索引的更改日志,它用于在崩潰后還原狀態(tài)。實(shí)際上,此機制還揭示了一種通用狀態(tài),該狀態(tài)可以存儲為任意索引類(lèi)型,并與輸入流同時(shí)進(jìn)行共分區。
  當處理過(guò)程崩潰時(shí),它可以從更改日志中恢復索引,更改日志充當本地狀態(tài)基于時(shí)間備份的某種增量記錄的轉換器。
  這種機制也提供了一個(gè)非常優(yōu)雅的能力:進(jìn)程本身的狀態(tài)也可以記錄為日志,顯然其他進(jìn)程可以訂閱這個(gè)狀態(tài)。
  結合數據庫中的日志技術(shù),對于數據集成的場(chǎng)景,你經(jīng)??梢宰龇浅姶蟮氖虑椋?br />   通過(guò)從數據庫中提取日志并在各種流處理系統中為它們編制索引,可以聯(lián)接不同的事件流。
  2.11 日志合并
  顯然,不可能使用日志來(lái)記錄全職和全職狀態(tài)變化信息。
  Kafka 使用日志合并或日志垃圾回收技術(shù):
  1) 對于事件數據,Kafka 只保留一個(gè)時(shí)間窗口(可按時(shí)間配置為天或按空間配置)。
  2)對于鍵控更新,Kafka使用壓縮技術(shù)。這種類(lèi)型的日志可用于通過(guò)另一個(gè)系統中的重放技術(shù)重建源系統的狀態(tài)。
  如果全時(shí)保存日志,隨著(zhù)時(shí)間的推移,數據會(huì )越來(lái)越大,重放過(guò)程也會(huì )越來(lái)越長(cháng)。
  Kafka 不是簡(jiǎn)單地丟棄舊的日志信息,而是使用合并方法來(lái)丟棄過(guò)時(shí)的記錄,例如消息的主鍵最近是否更新。
  2.12 系統構建
  2.12.1 分布式系統
  日志,在數據流系統和分布式數據庫的數據集成中所扮演的角色是相同的:
  您可以將組織中的應用程序和數據流視為單個(gè)分布式數據庫。
  將面向查詢(xún)的獨立系統(如 Redis、SOLR、Hive 表等)視為特殊的數據頂級索引。
  將 Storm 和 Samza 等流處理系統視為精心設計的觸發(fā)器或物化視圖機制。
  各種數據系統,爆發(fā)式涌現,其實(shí)這種復雜性早已存在。在關(guān)系數據庫
  的鼎盛時(shí)期,公司或組織的光學(xué)關(guān)系數據庫有很多種。顯然,不可能
  把所有東西都扔到Hadoop集群中,并期望它能解決所有問(wèn)題。那么,如何構建一個(gè)好的系統,可能是這樣的:
  要構建一個(gè)分布式系統,每個(gè)組件都是一個(gè)小集群,每個(gè)集群可能無(wú)法提供完整的安全性、性能隔離或良好的可擴展性,但每個(gè)問(wèn)題都可以(專(zhuān)業(yè)地)解決。
  Jay認為,各種系統之所以爆炸式增長(cháng),是因為構建一個(gè)強大的分布式系統非常困難。如果將用例限制為查詢(xún)等簡(jiǎn)單場(chǎng)景,則每個(gè)系統都有足夠的能力來(lái)解決問(wèn)題,但很難集成這些系統。
  杰伊弟兄認為,未來(lái)構建系統有三種可能:
  1)維持現狀。在這種情況下,數據集成仍然是最大的問(wèn)題,因此外部日志系統很重要(kafka?。?br />   2)一個(gè)強大的(關(guān)系數據庫,如輝煌的日子)系統似乎不太可能解決所有問(wèn)題。
  3)新一代系統大多是開(kāi)源的,這揭示了第三種可能:數據基礎設施可以離散化為一組服務(wù),以及面向應用的系統API,每個(gè)都不完整,但可以專(zhuān)業(yè)解決專(zhuān)門(mén)的問(wèn)題,其實(shí)現有的Java技術(shù)??梢?jiàn)一斑:
  從某個(gè)
  從這個(gè)角度來(lái)看,構建這樣的分布式系統就像某個(gè)版本的樂(lè )高。這顯然與更關(guān)心 API 的最終用戶(hù)沒(méi)有太大關(guān)系,但它揭示了構建健壯系統并保持簡(jiǎn)單性的途徑:
  顯然,如果構建分布式系統的時(shí)間從幾年下降到幾周,構建大型獨立系統的復雜性就會(huì )消失,而這肯定是因為出現了更可靠和靈活的“構建塊”。
  2.12.2 登錄在系統建設中的作用
  如果系統受外部日志系統支持,
  那么每個(gè)獨立的系統都可以通過(guò)共享一個(gè)日志來(lái)降低自身的復雜性,Jay Ge認為日志的作用是:
  1)處理數據一致性問(wèn)題??梢酝ㄟ^(guò)序列化節點(diǎn)上的并發(fā)操作來(lái)實(shí)現即時(shí)和最終一致性。
  2) 提供節點(diǎn)間的數據復制。
  3)提供“提交”的語(yǔ)義。例如,如果您認為寫(xiě)入操作不會(huì )丟失,則為操作確認。
  4) 提供外部系統可以訂閱的源。
  5) 提供在節點(diǎn)因故障而丟失數據時(shí)恢復或重建新復制節點(diǎn)的功能。
  6) 處理節點(diǎn)之間的負載均衡。
  以上可能是完整分布式系統中應該提供的大多數功能(Jay 確實(shí)喜歡 Log!剩下的就是客戶(hù)端 API,構建索引等內容(如全文索引)需要獲取所有分區,而針對主鍵的查詢(xún)只需要提取分區中的數據。
 ?。鞘O碌木驼疹櫤昧?,周杰倫哥哥!
  該系統可以分為兩個(gè)邏輯組件(這種強大的理解和力量):
  1) 日志層
  2) 服務(wù)層
  日志層以序列化和有序的方式捕獲狀態(tài)更改,而服務(wù)層存儲外部查詢(xún)所需的索引,例如,K-V 存儲可能需要 B 樹(shù)和穩定索引,而搜索服務(wù)需要倒排索引。
  寫(xiě)入操作可以直接輸入到日志層中,也可以通過(guò)服務(wù)層代理。寫(xiě)入日志會(huì )產(chǎn)生邏輯時(shí)間戳(日志索引),例如數字 ID,如果系統已分區,則服務(wù)層和日志層將具有相同的分區(但它們各自的機器編號可能不同)。
  服務(wù)層訂閱日志層,并在以
  最快的速度順序存儲日志,并將數據和狀態(tài)變化同步到自己的本地索引中。
  客戶(hù)端將獲得讀寫(xiě)語(yǔ)義:
  通過(guò)攜帶寫(xiě)入任一節點(diǎn)(服務(wù)節點(diǎn))的時(shí)間時(shí)間戳Layer 接收此查詢(xún),將時(shí)間戳
  與其本地索引進(jìn)行比較,如有必要,為了防止返回過(guò)期的舊數據,請推遲請求的執行,直到此服務(wù)節點(diǎn)的索引同步跟上時(shí)間戳。
  服務(wù)層中的節點(diǎn)可能需要也可能不需要知道領(lǐng)導者的概念。在許多簡(jiǎn)單的用例中,服務(wù)層無(wú)法構建領(lǐng)導節點(diǎn),因為日志是事實(shí)的來(lái)源。
  還有一個(gè)問(wèn)題是如何處理節點(diǎn)故障后的恢復。這可以通過(guò)在日志中保留固定大小的時(shí)間窗口同時(shí)維護數據的快照來(lái)完成。您還可以讓 Log 保留數據的完整備份,并使用日志合并技術(shù)完成 Log 本身的垃圾回收。這種方法將服務(wù)層的大部分復雜性轉移到日志層,因為服務(wù)層是特定于系統的,并且日志層可以是通用的。
  基于日志系統,可以提供一套完整的API供開(kāi)發(fā)和使用,可以作為其他系統的ETL數據源,供其他系統訂閱。
  全棧 ! :
  顯然,以日志為核心的分布式系統立即成為可以為其他系統提供數據加載支持和數據流處理的角色。同樣,流處理系統可以同時(shí)使用多個(gè)數據流,并通過(guò)索引這些數據流然后輸出它們來(lái)向外部世界提供服務(wù)。系統基于
  日志層和服務(wù)層構建,使查詢(xún)相關(guān)因素與系統的可用性和一致性脫鉤。
  也許很多人認為在日志中維護數據的單獨備份,尤其是制作數據的完整副本,太浪費和奢侈,但事實(shí)并非如此:
  1)LinkedIn的Kafka生產(chǎn)集群每個(gè)數據中心維護75TB的數據,應用集群比Kafka集群需要更高的存儲空間和存儲條件(SSD+更多內存)。
  2)全文搜索索引最好全部加載到內存中,日志可以便宜使用,大容量磁盤(pán)因為它們是線(xiàn)性讀寫(xiě)的。
  3) 由于 Kafka 集群實(shí)際上以多訂閱者模型運行,多個(gè)系統使用數據,因此日志集群的開(kāi)銷(xiāo)被攤銷(xiāo)。
  4)由于所有這些原因,外部日志系統(kafka或類(lèi)似系統)的開(kāi)銷(xiāo)變得非常小。
  2.13 結論
  最后,周杰倫哥不僅大方地留下了大量有價(jià)值的學(xué)術(shù)和工程論文和參考鏈接,還虛心留下了這樣一句話(huà):
  如果你做到了這一步,你就知道我對日志的大部分了解。
  認為這篇文章對您有幫助嗎?請與更多人分享
  關(guān)注“進(jìn)口新品”查看技術(shù)干貨
  解決方案:網(wǎng)站優(yōu)化排名軟件有哪些,seo優(yōu)化必備的5種工具
  2019年哪些工具可以輔助SEO網(wǎng)站優(yōu)化?
  很多公司在做優(yōu)化的時(shí)候都想知道有哪些工具可以輔助優(yōu)化?這是每個(gè)seo都會(huì )遇到的問(wèn)題。哪些工具可以輔助優(yōu)化?網(wǎng)站 可以排名更好嗎?哪些工具可以經(jīng)常使用 什么?下面小編就為大家詳細講解一下。
  推薦幾款專(zhuān)業(yè)的SEO網(wǎng)站優(yōu)化工具?
  SEO工具是搜索引擎優(yōu)化的各種工具,如查詢(xún)工具、排名工具、流量分析軟件、站群軟件等,善用各種工具可以節省大量時(shí)間,讓SEO服務(wù)更輕松.
  1.站長(cháng)平臺
  
  1:百度站長(cháng)平臺:百度站長(cháng)工具提供Sitemap提交、死鏈接提交、網(wǎng)站安全檢測、URL優(yōu)化建議、百度索引查詢(xún)等功能。
  2:搜狗站長(cháng)平臺:搜狗站長(cháng)工具提供Sitemap提交、匹配網(wǎng)站logo、域名更改、爬蟲(chóng)壓力反饋、死鏈接提交、URL提交、收錄索引量和關(guān)鍵詞排名查詢(xún)等功能。
  3:360站長(cháng)平臺:360站長(cháng)平臺提供與上述兩個(gè)站長(cháng)平臺幾乎相同的功能,主要包括:數據提交、網(wǎng)站數據分析、網(wǎng)站保護和網(wǎng)站安全檢測和其他功能。
  2.SEO綜合查詢(xún)工具
  1:愛(ài)站:一個(gè)非常好用的SEO網(wǎng)站優(yōu)化綜合查詢(xún)工具,可用于查詢(xún)百度權重、親情鏈接、百度索引量、備案信息、關(guān)鍵詞挖掘等信息。
  2:站長(cháng)工具:站長(cháng)工具的功能和愛(ài)站差不多。這里值得一提的是,使用站長(cháng)工具和愛(ài)站工具查詢(xún)數據的結果有些不同。這是因為兩個(gè)工具的數據計算不同是正?,F象。
  3:5118:5118是SEO網(wǎng)站優(yōu)化師的必備工具,也是挖掘長(cháng)尾詞的最佳工具。通過(guò)此,您可以了解SEO數據的實(shí)時(shí)變化和關(guān)鍵詞排名的具體趨勢變化,指導關(guān)鍵詞的建設。
  拼多多的運營(yíng)工具有哪些(揭秘拼多多營(yíng)銷(xiāo)工具攻略)
  
  免費推廣工具有哪些(推廣工具內部情況綜合分析)
  有哪些網(wǎng)絡(luò )推廣軟件(好用工具分享)
  微信推廣軟件有哪些(微信推廣3款工具解析)
  常用的ui設計工具有哪些(最好用的7款ui設計工具)
  公眾號文章排版工具有哪些(最實(shí)用的3款排版工具)
  【本文標題及網(wǎng)址,轉載請注明出處】網(wǎng)站優(yōu)化排名軟件有哪些,SEO優(yōu)化必備的5個(gè)工具
  內容更新時(shí)間(UpDate):2022年11月18日星期五

解決方案:opencart選項庫存,magento2操作培訓

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-11-17 17:53 ? 來(lái)自相關(guān)話(huà)題

  解決方案:opencart選項庫存,magento2操作培訓
  Magento 模板:
  Magento 模板有很多,包括付費和免費,這里有幾個(gè)免費模板:F2、TitanyShop Katie、VES Dream、HandyStore、VESBAKEROP、Ebajes、HelloWired 等。
  Magento 功能
  
  1、強大的產(chǎn)品屬性組合。它可以支持任何類(lèi)型的產(chǎn)品,無(wú)論你是賣(mài)服裝、電器還是家具,Magento都可以完美支持產(chǎn)品的所有屬性,并且可以靈活修改和管理。
  2. 購物車(chē)價(jià)格規則。完整的邏輯關(guān)系處理,可以創(chuàng )建任意的優(yōu)惠方式,讓您輕松制定促銷(xiāo)方案。
  3.靈活的模板系統。允許您一鍵切換模板。動(dòng)動(dòng)手指即可更改所有 網(wǎng)站 頁(yè)面的樣式,包括電子郵件營(yíng)銷(xiāo)樣式。
  4.多店系統。它允許您配置多個(gè)在線(xiàn)商店和多個(gè)域名,但使用統一的管理控制臺來(lái)節省您的管理時(shí)間和成本。
  
  5.完善的插件系統??梢造`活地為系統增減功能。無(wú)需修改現有代碼,只需安裝相應功能的插件即可實(shí)現。大大降低了新功能復雜的開(kāi)發(fā)成本。
  6.安全加密。Magento支持前后臺數據SSL加密傳輸,支持后臺權限分級控制,確保您的數據安全。
  7. 企業(yè)應用集成。Magento 的WebService 開(kāi)放API 系統可以與您企業(yè)的其他系統無(wú)縫集成。無(wú)論是ERP還是CRM,Magento都能保證數據的同步性和準確性,最大限度地提高您企業(yè)應用的效率。
  通用解決方案:sdk
  前言
  埋點(diǎn)一般可以分為客戶(hù)端埋點(diǎn)和后端埋點(diǎn)。因為客戶(hù)端埋點(diǎn)更貼近業(yè)務(wù),更直觀(guān),所以稱(chēng)為市面上主流的數據采集方式。對于iOS端的埋點(diǎn),目前市面上主流的代碼埋點(diǎn)和全埋點(diǎn)兩種方案。其中,代碼嵌入點(diǎn)是顯式調用數據采集SDK提供的接口給采集數據,在采集能力上有比較大的優(yōu)勢,但需要額外開(kāi)發(fā)和易用性相對欠缺;全埋點(diǎn)無(wú)需額外編寫(xiě)代碼,使用方便快捷,但采集能力不足,兼容性問(wèn)題較多。兩種方案并無(wú)優(yōu)劣之分,各有各的適用場(chǎng)景。根據市場(chǎng)需求,強烈推薦兩種方案綜合使用。
  數據分析的一般流程是:
  ![image-243141](/Users/renwei/Library/Application Support/typora-user-images/image-243141.png)
  因此,數據采集是分析和運行的基本來(lái)源。
  一、數據采集SDK簡(jiǎn)介
  Data采集 SDK一般需要收錄兩個(gè)基本功能:
  1. 通過(guò)埋點(diǎn)采集采集數據
  2. 將 采集 數據傳輸到指定的服務(wù)器。
  
  主流的埋葬方式包括三種:
  1. 代碼嵌入:應用集成嵌入SDK后,在程序啟動(dòng)時(shí)初始化嵌入SDK,然后在觸發(fā)事件時(shí)調用嵌入SDK提供的方法觸發(fā)事件。
  2. 全埋點(diǎn):無(wú)需編寫(xiě)應用程序或僅需編寫(xiě)少量代碼,即可預先自動(dòng)采集大部分用戶(hù)行為數據,然后根據實(shí)際業(yè)務(wù)分析需求篩選出需要的數據進(jìn)行分析。
  3. 可視化埋點(diǎn):在產(chǎn)品界面中以可視化的方式進(jìn)行篩選,形成可視化的全埋點(diǎn)事件。
  2.搭建SDK框架
  1. 創(chuàng )建 Cocoa Touch 框架
  第一步:?jiǎn)?dòng)X(jué)code創(chuàng )建項目,雙擊Framework &amp; library欄下的Framework項。
  ![image-208466](/Users/renwei/Library/Application Support/typora-user-images/image-208466.png)
  第二步:填寫(xiě)Product Name相關(guān)信息,然后點(diǎn)擊Next按鈕,選擇SensorsSDK Project的存放位置,點(diǎn)擊Create按鈕,Xcode會(huì )打開(kāi)創(chuàng )建好的項目。
  
  ![image-208847](/Users/renwei/Library/Application Support/typora-user-images/image-208847.png)
  2.新工作區
  第一步:依次點(diǎn)擊File -&gt; New -&gt; Workspace(或者使用快捷鍵Control + Command -&gt; N),會(huì )出現如下彈框,將Workspace名稱(chēng)填寫(xiě)為SensorsSDK,點(diǎn)擊保存即可SensorsSDK 項目的根目錄。然后單擊保存按鈕,Xcode 將打開(kāi) SensorsSDK 工作區窗口。
  ![image-216510](/Users/renwei/Library/Application Support/typora-user-images/image-216510.png)
  第二步:在當前的Sensors Workspace窗口中,將SensorsSDK Project添加到SensorsSDK Workspace中。(在 SensorsSDK 工作區窗口中單擊文件 -&gt; 將文件添加到“SensorsSDK”,或使用 Option + Command + A 快捷方式)。
  ![image-239059](/Users/renwei/Library/Application Support/typora-user-images/image-239059.png)
  此時(shí)SensorsSDK Workspace的目錄結構如圖:
  ![image-227277](/Users/renwei/Library/Application Support/typora-user-images/image-227277.png)
  3.新建一個(gè)demo工程 查看全部

  解決方案:opencart選項庫存,magento2操作培訓
  Magento 模板:
  Magento 模板有很多,包括付費和免費,這里有幾個(gè)免費模板:F2、TitanyShop Katie、VES Dream、HandyStore、VESBAKEROP、Ebajes、HelloWired 等。
  Magento 功能
  
  1、強大的產(chǎn)品屬性組合。它可以支持任何類(lèi)型的產(chǎn)品,無(wú)論你是賣(mài)服裝、電器還是家具,Magento都可以完美支持產(chǎn)品的所有屬性,并且可以靈活修改和管理。
  2. 購物車(chē)價(jià)格規則。完整的邏輯關(guān)系處理,可以創(chuàng )建任意的優(yōu)惠方式,讓您輕松制定促銷(xiāo)方案。
  3.靈活的模板系統。允許您一鍵切換模板。動(dòng)動(dòng)手指即可更改所有 網(wǎng)站 頁(yè)面的樣式,包括電子郵件營(yíng)銷(xiāo)樣式。
  4.多店系統。它允許您配置多個(gè)在線(xiàn)商店和多個(gè)域名,但使用統一的管理控制臺來(lái)節省您的管理時(shí)間和成本。
  
  5.完善的插件系統??梢造`活地為系統增減功能。無(wú)需修改現有代碼,只需安裝相應功能的插件即可實(shí)現。大大降低了新功能復雜的開(kāi)發(fā)成本。
  6.安全加密。Magento支持前后臺數據SSL加密傳輸,支持后臺權限分級控制,確保您的數據安全。
  7. 企業(yè)應用集成。Magento 的WebService 開(kāi)放API 系統可以與您企業(yè)的其他系統無(wú)縫集成。無(wú)論是ERP還是CRM,Magento都能保證數據的同步性和準確性,最大限度地提高您企業(yè)應用的效率。
  通用解決方案:sdk
  前言
  埋點(diǎn)一般可以分為客戶(hù)端埋點(diǎn)和后端埋點(diǎn)。因為客戶(hù)端埋點(diǎn)更貼近業(yè)務(wù),更直觀(guān),所以稱(chēng)為市面上主流的數據采集方式。對于iOS端的埋點(diǎn),目前市面上主流的代碼埋點(diǎn)和全埋點(diǎn)兩種方案。其中,代碼嵌入點(diǎn)是顯式調用數據采集SDK提供的接口給采集數據,在采集能力上有比較大的優(yōu)勢,但需要額外開(kāi)發(fā)和易用性相對欠缺;全埋點(diǎn)無(wú)需額外編寫(xiě)代碼,使用方便快捷,但采集能力不足,兼容性問(wèn)題較多。兩種方案并無(wú)優(yōu)劣之分,各有各的適用場(chǎng)景。根據市場(chǎng)需求,強烈推薦兩種方案綜合使用。
  數據分析的一般流程是:
  ![image-243141](/Users/renwei/Library/Application Support/typora-user-images/image-243141.png)
  因此,數據采集是分析和運行的基本來(lái)源。
  一、數據采集SDK簡(jiǎn)介
  Data采集 SDK一般需要收錄兩個(gè)基本功能:
  1. 通過(guò)埋點(diǎn)采集采集數據
  2. 將 采集 數據傳輸到指定的服務(wù)器。
  
  主流的埋葬方式包括三種:
  1. 代碼嵌入:應用集成嵌入SDK后,在程序啟動(dòng)時(shí)初始化嵌入SDK,然后在觸發(fā)事件時(shí)調用嵌入SDK提供的方法觸發(fā)事件。
  2. 全埋點(diǎn):無(wú)需編寫(xiě)應用程序或僅需編寫(xiě)少量代碼,即可預先自動(dòng)采集大部分用戶(hù)行為數據,然后根據實(shí)際業(yè)務(wù)分析需求篩選出需要的數據進(jìn)行分析。
  3. 可視化埋點(diǎn):在產(chǎn)品界面中以可視化的方式進(jìn)行篩選,形成可視化的全埋點(diǎn)事件。
  2.搭建SDK框架
  1. 創(chuàng )建 Cocoa Touch 框架
  第一步:?jiǎn)?dòng)X(jué)code創(chuàng )建項目,雙擊Framework &amp; library欄下的Framework項。
  ![image-208466](/Users/renwei/Library/Application Support/typora-user-images/image-208466.png)
  第二步:填寫(xiě)Product Name相關(guān)信息,然后點(diǎn)擊Next按鈕,選擇SensorsSDK Project的存放位置,點(diǎn)擊Create按鈕,Xcode會(huì )打開(kāi)創(chuàng )建好的項目。
  
  ![image-208847](/Users/renwei/Library/Application Support/typora-user-images/image-208847.png)
  2.新工作區
  第一步:依次點(diǎn)擊File -&gt; New -&gt; Workspace(或者使用快捷鍵Control + Command -&gt; N),會(huì )出現如下彈框,將Workspace名稱(chēng)填寫(xiě)為SensorsSDK,點(diǎn)擊保存即可SensorsSDK 項目的根目錄。然后單擊保存按鈕,Xcode 將打開(kāi) SensorsSDK 工作區窗口。
  ![image-216510](/Users/renwei/Library/Application Support/typora-user-images/image-216510.png)
  第二步:在當前的Sensors Workspace窗口中,將SensorsSDK Project添加到SensorsSDK Workspace中。(在 SensorsSDK 工作區窗口中單擊文件 -&gt; 將文件添加到“SensorsSDK”,或使用 Option + Command + A 快捷方式)。
  ![image-239059](/Users/renwei/Library/Application Support/typora-user-images/image-239059.png)
  此時(shí)SensorsSDK Workspace的目錄結構如圖:
  ![image-227277](/Users/renwei/Library/Application Support/typora-user-images/image-227277.png)
  3.新建一個(gè)demo工程

解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 93 次瀏覽 ? 2022-11-17 15:43 ? 來(lái)自相關(guān)話(huà)題

  解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具
  文章首發(fā)于微信公眾號“GitHub黑板報”,歡迎大家關(guān)注。打開(kāi)微信,使用“搜索”,搜索“GitHub Blackboard News”,即可關(guān)注。
  大家好,我是章魚(yú)貓。
  
  我們每天都有大量的靜態(tài)數據,格式種類(lèi)繁多,excel、csv、json、sqlite等,如果數據量不大,用默認的軟件打開(kāi)是沒(méi)有問(wèn)題的。但是只要數據量稍大一些,比如excel中幾萬(wàn)條數據,用軟件打開(kāi)就會(huì )很慢,尤其是有時(shí)候需要做一些復雜的查詢(xún)操作。還有一個(gè)不方便的地方就是,如果你想把這些靜態(tài)數據開(kāi)放給他人,或者自己開(kāi)發(fā)一個(gè)前端展示網(wǎng)頁(yè),你需要為這些數據提供一個(gè)暴露的API。單獨開(kāi)發(fā)費時(shí)費力。
  今天要推薦的一個(gè)工具roapi,可以快速為靜態(tài)數據生成可讀性強的開(kāi)放API。其中,API查詢(xún)形式支持多種類(lèi)型,如rest API、SQL查詢(xún)、GraphQL等。下圖是工具roapi的整體交互流程圖。
  roapi工具主要分為四個(gè)部分,分別是查詢(xún)層、查詢(xún)計劃執行層、數據層和數據返回層。大致過(guò)程是前端查詢(xún)層會(huì )通過(guò)不同的查詢(xún)方式在查詢(xún)計劃執行層生成不同的執行計劃,最終對數據執行查詢(xún)。將不同的數據格式統一抽象成單獨的數據抽象層,以屏蔽不同數據格式的差異。
  
  使用 pip install roapi-http 安裝并開(kāi)始使用。下圖是具體的使用方法,可以說(shuō)是非常簡(jiǎn)單方便了。
  有關(guān)更多項目詳細信息,請參閱下面的鏈接。
  開(kāi)源項目地址:
  事實(shí):帆軟填報增加記錄提交成功后沒(méi)有_報表工具不可或缺的數據填報功能
  【概括】
  在實(shí)際業(yè)務(wù)場(chǎng)景中,報表工具不僅僅是用來(lái)展示數據,還可以滿(mǎn)足用戶(hù)各種數據填寫(xiě)需求。潤干報表工具的數據填寫(xiě)功能更加強大:
  1.不僅支持演示,還支持數據錄入。
  2.數據錄入可獨立來(lái)去,來(lái)去自如。
  3、網(wǎng)頁(yè)錄入可實(shí)現數據合法性校驗和自動(dòng)計算。
  4.結合集算器,可錄入任何數據源。
  去甘學(xué)院了解一下:報表工具不可或缺的數據填充功能
  復制摘要
  BI軟件市場(chǎng)越來(lái)越熱鬧,但這也給軟件用戶(hù)帶來(lái)了“選擇恐懼癥”。在看似功能相似的情況下,用戶(hù)會(huì )把目光轉向哪個(gè)軟件更酷、更方便、更容易上手。但其實(shí)BI系統中需要的實(shí)用功能還是有很多的,就像本文介紹的數據錄入一樣,即使不在BI常規意義上的分析和呈現的范圍內,也是一個(gè)在業(yè)務(wù)流程中的重要初始環(huán)節,如果錄入人員能夠按照格式清晰、含義明確的形式進(jìn)行錄入,將對數據的有效性和完整性有很大的幫助。
  既然報表是表格,而表格是可以填寫(xiě)的,那么用戶(hù)自然希望報表能夠支持填寫(xiě)。使用報表填寫(xiě)和輸入各種業(yè)務(wù)數據。例如通過(guò)銷(xiāo)售合同表錄入新合同,通過(guò)員工信息表錄入新員工信息。操作自然,意思清楚。是掙錢(qián)養家、居家旅游必備的功能。但是很多BI類(lèi)的報表工具是不支持填表的,處理需要填表或者修改的表格非常麻煩。
  現在好了,用了潤干的報表再也不用擔心了,除了高端的大屏顯示功能,炫酷的統計圖表,移動(dòng)端隨時(shí)隨地查看報表,秒出大報表,導出打印一口氣等等等等,潤干報表還有一個(gè)強大的功能:數據填寫(xiě)。
  數據填寫(xiě)功能的載體稱(chēng)為填寫(xiě)表格。潤干填表可以滿(mǎn)足各種填表需求,無(wú)論標準還是復雜,設計過(guò)程簡(jiǎn)單高效。
  
  1.數據呈現和錄入的多樣性以網(wǎng)格格式填寫(xiě)報告
  這種表格填寫(xiě)類(lèi)似于紙質(zhì)注冊過(guò)程。數據記錄以列表的形式垂直列出。一條記錄是一行。
  · 基于行的表單填寫(xiě)
  在報表應用中,有時(shí)不僅僅是修改數據或在空白處輸入數據。很多時(shí)候,我們可能還需要在顯示的數據中插入新數據和刪除數據。這時(shí)候,基于行的報表填充是最好的選擇。
  在潤千報表中,添加行、插入行、刪除行可以一次完成。
  · 填寫(xiě)自由格式
  以上兩種報表顯示時(shí),會(huì )同時(shí)顯示多條用戶(hù)數據,在某些情況下是不合理或不方便的。尤其是為了數據含義的直觀(guān)性和頁(yè)面的美觀(guān)性,需要將一條記錄設計成多行多列的形式。這種填表稱(chēng)為自由填表。
  同時(shí),您還可以在填寫(xiě)報表時(shí)使用參數模板查詢(xún)定位具體數據。
  · 多源報表填寫(xiě)
  在實(shí)際應用中,經(jīng)常會(huì )出現填寫(xiě)報表的一條數據需要同時(shí)保存在多個(gè)物理表中,并且需要多個(gè)表之間的數據庫事務(wù)一致性。這種報表填寫(xiě)稱(chēng)為多源報表填寫(xiě)。
  比較常見(jiàn)的多源報表是主子報表,通過(guò)它把用戶(hù)輸入的數據同時(shí)存儲在多個(gè)物理表中。傳統報表工具遇到這種報表填報,因為要保證一致性,只能通過(guò)編程來(lái)實(shí)現。而在潤錢(qián)報表中,使用潤錢(qián)報表的填充模型,無(wú)需編程即可輕松實(shí)現。
  
  比如下面的主分表,上層數據來(lái)自訂單表,下層數據來(lái)自訂單明細表,填寫(xiě)后一起提交更新到對應的數據表。
  · 填表組
  在很多業(yè)務(wù)系統中,還需要同時(shí)編輯多個(gè)報表,然后批量提交到數據庫,或者批量導入/導出excel等等。這種多表同時(shí)填表的功能稱(chēng)為一個(gè)填表組,例如:
  訂單:
  訂單詳細信息:
  2.數據處理
  在潤干填表的數據處理部分,數據源和數據去向分別配置,很容易實(shí)現數據來(lái)來(lái)去去的自由和無(wú)關(guān)性,從而支持以下甚至更多的使用場(chǎng)景:
  3、填表智能設置及數據合法性校驗
  為了保證信息準確地存入數據庫,填寫(xiě)報表往往需要在進(jìn)入客戶(hù)端頁(yè)面時(shí)進(jìn)行合法性檢查,比如檢查輸入的是否為數字,是否符合規定的格式或數據范圍,等等。這可以通過(guò)設置單元格驗證屬性和編輯驗證表達式來(lái)驗證。
  比如工資填寫(xiě)表(H3)要求填寫(xiě)的數據在3000到10000之間,那么可以設置單元格的校驗表達式為:H3&gt;=3000&amp;&amp; H3 查看全部

  解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具
  文章首發(fā)于微信公眾號“GitHub黑板報”,歡迎大家關(guān)注。打開(kāi)微信,使用“搜索”,搜索“GitHub Blackboard News”,即可關(guān)注。
  大家好,我是章魚(yú)貓。
  
  我們每天都有大量的靜態(tài)數據,格式種類(lèi)繁多,excel、csv、json、sqlite等,如果數據量不大,用默認的軟件打開(kāi)是沒(méi)有問(wèn)題的。但是只要數據量稍大一些,比如excel中幾萬(wàn)條數據,用軟件打開(kāi)就會(huì )很慢,尤其是有時(shí)候需要做一些復雜的查詢(xún)操作。還有一個(gè)不方便的地方就是,如果你想把這些靜態(tài)數據開(kāi)放給他人,或者自己開(kāi)發(fā)一個(gè)前端展示網(wǎng)頁(yè),你需要為這些數據提供一個(gè)暴露的API。單獨開(kāi)發(fā)費時(shí)費力。
  今天要推薦的一個(gè)工具roapi,可以快速為靜態(tài)數據生成可讀性強的開(kāi)放API。其中,API查詢(xún)形式支持多種類(lèi)型,如rest API、SQL查詢(xún)、GraphQL等。下圖是工具roapi的整體交互流程圖。
  roapi工具主要分為四個(gè)部分,分別是查詢(xún)層、查詢(xún)計劃執行層、數據層和數據返回層。大致過(guò)程是前端查詢(xún)層會(huì )通過(guò)不同的查詢(xún)方式在查詢(xún)計劃執行層生成不同的執行計劃,最終對數據執行查詢(xún)。將不同的數據格式統一抽象成單獨的數據抽象層,以屏蔽不同數據格式的差異。
  
  使用 pip install roapi-http 安裝并開(kāi)始使用。下圖是具體的使用方法,可以說(shuō)是非常簡(jiǎn)單方便了。
  有關(guān)更多項目詳細信息,請參閱下面的鏈接。
  開(kāi)源項目地址:
  事實(shí):帆軟填報增加記錄提交成功后沒(méi)有_報表工具不可或缺的數據填報功能
  【概括】
  在實(shí)際業(yè)務(wù)場(chǎng)景中,報表工具不僅僅是用來(lái)展示數據,還可以滿(mǎn)足用戶(hù)各種數據填寫(xiě)需求。潤干報表工具的數據填寫(xiě)功能更加強大:
  1.不僅支持演示,還支持數據錄入。
  2.數據錄入可獨立來(lái)去,來(lái)去自如。
  3、網(wǎng)頁(yè)錄入可實(shí)現數據合法性校驗和自動(dòng)計算。
  4.結合集算器,可錄入任何數據源。
  去甘學(xué)院了解一下:報表工具不可或缺的數據填充功能
  復制摘要
  BI軟件市場(chǎng)越來(lái)越熱鬧,但這也給軟件用戶(hù)帶來(lái)了“選擇恐懼癥”。在看似功能相似的情況下,用戶(hù)會(huì )把目光轉向哪個(gè)軟件更酷、更方便、更容易上手。但其實(shí)BI系統中需要的實(shí)用功能還是有很多的,就像本文介紹的數據錄入一樣,即使不在BI常規意義上的分析和呈現的范圍內,也是一個(gè)在業(yè)務(wù)流程中的重要初始環(huán)節,如果錄入人員能夠按照格式清晰、含義明確的形式進(jìn)行錄入,將對數據的有效性和完整性有很大的幫助。
  既然報表是表格,而表格是可以填寫(xiě)的,那么用戶(hù)自然希望報表能夠支持填寫(xiě)。使用報表填寫(xiě)和輸入各種業(yè)務(wù)數據。例如通過(guò)銷(xiāo)售合同表錄入新合同,通過(guò)員工信息表錄入新員工信息。操作自然,意思清楚。是掙錢(qián)養家、居家旅游必備的功能。但是很多BI類(lèi)的報表工具是不支持填表的,處理需要填表或者修改的表格非常麻煩。
  現在好了,用了潤干的報表再也不用擔心了,除了高端的大屏顯示功能,炫酷的統計圖表,移動(dòng)端隨時(shí)隨地查看報表,秒出大報表,導出打印一口氣等等等等,潤干報表還有一個(gè)強大的功能:數據填寫(xiě)。
  數據填寫(xiě)功能的載體稱(chēng)為填寫(xiě)表格。潤干填表可以滿(mǎn)足各種填表需求,無(wú)論標準還是復雜,設計過(guò)程簡(jiǎn)單高效。
  
  1.數據呈現和錄入的多樣性以網(wǎng)格格式填寫(xiě)報告
  這種表格填寫(xiě)類(lèi)似于紙質(zhì)注冊過(guò)程。數據記錄以列表的形式垂直列出。一條記錄是一行。
  · 基于行的表單填寫(xiě)
  在報表應用中,有時(shí)不僅僅是修改數據或在空白處輸入數據。很多時(shí)候,我們可能還需要在顯示的數據中插入新數據和刪除數據。這時(shí)候,基于行的報表填充是最好的選擇。
  在潤千報表中,添加行、插入行、刪除行可以一次完成。
  · 填寫(xiě)自由格式
  以上兩種報表顯示時(shí),會(huì )同時(shí)顯示多條用戶(hù)數據,在某些情況下是不合理或不方便的。尤其是為了數據含義的直觀(guān)性和頁(yè)面的美觀(guān)性,需要將一條記錄設計成多行多列的形式。這種填表稱(chēng)為自由填表。
  同時(shí),您還可以在填寫(xiě)報表時(shí)使用參數模板查詢(xún)定位具體數據。
  · 多源報表填寫(xiě)
  在實(shí)際應用中,經(jīng)常會(huì )出現填寫(xiě)報表的一條數據需要同時(shí)保存在多個(gè)物理表中,并且需要多個(gè)表之間的數據庫事務(wù)一致性。這種報表填寫(xiě)稱(chēng)為多源報表填寫(xiě)。
  比較常見(jiàn)的多源報表是主子報表,通過(guò)它把用戶(hù)輸入的數據同時(shí)存儲在多個(gè)物理表中。傳統報表工具遇到這種報表填報,因為要保證一致性,只能通過(guò)編程來(lái)實(shí)現。而在潤錢(qián)報表中,使用潤錢(qián)報表的填充模型,無(wú)需編程即可輕松實(shí)現。
  
  比如下面的主分表,上層數據來(lái)自訂單表,下層數據來(lái)自訂單明細表,填寫(xiě)后一起提交更新到對應的數據表。
  · 填表組
  在很多業(yè)務(wù)系統中,還需要同時(shí)編輯多個(gè)報表,然后批量提交到數據庫,或者批量導入/導出excel等等。這種多表同時(shí)填表的功能稱(chēng)為一個(gè)填表組,例如:
  訂單:
  訂單詳細信息:
  2.數據處理
  在潤干填表的數據處理部分,數據源和數據去向分別配置,很容易實(shí)現數據來(lái)來(lái)去去的自由和無(wú)關(guān)性,從而支持以下甚至更多的使用場(chǎng)景:
  3、填表智能設置及數據合法性校驗
  為了保證信息準確地存入數據庫,填寫(xiě)報表往往需要在進(jìn)入客戶(hù)端頁(yè)面時(shí)進(jìn)行合法性檢查,比如檢查輸入的是否為數字,是否符合規定的格式或數據范圍,等等。這可以通過(guò)設置單元格驗證屬性和編輯驗證表達式來(lái)驗證。
  比如工資填寫(xiě)表(H3)要求填寫(xiě)的數據在3000到10000之間,那么可以設置單元格的校驗表達式為:H3&gt;=3000&amp;&amp; H3

解決方案:收集我對 API 發(fā)現的想法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-11-17 15:40 ? 來(lái)自相關(guān)話(huà)題

  解決方案:收集我對 API 發(fā)現的想法
  我正在嘗試將所有 API 發(fā)現體驗加載到我的腦海中,以便進(jìn)行一些即將到來(lái)的對話(huà)。因此,我坐下來(lái)總結了迄今為止的 API 發(fā)現研究,以幫助我重新記住發(fā)生了什么以及我們是如何走到這一步的。API 發(fā)現是 API 領(lǐng)域中我個(gè)人致力于幫助推動(dòng)事情向前發(fā)展的少數幾層之一,能夠看到所有移動(dòng)部分一起幫助我繼續這樣做。讓我們回顧一下我對過(guò)去 15 年 API 發(fā)現演變的記憶,這樣我就可以更連貫地與不同的人談?wù)撍羞@些。
  可編程網(wǎng)站
  Programmable Web 是第一個(gè)能夠發(fā)現 API 的來(lái)源,到 2020 年,它仍然是您尋找 API 的地方。ProgrammableWeb 在過(guò)去十五年中沒(méi)有太大變化,除了所有者和運營(yíng)商以及網(wǎng)站外觀(guān)和感覺(jué)。它仍然是您查找新 API 和現有 API 的地方,也是您在 Google 時(shí)查找 API 的地方。
  我對為 ModerableWeb 寫(xiě)作有著(zhù)美好的回憶,它 網(wǎng)站 對我來(lái)說(shuō)仍然是一個(gè)重要的信息來(lái)源,但我很沮喪 PW 多年來(lái)沒(méi)有以任何有趣的方式推進(jìn) API 發(fā)現對話(huà)。我只是認為這是一個(gè)錯失的機會(huì ),并且在 API 領(lǐng)域反映了很多,我認為這阻礙了我們所有人。
  混搭 -&gt; Express API
  在可編程 Web 之后,API 世界的下一個(gè)演變是 MASHAPE,現在稱(chēng)為 Rapid API。API市場(chǎng)誕生于A(yíng)PI管理時(shí)代,提供基礎管理功能和API發(fā)現服務(wù)。提供一組非常豐富的 API,您可以使用 Quick API Marketplace 搜索和加載這些 API。
  Marshall 和 Fast API 無(wú)疑推動(dòng)了 API 發(fā)現對話(huà),但就像可編程 Web 一樣,它就此止步。當談到 SEO 游戲時(shí),RapidAPI 肯定會(huì )與可編程網(wǎng)絡(luò )競爭,但除了簡(jiǎn)單 API 市場(chǎng)的基礎知識之外,RapidAPI 確實(shí)沒(méi)有太多東西——這很好,但我一直在瞭望臺向前移動(dòng)。
  美國聯(lián)邦政府 Data.json 索引
  接下來(lái),我將繞道而行,但我保證它與 API 發(fā)現有關(guān)。2013 年,我進(jìn)入奧巴馬政府工作,致力于幫助聯(lián)邦機構使用 API 發(fā)布其公共數據資產(chǎn)。我在退伍軍人事務(wù)部工作,但也花時(shí)間與其他機構合作,按照總統的授權在 15 個(gè)執行機構的 網(wǎng)站 域的根目錄中發(fā)布所謂的 data.json 文件 - 你仍然可以找到今天可用的 15 個(gè)文件。
  我已經(jīng)設置了一個(gè)工作區來(lái)提取所有 15 個(gè) data.json 文件,我正在研究它們以查看已發(fā)布的內容,并查看我在 2013 年開(kāi)始的工作的狀態(tài)。作為這項工作的一部分,我學(xué)到了很多關(guān)于數據發(fā)現的知識以及在大型官僚機構中進(jìn)行數據發(fā)現的實(shí)際情況,這是我在參觀(guān)后帶回家的東西,并開(kāi)始將我想看到的應用到主流 API 發(fā)現中。
  APIIs.json / APIs.yaml
  離開(kāi)華盛頓特區后不久,我與 Steve Wilmott 合作從 3Scale 創(chuàng )建了一種名為 API.json 的新 API 發(fā)現格式。與 data.json 文件一樣,API.json 將為 API 提供一種發(fā)現格式,但我會(huì )改進(jìn)以更好地適應我認為需要的格式,以幫助推進(jìn)政府內外的 API 發(fā)現對話(huà)。提供一種索引單個(gè) API、API 集合、工作流和其他我們發(fā)現 API 并使它們自動(dòng)和手動(dòng)工作所需的方法的方法。
  我即將將該規范推入下一個(gè)版本,并將繼續致力于規范的發(fā)展。我有超過(guò) 40K 個(gè) API.json 文件,用于我確定擁有 API、正在使用 API 或懷疑擁有 API 的公司、組織、機構和政府機構。隨著(zhù)我繼續擴展我抓取和發(fā)現 API 的方式,我將繼續嘗試遍歷列表中的每個(gè)條目。
  APIs.io
  當我們推出 API.json 時(shí),我們也推出了第一個(gè) API 搜索引擎。我們希望實(shí)施 API 發(fā)現規范,以展示推動(dòng) API 提供商了解更多信息并開(kāi)始發(fā)布規范作為其運營(yíng)一部分的潛力。APIs.io 還開(kāi)始輪詢(xún)其索引的 API.json 文件的更新,并開(kāi)始考慮如何搜索新文件。使其成為第一個(gè) API 搜索引擎,允許您在搜索 API 的同時(shí)以自動(dòng)方式查找更新和擴展目錄。
  遺憾的是,我知道 APIs.io 沒(méi)有得到維護。人們仍在向它添加 API,但如果 網(wǎng)站 出現故障,我想沒(méi)人能回家讓它恢復運行。網(wǎng)站 在 Red Hat 收購 3Scale,然后 IBM 收購 Red Hat 的洗牌中迷失了方向。雖然 網(wǎng)站 不是 API 發(fā)現對話(huà)的活躍部分,但它仍然在塑造討論中發(fā)揮作用。
  接口規范
  
  隨著(zhù)可編程 Web、RapidAPI 的發(fā)展以及 API.json 和 APIs.io 的引入,出現了各種有助于改進(jìn) API 生命周期的規范,這些都有助于使 API 更加有形并最終被發(fā)現。這些 API 規范中的每一個(gè)都使查找 API 變得更加容易,無(wú)論您是在 Web 上、通過(guò) Github 還是在本地網(wǎng)絡(luò )的某個(gè)地方查找它。
  在 API 發(fā)現方面,API 規范提供了一個(gè)非常關(guān)鍵的構建塊。這些機器可讀的規范描述了 API 的表面區域,同時(shí)提供了標題、描述和其他有助于使 API 更容易被發(fā)現的元數據。將 API 規范組織到市場(chǎng)、目錄或中心將是 API 發(fā)現對話(huà)中的下一個(gè)明確步驟。
  炫耀
  在 Smart Bear 將 Swag 作為 OpenAPI 放入 Linux Foundation 后,他們啟動(dòng)了 Swag Hub 以幫助 API 提供商發(fā)布他們的 OpenAPI,使它們可供發(fā)現。正如它所說(shuō),該平臺提供了一個(gè) swag 中心,現在是 OpenAPI。允許開(kāi)發(fā)人員發(fā)布和搜索不同類(lèi)型的 API,同時(shí)還能夠在整個(gè) API 生命周期中使用它們進(jìn)行編輯和編排。
  SwaggerHub 絕對是一個(gè) API 發(fā)現解決方案,但它從一個(gè)非常不同的位置關(guān)注它。它更多地是關(guān)于編輯和設計 API,然后使它們在 API 生命周期的多個(gè)站點(diǎn)可用,包括發(fā)現。以領(lǐng)先的 API 規范為基礎,但重點(diǎn)關(guān)注如何在整個(gè) API 生命周期中使用它。
  API大師
  與 SwaggerHub 類(lèi)似,API.guru 中出現了另一種更開(kāi)源的方法,它也聚合了 Swagger 和 OpenAPI 定義,但作為一個(gè) GitHub 存儲庫,在其上構建了一個(gè)簡(jiǎn)單的搜索 網(wǎng)站。為一些最著(zhù)名的 API 提供豐富的 OpenAPI 定義目錄。提供一個(gè)單一位置,您可以在其中下載或分叉 OpenAPI 以獲取各種 API,使搜索變得非常簡(jiǎn)單。
  我喜歡 API.guru 的方法。Github 上的 API Discovery 對我來(lái)說(shuō)很有意義。GitHub 不僅僅是管理代碼,還提供了豐富的功能,可以使用 OpenAPI 等規范來(lái)推廣不同的 API。您可以分叉整個(gè) API.guru OpenAPI 目錄,使其成為一個(gè)非常便攜且可分叉的 API 發(fā)現解決方案,您可以在任何地方運行。
  郵遞員網(wǎng)絡(luò )
  當所有這些其他事情發(fā)生時(shí),Postman 發(fā)布了他們自己的 API 目錄,稱(chēng)為 Postman API 網(wǎng)絡(luò )。提供由 Postman 自己的 API 規范定義的不同 API 的列表,稱(chēng)為集合。Postman 用戶(hù)可以將自己的采集發(fā)布到 API Network,消費者可以通過(guò)分類(lèi)瀏覽 API,或者通過(guò)關(guān)鍵字搜索 API。
  使用最新版本的 Postman 平臺,您現在可以在發(fā)布工作區中找到由 OpenAPI、RAML 或 GraphQL 定義的 API,以及集合、監視器、模擬服務(wù)器和其他組件。想想 Github 存儲庫,但專(zhuān)為 API 設計。此外,還開(kāi)發(fā)了對 Postman 網(wǎng)絡(luò )的搜索,以更詳細地了解公共 API 以及您在個(gè)人或團隊工作區中私下使用的 API。
  更多接口目錄
  然后,我們開(kāi)始看到更多 API 目錄和彈出目錄。最終消失的不止這些,但這顯示了已出現的 API 發(fā)現解決方案類(lèi)型的一個(gè)很好的橫截面——幫助我們所有人在我們的應用程序中找到我們需要的 API。
  大多數 API 目錄都會(huì )啟動(dòng),然后在休眠或完全消失之前收到一波又一波的更新。我自己創(chuàng )建了幾個(gè)目錄,只有在它們過(guò)時(shí)時(shí)才刪除它們。保持 API 目錄的最新和最新是一項大量的工作,而且確實(shí)沒(méi)有多少錢(qián)可以做——至少現在還沒(méi)有。
  有目的的 API 發(fā)現
  最近,我們開(kāi)始看到新一波 API 發(fā)現解決方案的出現,但這種解決方案不僅僅是尋找 API。它是關(guān)于尋找 API,以便您可以解決其他一些更緊迫的需求,例如安全性或合規性。這里有一些新穎的方法來(lái)尋找 API,幫助我們理解我們越來(lái)越依賴(lài)的非常抽象和無(wú)形的基礎設施,這些基礎設施在我們周?chē)手笖导壴鲩L(cháng)。
  您會(huì )明白為什么我們需要發(fā)現這里展示的整個(gè) API 產(chǎn)品組合。我覺(jué)得僅僅搜索 API 不足以將 API 發(fā)現提升到一個(gè)新的水平。我們需要其他原因來(lái)發(fā)現我們周?chē)霈F的 API 基礎設施。API 的增長(cháng)速度通常如此之快,以至于我們跟不上文檔和其他更傳統的查看和發(fā)現 API 的方法。
  只是谷歌它
  事實(shí)上,大多數 API 都是通過(guò)簡(jiǎn)單的 Google 搜索發(fā)現的。我認為這將永遠成為現實(shí),我認為谷歌將繼續投資幫助我們找到我們需要的 API。然而,這只會(huì )幫助我們找到我們正在尋找的公共 API。我們需要能夠幫助我們找到我們的公共 API 以及我們所依賴(lài)的私有和合作伙伴 API 的解決方案,這些 API 無(wú)法通過(guò) Google 搜索發(fā)現。
  
  享受尋找新 API 的樂(lè )趣
  事實(shí)上,定期引入新 API 的方法并不多。您可以通過(guò)閱讀 tech crunch、調整到 Twitterverse 或 Reddit 的正確部分來(lái)學(xué)習新的,但我會(huì )說(shuō)產(chǎn)品搜索。你也可以聽(tīng)聽(tīng)ProgramambleWeb,用新API的不斷滴灌來(lái)引入新的API,但我最終還是希望有更多的方式來(lái)引入API,但這可能是最不可能變現的方式。
  進(jìn)一步的發(fā)現語(yǔ)義
  本次討論的另一層是一些機器可讀的構建塊,它們可以幫助我們更好地描述我們通過(guò) API 提供的資源,從而推動(dòng)如何通過(guò) Google 和其他搜索引擎發(fā)現 API。有多種方法可以標記、添加元數據和提供更多詳細信息,以幫助默認情況下使我們的 API 更容易被發(fā)現。
  所有這些構建塊的挑戰在于,它們需要大量工作才能添加到我們的每個(gè) API,而且 API 提供商不太可能抽出時(shí)間來(lái)這樣做。因此,服務(wù)和工具提供商需要使用通用元素(例如 JSON-LD 和其他豐富的格式)標記內容和擴充 API 定義,以幫助我們了解我們提供的數字資源和功能。
  車(chē)道工程 API 發(fā)現的巔峰之作
  多年來(lái),我曾多次嘗試提供 API 發(fā)現解決方案,而 API.json 直到最近才開(kāi)始再次向前發(fā)展。我有一些其他的解決方案來(lái)來(lái)去去,最近的演變是我構建的內部平臺的一部分,我簡(jiǎn)稱(chēng)為 Laneworks。這項最新投資是關(guān)于 API 發(fā)現和在網(wǎng)絡(luò )上尋找新的和有趣的 API 并投資它們以收錄在目錄中。
  我將停用用于自動(dòng)發(fā)現 API 的 Laneworks 方法的 v1,并且我正在重新設計它以在公共工作區中運行。我將我的幾千個(gè) OpenAPI 和生成的集合移動(dòng)到幾千個(gè)公共工作區。然后,我會(huì )將這種自動(dòng)化重新設計到 Postman 集合中,這些集合作為監視器按計劃運行,允許我按工作區發(fā)現、收獲、解析、排序和組織以進(jìn)行發(fā)現。當我擁有它時(shí),它往往會(huì )發(fā)現很多有趣的 API,這些 API 可以很容易地編目,但對拋光和可用性的最后潤色總是需要時(shí)間,這是我過(guò)去從未有過(guò)的——誰(shuí)知道未來(lái)會(huì )怎樣。
  新的 API 發(fā)現工具
  我把它放在最后是因為它是幾周前才發(fā)生的,但它是 API 發(fā)現對話(huà)取得進(jìn)展的一個(gè)非常有希望的跡象。它是一種新的開(kāi)源發(fā)現解決方案,是我見(jiàn)過(guò)的最先進(jìn)的開(kāi)源方法,可幫助發(fā)現公共和私有 API。
  我一直想知道為什么 Google 沒(méi)有加入 API 發(fā)現游戲。他們擁有搜索市場(chǎng),并且他們已經(jīng)為他們的 API 堆棧提供了一個(gè)發(fā)現解決方案,但這種開(kāi)源方法顯示了更多的潛力。我仍然需要使用 Google API Registry 來(lái)了解它的作用,但我認為它非常重要,可以收錄在這個(gè) API 發(fā)現敘述中。
  要問(wèn)的重要問(wèn)題
  到目前為止,API 發(fā)現的最大挑戰是需要解決很多方面的問(wèn)題。這不僅僅是關(guān)于搜索或發(fā)現 API。這是關(guān)于被發(fā)現。這是關(guān)于你如何描述你所做的事情。這取決于你是誰(shuí)以及你的動(dòng)機是什么。我問(wèn)了幾個(gè)問(wèn)題來(lái)幫助我理解 API 發(fā)現對話(huà)的多個(gè)維度,這樣我就可以看到一切。
  這些問(wèn)題的答案將隨時(shí)改變 API 發(fā)現的狀態(tài)。還有許多其他事情需要考慮,但這些領(lǐng)域反映了我多年來(lái)看到的混淆 API 發(fā)現水域的常見(jiàn)方式。很難真正提供一個(gè)簡(jiǎn)單的解決方案或向人們解釋它的全部?jì)热?。老?shí)說(shuō),我需要定期檢查發(fā)生了什么,并定期刷新,這樣我才能理解一些東西。有時(shí)我覺(jué)得在 API 發(fā)現方面沒(méi)有發(fā)生任何事情,但是一旦我像這樣進(jìn)行刷新,我就會(huì )意識到發(fā)生了多少事情——它只是漸進(jìn)式的。
  接口發(fā)現驅動(dòng)程序
  既然我已經(jīng)把所有這些都記在腦子里了,我想想想是什么推動(dòng)了 API 發(fā)現。我想了解為什么人們想要發(fā)現 API,為什么擁有 API 的人想要發(fā)現它們,以及是什么促成了這些搜索。我希望了解生命周期 API 發(fā)現中最需要的地方。通過(guò)這個(gè) 文章,這里是我正在考慮的不同元素,因為我試圖了解我們在 2021 年的 API 發(fā)現方面所處的位置。
  在寫(xiě)更多之前,我必須孵化這些元素。API 發(fā)現當然不僅僅是將 API 組織到目錄中并提供搜索機制,但我仍然不確定 API 發(fā)現的下一個(gè)演變是什么。當我認為在過(guò)去十年中 API 發(fā)現沒(méi)有發(fā)生任何事情時(shí),我肯定感覺(jué)好多了——發(fā)生了很多事情。與往常一樣,在 API 領(lǐng)域,訣竅始終是將所有內容放在一起并閱讀茶葉以弄清楚發(fā)生了什么,并考慮 API 發(fā)布者和消費者的需求 - 這就是本博客 文章 的所有內容。
  我總是懷疑我對 API 發(fā)現的看法。我是 API 的分析師、發(fā)布者和消費者。我也沉迷于 API。這讓我在尋找 API 時(shí)完全不同。我認為普通的業(yè)務(wù)人員或技術(shù)人員并不關(guān)心 API——他們只是想在他們自己的世界里完成事情。我認為搜索是 API 發(fā)現的核心,但還有許多其他機制在起作用,這些機制將使該搜索與不同參與者的整體組合相關(guān)或不相關(guān),這些參與者通常對為什么要查找 API 或找到他們的原因有相互競爭的動(dòng)機應用程序接口。最后,我認為 API 發(fā)現的默認模式仍然只是“google it”。我不確定這是否更多地是關(guān)于網(wǎng)絡(luò )搜索和發(fā)現而不是 API 發(fā)現,或者是否有更深層次的問(wèn)題需要考慮。反正,
  參考資料: apievangelist
  解決方案:10款國內外常用的SEO優(yōu)化工具
  優(yōu)秀的SEO關(guān)鍵詞排名工具會(huì )讓你的SEO優(yōu)化更有效,作為一個(gè)SEOer,你不僅要知道如何網(wǎng)站優(yōu)化,還要知道如何使用SEO優(yōu)化工具來(lái)加快網(wǎng)站優(yōu)化的過(guò)程。今天, 推薦了十個(gè)實(shí)用網(wǎng)站SEO優(yōu)化工具,希望對大家有所幫助。
  1. 搜索引擎抓取內容模擬器
  它可以模擬蜘蛛抓取特定網(wǎng)頁(yè),包括文本、鏈接、關(guān)鍵字和描述
  2. 頁(yè)面相似度檢測工具
  檢查兩頁(yè)的相似度(如果相似度超過(guò)80%,可能會(huì )受到處罰)。
  網(wǎng)站地圖制作工具
  1. 在線(xiàn)制作小網(wǎng)站地圖文件
  2. 使用工具制作中型網(wǎng)站地圖
  這是一個(gè)非常好的免費網(wǎng)站地圖制作工具:站點(diǎn)地圖生成器
  官方下載地址:
  
  四、SEO優(yōu)化輔助工具
  中國切()。
  5. 百度指數
  顯示注意和
  指定關(guān)鍵詞的媒體關(guān)注以圖表的形式在百度中,登錄后可以定義列表。
  6. 關(guān)鍵詞熱門(mén)排名和指數
  百度排行榜:
  序曲關(guān)鍵詞工具:
  7. 網(wǎng)站站長(cháng)工具
  1. 搜索引擎優(yōu)化站長(cháng)工具:
  2. 愛(ài)站工具:
  
  3. 站長(cháng)助手:
  8. 網(wǎng)站流量統計工具
  1. 百度統計:
  2. CNZZ數據專(zhuān)家:
  *它是每個(gè)網(wǎng)站隨時(shí)監控自己網(wǎng)站流量的必備工具
  9. 無(wú)效的鏈接檢查工具
  1、賽努鏈接偵探()
  2、W3C 智能檢查器()
  10. 網(wǎng)站歷史查詢(xún)工具
  互聯(lián)網(wǎng)檔案館保存了自1996年以來(lái)使用Alexa搜索引擎獲得的網(wǎng)站材料
  以上就是 分享的十個(gè)SEO優(yōu)化工具,都非常實(shí)用,可以加速你的網(wǎng)站SEO效果。 查看全部

  解決方案:收集我對 API 發(fā)現的想法
  我正在嘗試將所有 API 發(fā)現體驗加載到我的腦海中,以便進(jìn)行一些即將到來(lái)的對話(huà)。因此,我坐下來(lái)總結了迄今為止的 API 發(fā)現研究,以幫助我重新記住發(fā)生了什么以及我們是如何走到這一步的。API 發(fā)現是 API 領(lǐng)域中我個(gè)人致力于幫助推動(dòng)事情向前發(fā)展的少數幾層之一,能夠看到所有移動(dòng)部分一起幫助我繼續這樣做。讓我們回顧一下我對過(guò)去 15 年 API 發(fā)現演變的記憶,這樣我就可以更連貫地與不同的人談?wù)撍羞@些。
  可編程網(wǎng)站
  Programmable Web 是第一個(gè)能夠發(fā)現 API 的來(lái)源,到 2020 年,它仍然是您尋找 API 的地方。ProgrammableWeb 在過(guò)去十五年中沒(méi)有太大變化,除了所有者和運營(yíng)商以及網(wǎng)站外觀(guān)和感覺(jué)。它仍然是您查找新 API 和現有 API 的地方,也是您在 Google 時(shí)查找 API 的地方。
  我對為 ModerableWeb 寫(xiě)作有著(zhù)美好的回憶,它 網(wǎng)站 對我來(lái)說(shuō)仍然是一個(gè)重要的信息來(lái)源,但我很沮喪 PW 多年來(lái)沒(méi)有以任何有趣的方式推進(jìn) API 發(fā)現對話(huà)。我只是認為這是一個(gè)錯失的機會(huì ),并且在 API 領(lǐng)域反映了很多,我認為這阻礙了我們所有人。
  混搭 -&gt; Express API
  在可編程 Web 之后,API 世界的下一個(gè)演變是 MASHAPE,現在稱(chēng)為 Rapid API。API市場(chǎng)誕生于A(yíng)PI管理時(shí)代,提供基礎管理功能和API發(fā)現服務(wù)。提供一組非常豐富的 API,您可以使用 Quick API Marketplace 搜索和加載這些 API。
  Marshall 和 Fast API 無(wú)疑推動(dòng)了 API 發(fā)現對話(huà),但就像可編程 Web 一樣,它就此止步。當談到 SEO 游戲時(shí),RapidAPI 肯定會(huì )與可編程網(wǎng)絡(luò )競爭,但除了簡(jiǎn)單 API 市場(chǎng)的基礎知識之外,RapidAPI 確實(shí)沒(méi)有太多東西——這很好,但我一直在瞭望臺向前移動(dòng)。
  美國聯(lián)邦政府 Data.json 索引
  接下來(lái),我將繞道而行,但我保證它與 API 發(fā)現有關(guān)。2013 年,我進(jìn)入奧巴馬政府工作,致力于幫助聯(lián)邦機構使用 API 發(fā)布其公共數據資產(chǎn)。我在退伍軍人事務(wù)部工作,但也花時(shí)間與其他機構合作,按照總統的授權在 15 個(gè)執行機構的 網(wǎng)站 域的根目錄中發(fā)布所謂的 data.json 文件 - 你仍然可以找到今天可用的 15 個(gè)文件。
  我已經(jīng)設置了一個(gè)工作區來(lái)提取所有 15 個(gè) data.json 文件,我正在研究它們以查看已發(fā)布的內容,并查看我在 2013 年開(kāi)始的工作的狀態(tài)。作為這項工作的一部分,我學(xué)到了很多關(guān)于數據發(fā)現的知識以及在大型官僚機構中進(jìn)行數據發(fā)現的實(shí)際情況,這是我在參觀(guān)后帶回家的東西,并開(kāi)始將我想看到的應用到主流 API 發(fā)現中。
  APIIs.json / APIs.yaml
  離開(kāi)華盛頓特區后不久,我與 Steve Wilmott 合作從 3Scale 創(chuàng )建了一種名為 API.json 的新 API 發(fā)現格式。與 data.json 文件一樣,API.json 將為 API 提供一種發(fā)現格式,但我會(huì )改進(jìn)以更好地適應我認為需要的格式,以幫助推進(jìn)政府內外的 API 發(fā)現對話(huà)。提供一種索引單個(gè) API、API 集合、工作流和其他我們發(fā)現 API 并使它們自動(dòng)和手動(dòng)工作所需的方法的方法。
  我即將將該規范推入下一個(gè)版本,并將繼續致力于規范的發(fā)展。我有超過(guò) 40K 個(gè) API.json 文件,用于我確定擁有 API、正在使用 API 或懷疑擁有 API 的公司、組織、機構和政府機構。隨著(zhù)我繼續擴展我抓取和發(fā)現 API 的方式,我將繼續嘗試遍歷列表中的每個(gè)條目。
  APIs.io
  當我們推出 API.json 時(shí),我們也推出了第一個(gè) API 搜索引擎。我們希望實(shí)施 API 發(fā)現規范,以展示推動(dòng) API 提供商了解更多信息并開(kāi)始發(fā)布規范作為其運營(yíng)一部分的潛力。APIs.io 還開(kāi)始輪詢(xún)其索引的 API.json 文件的更新,并開(kāi)始考慮如何搜索新文件。使其成為第一個(gè) API 搜索引擎,允許您在搜索 API 的同時(shí)以自動(dòng)方式查找更新和擴展目錄。
  遺憾的是,我知道 APIs.io 沒(méi)有得到維護。人們仍在向它添加 API,但如果 網(wǎng)站 出現故障,我想沒(méi)人能回家讓它恢復運行。網(wǎng)站 在 Red Hat 收購 3Scale,然后 IBM 收購 Red Hat 的洗牌中迷失了方向。雖然 網(wǎng)站 不是 API 發(fā)現對話(huà)的活躍部分,但它仍然在塑造討論中發(fā)揮作用。
  接口規范
  
  隨著(zhù)可編程 Web、RapidAPI 的發(fā)展以及 API.json 和 APIs.io 的引入,出現了各種有助于改進(jìn) API 生命周期的規范,這些都有助于使 API 更加有形并最終被發(fā)現。這些 API 規范中的每一個(gè)都使查找 API 變得更加容易,無(wú)論您是在 Web 上、通過(guò) Github 還是在本地網(wǎng)絡(luò )的某個(gè)地方查找它。
  在 API 發(fā)現方面,API 規范提供了一個(gè)非常關(guān)鍵的構建塊。這些機器可讀的規范描述了 API 的表面區域,同時(shí)提供了標題、描述和其他有助于使 API 更容易被發(fā)現的元數據。將 API 規范組織到市場(chǎng)、目錄或中心將是 API 發(fā)現對話(huà)中的下一個(gè)明確步驟。
  炫耀
  在 Smart Bear 將 Swag 作為 OpenAPI 放入 Linux Foundation 后,他們啟動(dòng)了 Swag Hub 以幫助 API 提供商發(fā)布他們的 OpenAPI,使它們可供發(fā)現。正如它所說(shuō),該平臺提供了一個(gè) swag 中心,現在是 OpenAPI。允許開(kāi)發(fā)人員發(fā)布和搜索不同類(lèi)型的 API,同時(shí)還能夠在整個(gè) API 生命周期中使用它們進(jìn)行編輯和編排。
  SwaggerHub 絕對是一個(gè) API 發(fā)現解決方案,但它從一個(gè)非常不同的位置關(guān)注它。它更多地是關(guān)于編輯和設計 API,然后使它們在 API 生命周期的多個(gè)站點(diǎn)可用,包括發(fā)現。以領(lǐng)先的 API 規范為基礎,但重點(diǎn)關(guān)注如何在整個(gè) API 生命周期中使用它。
  API大師
  與 SwaggerHub 類(lèi)似,API.guru 中出現了另一種更開(kāi)源的方法,它也聚合了 Swagger 和 OpenAPI 定義,但作為一個(gè) GitHub 存儲庫,在其上構建了一個(gè)簡(jiǎn)單的搜索 網(wǎng)站。為一些最著(zhù)名的 API 提供豐富的 OpenAPI 定義目錄。提供一個(gè)單一位置,您可以在其中下載或分叉 OpenAPI 以獲取各種 API,使搜索變得非常簡(jiǎn)單。
  我喜歡 API.guru 的方法。Github 上的 API Discovery 對我來(lái)說(shuō)很有意義。GitHub 不僅僅是管理代碼,還提供了豐富的功能,可以使用 OpenAPI 等規范來(lái)推廣不同的 API。您可以分叉整個(gè) API.guru OpenAPI 目錄,使其成為一個(gè)非常便攜且可分叉的 API 發(fā)現解決方案,您可以在任何地方運行。
  郵遞員網(wǎng)絡(luò )
  當所有這些其他事情發(fā)生時(shí),Postman 發(fā)布了他們自己的 API 目錄,稱(chēng)為 Postman API 網(wǎng)絡(luò )。提供由 Postman 自己的 API 規范定義的不同 API 的列表,稱(chēng)為集合。Postman 用戶(hù)可以將自己的采集發(fā)布到 API Network,消費者可以通過(guò)分類(lèi)瀏覽 API,或者通過(guò)關(guān)鍵字搜索 API。
  使用最新版本的 Postman 平臺,您現在可以在發(fā)布工作區中找到由 OpenAPI、RAML 或 GraphQL 定義的 API,以及集合、監視器、模擬服務(wù)器和其他組件。想想 Github 存儲庫,但專(zhuān)為 API 設計。此外,還開(kāi)發(fā)了對 Postman 網(wǎng)絡(luò )的搜索,以更詳細地了解公共 API 以及您在個(gè)人或團隊工作區中私下使用的 API。
  更多接口目錄
  然后,我們開(kāi)始看到更多 API 目錄和彈出目錄。最終消失的不止這些,但這顯示了已出現的 API 發(fā)現解決方案類(lèi)型的一個(gè)很好的橫截面——幫助我們所有人在我們的應用程序中找到我們需要的 API。
  大多數 API 目錄都會(huì )啟動(dòng),然后在休眠或完全消失之前收到一波又一波的更新。我自己創(chuàng )建了幾個(gè)目錄,只有在它們過(guò)時(shí)時(shí)才刪除它們。保持 API 目錄的最新和最新是一項大量的工作,而且確實(shí)沒(méi)有多少錢(qián)可以做——至少現在還沒(méi)有。
  有目的的 API 發(fā)現
  最近,我們開(kāi)始看到新一波 API 發(fā)現解決方案的出現,但這種解決方案不僅僅是尋找 API。它是關(guān)于尋找 API,以便您可以解決其他一些更緊迫的需求,例如安全性或合規性。這里有一些新穎的方法來(lái)尋找 API,幫助我們理解我們越來(lái)越依賴(lài)的非常抽象和無(wú)形的基礎設施,這些基礎設施在我們周?chē)手笖导壴鲩L(cháng)。
  您會(huì )明白為什么我們需要發(fā)現這里展示的整個(gè) API 產(chǎn)品組合。我覺(jué)得僅僅搜索 API 不足以將 API 發(fā)現提升到一個(gè)新的水平。我們需要其他原因來(lái)發(fā)現我們周?chē)霈F的 API 基礎設施。API 的增長(cháng)速度通常如此之快,以至于我們跟不上文檔和其他更傳統的查看和發(fā)現 API 的方法。
  只是谷歌它
  事實(shí)上,大多數 API 都是通過(guò)簡(jiǎn)單的 Google 搜索發(fā)現的。我認為這將永遠成為現實(shí),我認為谷歌將繼續投資幫助我們找到我們需要的 API。然而,這只會(huì )幫助我們找到我們正在尋找的公共 API。我們需要能夠幫助我們找到我們的公共 API 以及我們所依賴(lài)的私有和合作伙伴 API 的解決方案,這些 API 無(wú)法通過(guò) Google 搜索發(fā)現。
  
  享受尋找新 API 的樂(lè )趣
  事實(shí)上,定期引入新 API 的方法并不多。您可以通過(guò)閱讀 tech crunch、調整到 Twitterverse 或 Reddit 的正確部分來(lái)學(xué)習新的,但我會(huì )說(shuō)產(chǎn)品搜索。你也可以聽(tīng)聽(tīng)ProgramambleWeb,用新API的不斷滴灌來(lái)引入新的API,但我最終還是希望有更多的方式來(lái)引入API,但這可能是最不可能變現的方式。
  進(jìn)一步的發(fā)現語(yǔ)義
  本次討論的另一層是一些機器可讀的構建塊,它們可以幫助我們更好地描述我們通過(guò) API 提供的資源,從而推動(dòng)如何通過(guò) Google 和其他搜索引擎發(fā)現 API。有多種方法可以標記、添加元數據和提供更多詳細信息,以幫助默認情況下使我們的 API 更容易被發(fā)現。
  所有這些構建塊的挑戰在于,它們需要大量工作才能添加到我們的每個(gè) API,而且 API 提供商不太可能抽出時(shí)間來(lái)這樣做。因此,服務(wù)和工具提供商需要使用通用元素(例如 JSON-LD 和其他豐富的格式)標記內容和擴充 API 定義,以幫助我們了解我們提供的數字資源和功能。
  車(chē)道工程 API 發(fā)現的巔峰之作
  多年來(lái),我曾多次嘗試提供 API 發(fā)現解決方案,而 API.json 直到最近才開(kāi)始再次向前發(fā)展。我有一些其他的解決方案來(lái)來(lái)去去,最近的演變是我構建的內部平臺的一部分,我簡(jiǎn)稱(chēng)為 Laneworks。這項最新投資是關(guān)于 API 發(fā)現和在網(wǎng)絡(luò )上尋找新的和有趣的 API 并投資它們以收錄在目錄中。
  我將停用用于自動(dòng)發(fā)現 API 的 Laneworks 方法的 v1,并且我正在重新設計它以在公共工作區中運行。我將我的幾千個(gè) OpenAPI 和生成的集合移動(dòng)到幾千個(gè)公共工作區。然后,我會(huì )將這種自動(dòng)化重新設計到 Postman 集合中,這些集合作為監視器按計劃運行,允許我按工作區發(fā)現、收獲、解析、排序和組織以進(jìn)行發(fā)現。當我擁有它時(shí),它往往會(huì )發(fā)現很多有趣的 API,這些 API 可以很容易地編目,但對拋光和可用性的最后潤色總是需要時(shí)間,這是我過(guò)去從未有過(guò)的——誰(shuí)知道未來(lái)會(huì )怎樣。
  新的 API 發(fā)現工具
  我把它放在最后是因為它是幾周前才發(fā)生的,但它是 API 發(fā)現對話(huà)取得進(jìn)展的一個(gè)非常有希望的跡象。它是一種新的開(kāi)源發(fā)現解決方案,是我見(jiàn)過(guò)的最先進(jìn)的開(kāi)源方法,可幫助發(fā)現公共和私有 API。
  我一直想知道為什么 Google 沒(méi)有加入 API 發(fā)現游戲。他們擁有搜索市場(chǎng),并且他們已經(jīng)為他們的 API 堆棧提供了一個(gè)發(fā)現解決方案,但這種開(kāi)源方法顯示了更多的潛力。我仍然需要使用 Google API Registry 來(lái)了解它的作用,但我認為它非常重要,可以收錄在這個(gè) API 發(fā)現敘述中。
  要問(wèn)的重要問(wèn)題
  到目前為止,API 發(fā)現的最大挑戰是需要解決很多方面的問(wèn)題。這不僅僅是關(guān)于搜索或發(fā)現 API。這是關(guān)于被發(fā)現。這是關(guān)于你如何描述你所做的事情。這取決于你是誰(shuí)以及你的動(dòng)機是什么。我問(wèn)了幾個(gè)問(wèn)題來(lái)幫助我理解 API 發(fā)現對話(huà)的多個(gè)維度,這樣我就可以看到一切。
  這些問(wèn)題的答案將隨時(shí)改變 API 發(fā)現的狀態(tài)。還有許多其他事情需要考慮,但這些領(lǐng)域反映了我多年來(lái)看到的混淆 API 發(fā)現水域的常見(jiàn)方式。很難真正提供一個(gè)簡(jiǎn)單的解決方案或向人們解釋它的全部?jì)热?。老?shí)說(shuō),我需要定期檢查發(fā)生了什么,并定期刷新,這樣我才能理解一些東西。有時(shí)我覺(jué)得在 API 發(fā)現方面沒(méi)有發(fā)生任何事情,但是一旦我像這樣進(jìn)行刷新,我就會(huì )意識到發(fā)生了多少事情——它只是漸進(jìn)式的。
  接口發(fā)現驅動(dòng)程序
  既然我已經(jīng)把所有這些都記在腦子里了,我想想想是什么推動(dòng)了 API 發(fā)現。我想了解為什么人們想要發(fā)現 API,為什么擁有 API 的人想要發(fā)現它們,以及是什么促成了這些搜索。我希望了解生命周期 API 發(fā)現中最需要的地方。通過(guò)這個(gè) 文章,這里是我正在考慮的不同元素,因為我試圖了解我們在 2021 年的 API 發(fā)現方面所處的位置。
  在寫(xiě)更多之前,我必須孵化這些元素。API 發(fā)現當然不僅僅是將 API 組織到目錄中并提供搜索機制,但我仍然不確定 API 發(fā)現的下一個(gè)演變是什么。當我認為在過(guò)去十年中 API 發(fā)現沒(méi)有發(fā)生任何事情時(shí),我肯定感覺(jué)好多了——發(fā)生了很多事情。與往常一樣,在 API 領(lǐng)域,訣竅始終是將所有內容放在一起并閱讀茶葉以弄清楚發(fā)生了什么,并考慮 API 發(fā)布者和消費者的需求 - 這就是本博客 文章 的所有內容。
  我總是懷疑我對 API 發(fā)現的看法。我是 API 的分析師、發(fā)布者和消費者。我也沉迷于 API。這讓我在尋找 API 時(shí)完全不同。我認為普通的業(yè)務(wù)人員或技術(shù)人員并不關(guān)心 API——他們只是想在他們自己的世界里完成事情。我認為搜索是 API 發(fā)現的核心,但還有許多其他機制在起作用,這些機制將使該搜索與不同參與者的整體組合相關(guān)或不相關(guān),這些參與者通常對為什么要查找 API 或找到他們的原因有相互競爭的動(dòng)機應用程序接口。最后,我認為 API 發(fā)現的默認模式仍然只是“google it”。我不確定這是否更多地是關(guān)于網(wǎng)絡(luò )搜索和發(fā)現而不是 API 發(fā)現,或者是否有更深層次的問(wèn)題需要考慮。反正,
  參考資料: apievangelist
  解決方案:10款國內外常用的SEO優(yōu)化工具
  優(yōu)秀的SEO關(guān)鍵詞排名工具會(huì )讓你的SEO優(yōu)化更有效,作為一個(gè)SEOer,你不僅要知道如何網(wǎng)站優(yōu)化,還要知道如何使用SEO優(yōu)化工具來(lái)加快網(wǎng)站優(yōu)化的過(guò)程。今天, 推薦了十個(gè)實(shí)用網(wǎng)站SEO優(yōu)化工具,希望對大家有所幫助。
  1. 搜索引擎抓取內容模擬器
  它可以模擬蜘蛛抓取特定網(wǎng)頁(yè),包括文本、鏈接、關(guān)鍵字和描述
  2. 頁(yè)面相似度檢測工具
  檢查兩頁(yè)的相似度(如果相似度超過(guò)80%,可能會(huì )受到處罰)。
  網(wǎng)站地圖制作工具
  1. 在線(xiàn)制作小網(wǎng)站地圖文件
  2. 使用工具制作中型網(wǎng)站地圖
  這是一個(gè)非常好的免費網(wǎng)站地圖制作工具:站點(diǎn)地圖生成器
  官方下載地址:
  
  四、SEO優(yōu)化輔助工具
  中國切()。
  5. 百度指數
  顯示注意和
  指定關(guān)鍵詞的媒體關(guān)注以圖表的形式在百度中,登錄后可以定義列表。
  6. 關(guān)鍵詞熱門(mén)排名和指數
  百度排行榜:
  序曲關(guān)鍵詞工具:
  7. 網(wǎng)站站長(cháng)工具
  1. 搜索引擎優(yōu)化站長(cháng)工具:
  2. 愛(ài)站工具:
  
  3. 站長(cháng)助手:
  8. 網(wǎng)站流量統計工具
  1. 百度統計:
  2. CNZZ數據專(zhuān)家:
  *它是每個(gè)網(wǎng)站隨時(shí)監控自己網(wǎng)站流量的必備工具
  9. 無(wú)效的鏈接檢查工具
  1、賽努鏈接偵探()
  2、W3C 智能檢查器()
  10. 網(wǎng)站歷史查詢(xún)工具
  互聯(lián)網(wǎng)檔案館保存了自1996年以來(lái)使用Alexa搜索引擎獲得的網(wǎng)站材料
  以上就是 分享的十個(gè)SEO優(yōu)化工具,都非常實(shí)用,可以加速你的網(wǎng)站SEO效果。

解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 134 次瀏覽 ? 2022-11-11 18:24 ? 來(lái)自相關(guān)話(huà)題

  解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法
  在過(guò)去的幾個(gè)月里,我學(xué)習了一些新技術(shù),使用前端制作了幾個(gè)移動(dòng)應用程序,還學(xué)習了一些關(guān)于 java 和 android 開(kāi)發(fā)的知識。經(jīng)過(guò)對比,我發(fā)現使用前端開(kāi)發(fā)app的學(xué)習成本與原生開(kāi)發(fā)app相比。時(shí)間真的很短,很方便。
  我第一次做應用程序時(shí),我使用了 apicloud。我覺(jué)得使用這個(gè)平臺開(kāi)發(fā)應用程序真的很容易上手。我只花了一個(gè)上午學(xué)習就開(kāi)始開(kāi)發(fā)自己的項目。創(chuàng )建應用時(shí),可以選擇多個(gè)模板,文檔易于查看,功能也足夠豐富。
  模塊很多,使用起來(lái)非常方便。第一次做app,我用微信、微博、QQ登錄分享、支付寶和微信支付、高德地圖定位、極光推送這些模塊來(lái)實(shí)現想要的功能。(貌似公司第一次實(shí)現了push功能,默默的給自己點(diǎn)贊和鼓勵。平臺官方推薦的vue框架也是我非常喜歡的一個(gè)框架。在做整個(gè)app的過(guò)程中,基本沒(méi)有原生js操作,dom樹(shù)的行為,所有功能都是通過(guò)數據綁定的方式實(shí)現的比如execScript方法,可以很方便的執行其他頁(yè)面的功能,
  
  五一假期,我很感興趣,花了一個(gè)下午開(kāi)發(fā)了一個(gè)粗糙的應用圖靈聊天機器人來(lái)玩。
  用apicloud完成app后,再學(xué)習dcloud,開(kāi)發(fā)下一個(gè)app。與apicloud相比,dcloud的體驗讓我更不舒服。dcloud 文檔大部分是 mui 文檔和 plus 文檔。因為我還是想用vue框架,所以在開(kāi)發(fā)過(guò)程中出現了很多問(wèn)題。vue框架mounted生命周期開(kāi)始時(shí)執行的事件與dcloud的plus ready事件沖突相同,導致頁(yè)面加載順序問(wèn)題。當頁(yè)面剛打開(kāi)時(shí),頁(yè)面中會(huì )出現vue的{{}}雙括號。一些樣式的mui也和自己的頁(yè)面有沖突,這使得android ios手機出現各種問(wèn)題。有些功能實(shí)現起來(lái)比較復雜,有的甚至需要了解原生的java和android開(kāi)發(fā)語(yǔ)言,然后使用js調用開(kāi)發(fā)。個(gè)人dcloud體驗比較差,這也可能是我技術(shù)水平還比較低的原因。
  接下來(lái)總結一些我認為apicloud優(yōu)于dcloud的方法和優(yōu)勢。
  1.上拉加載下拉刷新。在aplcud中實(shí)現比dcloud方便很多,文檔也很詳細。
  2.頁(yè)面加載、跳轉、重新加載和刷新,頁(yè)面一些慣性效果的實(shí)現。
  3、分享方面,dcloud只有微信、新浪、微博分享,QQ和騰訊微博分享的兩個(gè)例子。apicloud 在實(shí)現上沒(méi)有自由。
  
  4. 支付。dcloud的支付需要將原生sdk放入并引用。由于甲方的背景,目前還沒(méi)有實(shí)現。apicloud的支付實(shí)現起來(lái)很簡(jiǎn)單。
  5. dcloud 在部分安卓版本較低的機型(如安卓4.4)上不支持es6語(yǔ)法。
  6、dcloud的生態(tài)環(huán)境不如apicloud。如果你在社區提出問(wèn)題,apicloud 可以很快得到答案并解決它,但在 dcloud 社區中存在問(wèn)題。
  7.對于框架支持,我用vue比較多,在apicloud上比較完美。
  8. dcloud上還有一些問(wèn)題沒(méi)有解決。根據文檔,據說(shuō)DOM節點(diǎn)過(guò)多時(shí)會(huì )出現問(wèn)題。
  9、dcloud中mui框架的一些方法還是需要在dom節點(diǎn)上操作,這和vue的概念有沖突。作為一個(gè)重度vue用戶(hù),原生js不熟悉dom節點(diǎn)的操作,開(kāi)發(fā)過(guò)程中有數據綁定。擁有原生 js 似乎有點(diǎn)不和諧和不舒服。
  我暫時(shí)想到了這些問(wèn)題。如果不是業(yè)務(wù)需求,我更傾向于apicloud。下一個(gè)項目,甲方仍然需要使用dcloud進(jìn)行開(kāi)發(fā)。希望在接下來(lái)的開(kāi)發(fā)中,能學(xué)到更多的知識,找到dcloud。很棒的地方。
  解決方案:騰訊云微服務(wù)引擎 TSE 10月產(chǎn)品動(dòng)態(tài)
  十月動(dòng)態(tài)云原生網(wǎng)關(guān)
  【新特性】Kong網(wǎng)關(guān)支持彈性伸縮:Kong會(huì )根據系統指標(CPU利用率)自動(dòng)擴容和縮容,可以配置彈性伸縮策略,Kong會(huì )自動(dòng)伸縮節點(diǎn)。
  【新增功能】Kong網(wǎng)關(guān)支持使用Kong Ingress Controller:Kong可以在線(xiàn)使用Kong Ingress Controller能力,方便接入你的騰訊云容器集群。
  【新增功能】Kong網(wǎng)關(guān)支持高級限流:Kong推出了高級限流插件,支持分布式限流和多時(shí)間多資源維度的請求排隊。
  【新特性】Nginx Ingress 支持使用原生 YAML 創(chuàng )建 Ingress 資源: Ingress 新流程優(yōu)化,支持 YAML 和表單兩種方式上傳。
  【新功能】Nginx Ingress 支持域名管理和證書(shū)管理:Nginx Ingress 支持管理你的域名和證書(shū)。
  注冊配置中心
  【遷移能力】 Nacos 雙注冊雙發(fā)現工具支持 Nacos Client 2.1.0 版本。
  
  【新增功能】Nacos 2.1.0.x 版本支持grpc認證。
  【新體驗】修復開(kāi)源Nacos各節點(diǎn)訂閱數據不同步的問(wèn)題。
  【新增功能】Eureka支持公網(wǎng)訪(fǎng)問(wèn)白名單:為了您的訪(fǎng)問(wèn)安全,可以在開(kāi)啟公網(wǎng)訪(fǎng)問(wèn)時(shí)配置IP白名單。
  【新增功能】Eureka支持客戶(hù)端認證:在參數配置中,支持開(kāi)啟客戶(hù)端認證功能,設置用戶(hù)賬號密碼。
  【新功能】Apollo支持修改管理員密碼和Token。
  【商業(yè)化】新增法蘭克福、東京、硅谷地區。
  服務(wù)管理中心
  【新特性】支持通過(guò)XDS v3標準協(xié)議訪(fǎng)問(wèn)官方開(kāi)源的Envoy。
  【新增功能】新增分布式限流能力,助您輕松應對流量高峰。
  
  【新增功能】新增對自定義路由規則的支持,幫助您更好地實(shí)現灰度發(fā)布等場(chǎng)景。
  【新功能】增加附近的訪(fǎng)問(wèn)能力,以幫助減少您的網(wǎng)絡(luò )延遲。
  彈性微服務(wù)
  【新特性】彈性微服務(wù)增加查看資源原生YAML功能的支持。
  【新特性】彈性微服務(wù)支持通過(guò)標簽進(jìn)行資源管理、權限配置和基于標簽的計費管理。
  【新特性】彈性微服務(wù)新增日志抽取方式,支持在log采集規則中配置JSON、單行完全正則和多行完全正則抽取模式。
  11月,宣布云原生網(wǎng)關(guān)Kong將支持根據TCP連接數進(jìn)行彈性伸縮,幫助您更好地應對流量高峰。云原生網(wǎng)關(guān) Kong 即將支持斷路器,有效保護您的后端服務(wù)。云原生網(wǎng)關(guān) Kong 即將支持高級參數重寫(xiě)功能,您可以使用運行時(shí)變量來(lái)重寫(xiě)請求/響應參數。云原生網(wǎng)關(guān) Nginx Ingress 即將支持自定義日志格式。您可以根據需要配置日志格式內容。云原生網(wǎng)關(guān) Nginx Ingress 即將支持直連彈性微服務(wù)引擎,簡(jiǎn)化您的使用。注冊與配置中心注冊與配置中心即將支持Prometheus監控,提供更多維度、更精細的可觀(guān)察性能力,幫助您及時(shí)發(fā)現業(yè)務(wù)問(wèn)題。注冊配置中心支持日志服務(wù)CLS,提供持久化日志存儲和多種采集模式配置。Nacos新增遷移功能:即將加入遷移工具的產(chǎn)品化能力,讓您輕松將自建注冊中心遷移到云端。Nacos新增監控概覽:支持查看關(guān)鍵系統和業(yè)務(wù)指標以及配置告警。Nacos 2.1.0.2 支持配置多個(gè)灰度發(fā)布。服務(wù)治理中心支持SpringCloud+eureka/nacos/consul應用無(wú)縫遷移到Polaris(javaagent)。服務(wù)管理中心即將支持接口級熔斷。Polaris 控制臺將很快支持用戶(hù)操作記錄。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。 查看全部

  解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法
  在過(guò)去的幾個(gè)月里,我學(xué)習了一些新技術(shù),使用前端制作了幾個(gè)移動(dòng)應用程序,還學(xué)習了一些關(guān)于 java 和 android 開(kāi)發(fā)的知識。經(jīng)過(guò)對比,我發(fā)現使用前端開(kāi)發(fā)app的學(xué)習成本與原生開(kāi)發(fā)app相比。時(shí)間真的很短,很方便。
  我第一次做應用程序時(shí),我使用了 apicloud。我覺(jué)得使用這個(gè)平臺開(kāi)發(fā)應用程序真的很容易上手。我只花了一個(gè)上午學(xué)習就開(kāi)始開(kāi)發(fā)自己的項目。創(chuàng )建應用時(shí),可以選擇多個(gè)模板,文檔易于查看,功能也足夠豐富。
  模塊很多,使用起來(lái)非常方便。第一次做app,我用微信、微博、QQ登錄分享、支付寶和微信支付、高德地圖定位、極光推送這些模塊來(lái)實(shí)現想要的功能。(貌似公司第一次實(shí)現了push功能,默默的給自己點(diǎn)贊和鼓勵。平臺官方推薦的vue框架也是我非常喜歡的一個(gè)框架。在做整個(gè)app的過(guò)程中,基本沒(méi)有原生js操作,dom樹(shù)的行為,所有功能都是通過(guò)數據綁定的方式實(shí)現的比如execScript方法,可以很方便的執行其他頁(yè)面的功能,
  
  五一假期,我很感興趣,花了一個(gè)下午開(kāi)發(fā)了一個(gè)粗糙的應用圖靈聊天機器人來(lái)玩。
  用apicloud完成app后,再學(xué)習dcloud,開(kāi)發(fā)下一個(gè)app。與apicloud相比,dcloud的體驗讓我更不舒服。dcloud 文檔大部分是 mui 文檔和 plus 文檔。因為我還是想用vue框架,所以在開(kāi)發(fā)過(guò)程中出現了很多問(wèn)題。vue框架mounted生命周期開(kāi)始時(shí)執行的事件與dcloud的plus ready事件沖突相同,導致頁(yè)面加載順序問(wèn)題。當頁(yè)面剛打開(kāi)時(shí),頁(yè)面中會(huì )出現vue的{{}}雙括號。一些樣式的mui也和自己的頁(yè)面有沖突,這使得android ios手機出現各種問(wèn)題。有些功能實(shí)現起來(lái)比較復雜,有的甚至需要了解原生的java和android開(kāi)發(fā)語(yǔ)言,然后使用js調用開(kāi)發(fā)。個(gè)人dcloud體驗比較差,這也可能是我技術(shù)水平還比較低的原因。
  接下來(lái)總結一些我認為apicloud優(yōu)于dcloud的方法和優(yōu)勢。
  1.上拉加載下拉刷新。在aplcud中實(shí)現比dcloud方便很多,文檔也很詳細。
  2.頁(yè)面加載、跳轉、重新加載和刷新,頁(yè)面一些慣性效果的實(shí)現。
  3、分享方面,dcloud只有微信、新浪、微博分享,QQ和騰訊微博分享的兩個(gè)例子。apicloud 在實(shí)現上沒(méi)有自由。
  
  4. 支付。dcloud的支付需要將原生sdk放入并引用。由于甲方的背景,目前還沒(méi)有實(shí)現。apicloud的支付實(shí)現起來(lái)很簡(jiǎn)單。
  5. dcloud 在部分安卓版本較低的機型(如安卓4.4)上不支持es6語(yǔ)法。
  6、dcloud的生態(tài)環(huán)境不如apicloud。如果你在社區提出問(wèn)題,apicloud 可以很快得到答案并解決它,但在 dcloud 社區中存在問(wèn)題。
  7.對于框架支持,我用vue比較多,在apicloud上比較完美。
  8. dcloud上還有一些問(wèn)題沒(méi)有解決。根據文檔,據說(shuō)DOM節點(diǎn)過(guò)多時(shí)會(huì )出現問(wèn)題。
  9、dcloud中mui框架的一些方法還是需要在dom節點(diǎn)上操作,這和vue的概念有沖突。作為一個(gè)重度vue用戶(hù),原生js不熟悉dom節點(diǎn)的操作,開(kāi)發(fā)過(guò)程中有數據綁定。擁有原生 js 似乎有點(diǎn)不和諧和不舒服。
  我暫時(shí)想到了這些問(wèn)題。如果不是業(yè)務(wù)需求,我更傾向于apicloud。下一個(gè)項目,甲方仍然需要使用dcloud進(jìn)行開(kāi)發(fā)。希望在接下來(lái)的開(kāi)發(fā)中,能學(xué)到更多的知識,找到dcloud。很棒的地方。
  解決方案:騰訊云微服務(wù)引擎 TSE 10月產(chǎn)品動(dòng)態(tài)
  十月動(dòng)態(tài)云原生網(wǎng)關(guān)
  【新特性】Kong網(wǎng)關(guān)支持彈性伸縮:Kong會(huì )根據系統指標(CPU利用率)自動(dòng)擴容和縮容,可以配置彈性伸縮策略,Kong會(huì )自動(dòng)伸縮節點(diǎn)。
  【新增功能】Kong網(wǎng)關(guān)支持使用Kong Ingress Controller:Kong可以在線(xiàn)使用Kong Ingress Controller能力,方便接入你的騰訊云容器集群。
  【新增功能】Kong網(wǎng)關(guān)支持高級限流:Kong推出了高級限流插件,支持分布式限流和多時(shí)間多資源維度的請求排隊。
  【新特性】Nginx Ingress 支持使用原生 YAML 創(chuàng )建 Ingress 資源: Ingress 新流程優(yōu)化,支持 YAML 和表單兩種方式上傳。
  【新功能】Nginx Ingress 支持域名管理和證書(shū)管理:Nginx Ingress 支持管理你的域名和證書(shū)。
  注冊配置中心
  【遷移能力】 Nacos 雙注冊雙發(fā)現工具支持 Nacos Client 2.1.0 版本。
  
  【新增功能】Nacos 2.1.0.x 版本支持grpc認證。
  【新體驗】修復開(kāi)源Nacos各節點(diǎn)訂閱數據不同步的問(wèn)題。
  【新增功能】Eureka支持公網(wǎng)訪(fǎng)問(wèn)白名單:為了您的訪(fǎng)問(wèn)安全,可以在開(kāi)啟公網(wǎng)訪(fǎng)問(wèn)時(shí)配置IP白名單。
  【新增功能】Eureka支持客戶(hù)端認證:在參數配置中,支持開(kāi)啟客戶(hù)端認證功能,設置用戶(hù)賬號密碼。
  【新功能】Apollo支持修改管理員密碼和Token。
  【商業(yè)化】新增法蘭克福、東京、硅谷地區。
  服務(wù)管理中心
  【新特性】支持通過(guò)XDS v3標準協(xié)議訪(fǎng)問(wèn)官方開(kāi)源的Envoy。
  【新增功能】新增分布式限流能力,助您輕松應對流量高峰。
  
  【新增功能】新增對自定義路由規則的支持,幫助您更好地實(shí)現灰度發(fā)布等場(chǎng)景。
  【新功能】增加附近的訪(fǎng)問(wèn)能力,以幫助減少您的網(wǎng)絡(luò )延遲。
  彈性微服務(wù)
  【新特性】彈性微服務(wù)增加查看資源原生YAML功能的支持。
  【新特性】彈性微服務(wù)支持通過(guò)標簽進(jìn)行資源管理、權限配置和基于標簽的計費管理。
  【新特性】彈性微服務(wù)新增日志抽取方式,支持在log采集規則中配置JSON、單行完全正則和多行完全正則抽取模式。
  11月,宣布云原生網(wǎng)關(guān)Kong將支持根據TCP連接數進(jìn)行彈性伸縮,幫助您更好地應對流量高峰。云原生網(wǎng)關(guān) Kong 即將支持斷路器,有效保護您的后端服務(wù)。云原生網(wǎng)關(guān) Kong 即將支持高級參數重寫(xiě)功能,您可以使用運行時(shí)變量來(lái)重寫(xiě)請求/響應參數。云原生網(wǎng)關(guān) Nginx Ingress 即將支持自定義日志格式。您可以根據需要配置日志格式內容。云原生網(wǎng)關(guān) Nginx Ingress 即將支持直連彈性微服務(wù)引擎,簡(jiǎn)化您的使用。注冊與配置中心注冊與配置中心即將支持Prometheus監控,提供更多維度、更精細的可觀(guān)察性能力,幫助您及時(shí)發(fā)現業(yè)務(wù)問(wèn)題。注冊配置中心支持日志服務(wù)CLS,提供持久化日志存儲和多種采集模式配置。Nacos新增遷移功能:即將加入遷移工具的產(chǎn)品化能力,讓您輕松將自建注冊中心遷移到云端。Nacos新增監控概覽:支持查看關(guān)鍵系統和業(yè)務(wù)指標以及配置告警。Nacos 2.1.0.2 支持配置多個(gè)灰度發(fā)布。服務(wù)治理中心支持SpringCloud+eureka/nacos/consul應用無(wú)縫遷移到Polaris(javaagent)。服務(wù)管理中心即將支持接口級熔斷。Polaris 控制臺將很快支持用戶(hù)操作記錄。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。

解讀:再談 API 的撰寫(xiě) - 總覽

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2022-11-08 14:37 ? 來(lái)自相關(guān)話(huà)題

  解讀:再談 API 的撰寫(xiě) - 總覽
  背景
  去年我寫(xiě)了一篇文章 文章:編寫(xiě)合格的 REST API。當時(shí),Juniper 在德州裁掉了我們十多人的團隊。在過(guò)去的六個(gè)月里,該團隊中有一半人一直在研究 REST API。當我接手工作時(shí),我發(fā)現那些 API 寫(xiě)得很業(yè)余,沒(méi)有考慮幾個(gè)基本的 HTTP/1.1 RFC(2616、7232、5988 等)的實(shí)現,所以我花了一些時(shí)間重寫(xiě)并寫(xiě)了 文章。
  從今天來(lái)看,我當時(shí)搭建的系統也有很多問(wèn)題,很多API之外的問(wèn)題都沒(méi)有考慮:
  理想情況下,一旦編寫(xiě)了 API,它應該能夠自動(dòng)生成文檔和測試用例,并且 API 系統還應該提供一整套用于生成指標的統計 API。默認情況下,API 系統本身應該采集很多指標,例如每個(gè) API 的響應時(shí)間、狀態(tài)碼等,使用 collectd/statd 來(lái)采集信息,并可以進(jìn)一步發(fā)送給 datadog/new relic 等 APM 系統。
  在 adRise,我們有一個(gè)運行了幾年的 API 系統,不符合 RFC,(幾乎)未記錄,(幾乎)未測試,(幾乎)未監控,最糟糕的是,它既不具備開(kāi)發(fā)效率,也不具備高運營(yíng)效率。所以,在過(guò)去的一兩個(gè)月里,我領(lǐng)導了一個(gè)全新的 API 系統的開(kāi)發(fā)。
  目標
  在建立一個(gè)新的系統之前,我們需要建立一些目標。以下是我在設計 API 時(shí)寫(xiě)下的一些目標:
  其中,內省收錄兩層含義:
  選擇
  有了以上目標,下一步就是進(jìn)行技術(shù)選型。技術(shù)選擇不能獨立于團隊來(lái)完成。如果我個(gè)人選擇基礎語(yǔ)言和框架的話(huà),我可能會(huì )選擇基于 Erlang/OTP 的 Phoenix,使用 Elixir 開(kāi)發(fā)的 Phoenix,或者干脆使用 Plug(Phoenix 的基石)。因為 Plug/Phoenix 通過(guò)組合構建管道的方式符合我的思路,Elixir 對宏的支持以及 Erlang 語(yǔ)言核心的模式匹配使得路由等子系統高效、簡(jiǎn)潔、美觀(guān),而 Erlang/OTP 在高并發(fā)下具有健壯性又是一個(gè) API 系統努力的方向。
  但是,我需要考慮團隊的實(shí)際情況。在 adRise,我們使用 node.js 作為后端的主要技術(shù)棧(以及一些 PHP/Python/scala),所以 API 系統最好基于 node.js 來(lái)完成。node.js下適合寫(xiě)API的框架有很多,比如express、restify、hapi、loopback、sails.js等,綜合回顧了這些框架后,我選擇restify有三個(gè)原因:
  事實(shí)證明,這是一個(gè)相當不錯的選擇。
  基本框架設置好之后,接下來(lái)就是選擇核心組件了。第一個(gè)是驗證器。很多人在搭建系統的時(shí)候不關(guān)注驗證者,或者沒(méi)有統一的視角去看待驗證者,這樣不好。任何系統的運行環(huán)境都是一個(gè)骯臟的世界,到處都是鬼、鬼、污;而我們希望系統本身是清凈的,是極樂(lè )凈土,我們該怎么辦?
  簡(jiǎn)單、干凈的輸入和輸出。對于 API,允許使用哪些標頭、正文和查詢(xún)字符串?什么樣的響應機構有資格?這需要明確定義。所以我們需要一個(gè)合適的驗證器。如果說(shuō)選幀就像Shiro的選秀姑娘,換飛燕手會(huì )讓你眼花繚亂,選擇validator就像姜維的觀(guān)點(diǎn)??磥?lái)只能用王平和廖化了。在github上逛了半天,最后只能用joi和json schema。
  json schema其實(shí)很好用,非常接近各種API工具的schema(swagger直接使用json schema),可惜太冗長(cháng)了,讓程序員寫(xiě)這個(gè)有點(diǎn)太冗長(cháng)了:
  {
"title": "Example Schema",
"type": "object",
<p>
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}</p>
  而joi是hapi提供的validator,界面非常人性化,同樣的schema,描述的代碼量只有前者的1/3:
  joi.object().keys({
firstName: joi.string().required(),
lastName: joi.string().required(),
<p>
age: joi.number().min(0).description(&#39;Age in years&#39;),
});</p>
  而且它還可以很方便的將輸出(當然需要各種適配)反向輸出為json schema。輸出為 json 模式有什么好處?可以用來(lái)生成swagger doc!swagger 是一種 API 描述語(yǔ)言,它定義了客戶(hù)端和服務(wù)器之間的協(xié)議。swagger doc 可以生成 API 文檔和測試 UI,例如:
  在接下來(lái)的 文章 中,我將詳細介紹 swagger。
  讓我們再看看ORM。經(jīng)常使用 express 的同學(xué)應該明白,express 本身并不會(huì )過(guò)多地干擾您訪(fǎng)問(wèn)數據的方式。任何人都可以根據自己的需要使用自己需要的數據訪(fǎng)問(wèn)方式:可以是raw db access,也可以是ORM。在團隊中工作時(shí),這種靈活性會(huì )受到傷害。它使每個(gè)人都可以輕松地編寫(xiě)風(fēng)格非常不一致的代碼。而且,數據庫寫(xiě)入和讀取數據的規范化也將在沒(méi)有 ORM 的情況下帶來(lái)好處。大量的臨時(shí)代碼。因此,盡管帶有所有臭名昭著(zhù)的 ORM,我還是想在涉及數據訪(fǎng)問(wèn)的級別使用 ORM。
  我們系統的數據庫是異構的。因此,只對一種類(lèi)型的數據庫有效的純種 ORM,例如 Mongoose / Sequelize,是不適合的。最好的選擇是接口支持多種不同的數據庫。當需要特殊查詢(xún)或者操作時(shí)可以切換到原生的ORM。這樣,工程師的效率和系統的效率就達到了平衡。在 node.js 下,這樣的 ORM 并不多,似乎只有 waterline 可用。waterline 是sails.js 的開(kāi)源ORM,支持多種數據庫的混合使用。在各個(gè)數據庫無(wú)法統一的操作界面上(比如mongodb的upsert),可以很方便的將其生成的模型轉成native,直接使用數據庫。界面。
  另外,水線(xiàn)模型的schema采用json描述,便于在系統導入導出時(shí)轉換成joi schema進(jìn)行校驗。
  // waterline schema
const attributes = {
user_id: { type: &#39;integer&#39;, required: true },
content_id: { type: &#39;integer&#39;, required: true },
content_type: { type: &#39;string&#39;, required: true },
}
  接下來(lái)是日志系統。一個(gè) API 系統可能收錄多個(gè)服務(wù)器,因此需要集中采集、處理和可視化日志。一般來(lái)說(shuō),我們可以使用ELK,或者第三方服務(wù)。如果在系統設計之初就考慮日志的集中管理,那么日志的采集應該考慮結構化的結構而不是字符串。雖然用grok可以處理字符串,但畢竟效率低下,而且必須為每個(gè)日志編寫(xiě)grok表達式。由于node restify默認使用bunyan做日志,而bunyan可以生成json格式的日志,直接滿(mǎn)足了我們的需求。
  最后,讓我們看一下測試框架。一個(gè)合格的系統離不開(kāi)一個(gè)合適的測試框架。我的選擇是 ava/rewire/supertest/nyc。ava是一個(gè)單元測試框架,類(lèi)似于mocha/tape等常見(jiàn)的測試框架,解決了同樣的問(wèn)題,但是ava可以并發(fā)執行,效率很高,對es6有很好的支持,測試用例可以返回Promise,ava處理剩下的事情。有時(shí)我們需要測試一個(gè)模塊中沒(méi)有導出的函數,或者在測試的時(shí)候Mock一些我們不關(guān)心的函數。Rewire 可以輕松處理此類(lèi)問(wèn)題。supertest可以做API級別的測試,也就是功能測試,可以用nyc做測試覆蓋。
  今天就講這么多,下一次講如何構建一個(gè)API系統。
  解讀:學(xué)會(huì )這一點(diǎn),無(wú)視優(yōu)采云采集規則自動(dòng)采集發(fā)布
  做過(guò)網(wǎng)站的SEO網(wǎng)站管理員知道,如果他們想始終如一地輸出網(wǎng)站高質(zhì)量的內容。不建議靠人工編輯,一站還是可以堅持的,10、50個(gè)都很難堅持,所以我們需要用優(yōu)采云采集器這樣的文章采集器。
  首先,我們來(lái)談?wù)剝?yōu)采云車(chē)采集器,作為一款老牌采集工具,作為一款老牌采集工具,在互聯(lián)網(wǎng)采集行業(yè)站穩了腳跟。然而,隨著(zhù)互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,不便之處開(kāi)始出現。
  優(yōu)采云采集器是收費的。你可能會(huì )說(shuō)我可以使用優(yōu)采云采集器的破解版本。好吧,你可以這么說(shuō),但是使用過(guò)優(yōu)采云采集器的網(wǎng)站管理員知道,使用優(yōu)采云采集需要我們編寫(xiě)采集規則。說(shuō)哪些站長(cháng)會(huì )編碼是可以的,但大多數站長(cháng)都不懂所謂的采集規則,更別說(shuō)正則表達式了。這已經(jīng)讓不少小白站長(cháng)望而生畏。另一個(gè)原因是使用優(yōu)采云采集器采集需要的配置參數太多。例如采集批量采集頁(yè)面鏈接被添加到需要指定第一項、容差和項目數的需要中。當需要大量具有不同參數和不同頁(yè)面的采集數據時(shí),不可能為每個(gè)任務(wù)手動(dòng)設置。
  
  市場(chǎng)上有方便且功能強大的免費采集工具嗎?有些人一定有,最近找到了優(yōu)采云采集器替代產(chǎn)品,使用起來(lái)非常方便,可以采集任何新聞來(lái)源,最重要的是,它永遠免費,因為開(kāi)發(fā)人員厭倦了哪些采集軟件打著(zhù)免費的旗號,做一些有償的事情。他看穿了自己受不了了,所以干脆自己寫(xiě)了一套免費的采集工具。這里只是SEO分享,沒(méi)有推薦。
  首先,通過(guò)設置關(guān)鍵詞,選擇
  
  采集數據源,選擇文章 采集的存儲路徑,選擇關(guān)鍵詞采集中的文章數,然后鍵入并接收,整個(gè)過(guò)程不到1分鐘。每天掛斷電話(huà)采集還要同步完成發(fā)布任務(wù)和推送任務(wù)。
  搜索引擎優(yōu)化是多維的。我們需要做好SEO站內優(yōu)化和站外華,我們站長(cháng)的每一個(gè)環(huán)節都做得很好,那么你網(wǎng)站不被搜索引擎喜歡就沒(méi)有意義了。這就是今天分享的全部?jì)热?,或者那句?huà)我受到啟發(fā)成為一名 SEO 布道者,我對分享 SEO 是認真的。不明白可以留言評論區,點(diǎn)贊關(guān)注,下期我會(huì )分享更多SEO相關(guān)的干貨! 查看全部

  解讀:再談 API 的撰寫(xiě) - 總覽
  背景
  去年我寫(xiě)了一篇文章 文章:編寫(xiě)合格的 REST API。當時(shí),Juniper 在德州裁掉了我們十多人的團隊。在過(guò)去的六個(gè)月里,該團隊中有一半人一直在研究 REST API。當我接手工作時(shí),我發(fā)現那些 API 寫(xiě)得很業(yè)余,沒(méi)有考慮幾個(gè)基本的 HTTP/1.1 RFC(2616、7232、5988 等)的實(shí)現,所以我花了一些時(shí)間重寫(xiě)并寫(xiě)了 文章。
  從今天來(lái)看,我當時(shí)搭建的系統也有很多問(wèn)題,很多API之外的問(wèn)題都沒(méi)有考慮:
  理想情況下,一旦編寫(xiě)了 API,它應該能夠自動(dòng)生成文檔和測試用例,并且 API 系統還應該提供一整套用于生成指標的統計 API。默認情況下,API 系統本身應該采集很多指標,例如每個(gè) API 的響應時(shí)間、狀態(tài)碼等,使用 collectd/statd 來(lái)采集信息,并可以進(jìn)一步發(fā)送給 datadog/new relic 等 APM 系統。
  在 adRise,我們有一個(gè)運行了幾年的 API 系統,不符合 RFC,(幾乎)未記錄,(幾乎)未測試,(幾乎)未監控,最糟糕的是,它既不具備開(kāi)發(fā)效率,也不具備高運營(yíng)效率。所以,在過(guò)去的一兩個(gè)月里,我領(lǐng)導了一個(gè)全新的 API 系統的開(kāi)發(fā)。
  目標
  在建立一個(gè)新的系統之前,我們需要建立一些目標。以下是我在設計 API 時(shí)寫(xiě)下的一些目標:
  其中,內省收錄兩層含義:
  選擇
  有了以上目標,下一步就是進(jìn)行技術(shù)選型。技術(shù)選擇不能獨立于團隊來(lái)完成。如果我個(gè)人選擇基礎語(yǔ)言和框架的話(huà),我可能會(huì )選擇基于 Erlang/OTP 的 Phoenix,使用 Elixir 開(kāi)發(fā)的 Phoenix,或者干脆使用 Plug(Phoenix 的基石)。因為 Plug/Phoenix 通過(guò)組合構建管道的方式符合我的思路,Elixir 對宏的支持以及 Erlang 語(yǔ)言核心的模式匹配使得路由等子系統高效、簡(jiǎn)潔、美觀(guān),而 Erlang/OTP 在高并發(fā)下具有健壯性又是一個(gè) API 系統努力的方向。
  但是,我需要考慮團隊的實(shí)際情況。在 adRise,我們使用 node.js 作為后端的主要技術(shù)棧(以及一些 PHP/Python/scala),所以 API 系統最好基于 node.js 來(lái)完成。node.js下適合寫(xiě)API的框架有很多,比如express、restify、hapi、loopback、sails.js等,綜合回顧了這些框架后,我選擇restify有三個(gè)原因:
  事實(shí)證明,這是一個(gè)相當不錯的選擇。
  基本框架設置好之后,接下來(lái)就是選擇核心組件了。第一個(gè)是驗證器。很多人在搭建系統的時(shí)候不關(guān)注驗證者,或者沒(méi)有統一的視角去看待驗證者,這樣不好。任何系統的運行環(huán)境都是一個(gè)骯臟的世界,到處都是鬼、鬼、污;而我們希望系統本身是清凈的,是極樂(lè )凈土,我們該怎么辦?
  簡(jiǎn)單、干凈的輸入和輸出。對于 API,允許使用哪些標頭、正文和查詢(xún)字符串?什么樣的響應機構有資格?這需要明確定義。所以我們需要一個(gè)合適的驗證器。如果說(shuō)選幀就像Shiro的選秀姑娘,換飛燕手會(huì )讓你眼花繚亂,選擇validator就像姜維的觀(guān)點(diǎn)??磥?lái)只能用王平和廖化了。在github上逛了半天,最后只能用joi和json schema。
  json schema其實(shí)很好用,非常接近各種API工具的schema(swagger直接使用json schema),可惜太冗長(cháng)了,讓程序員寫(xiě)這個(gè)有點(diǎn)太冗長(cháng)了:
  {
"title": "Example Schema",
"type": "object",
<p>
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}</p>
  而joi是hapi提供的validator,界面非常人性化,同樣的schema,描述的代碼量只有前者的1/3:
  joi.object().keys({
firstName: joi.string().required(),
lastName: joi.string().required(),
<p>
age: joi.number().min(0).description(&#39;Age in years&#39;),
});</p>
  而且它還可以很方便的將輸出(當然需要各種適配)反向輸出為json schema。輸出為 json 模式有什么好處?可以用來(lái)生成swagger doc!swagger 是一種 API 描述語(yǔ)言,它定義了客戶(hù)端和服務(wù)器之間的協(xié)議。swagger doc 可以生成 API 文檔和測試 UI,例如:
  在接下來(lái)的 文章 中,我將詳細介紹 swagger。
  讓我們再看看ORM。經(jīng)常使用 express 的同學(xué)應該明白,express 本身并不會(huì )過(guò)多地干擾您訪(fǎng)問(wèn)數據的方式。任何人都可以根據自己的需要使用自己需要的數據訪(fǎng)問(wèn)方式:可以是raw db access,也可以是ORM。在團隊中工作時(shí),這種靈活性會(huì )受到傷害。它使每個(gè)人都可以輕松地編寫(xiě)風(fēng)格非常不一致的代碼。而且,數據庫寫(xiě)入和讀取數據的規范化也將在沒(méi)有 ORM 的情況下帶來(lái)好處。大量的臨時(shí)代碼。因此,盡管帶有所有臭名昭著(zhù)的 ORM,我還是想在涉及數據訪(fǎng)問(wèn)的級別使用 ORM。
  我們系統的數據庫是異構的。因此,只對一種類(lèi)型的數據庫有效的純種 ORM,例如 Mongoose / Sequelize,是不適合的。最好的選擇是接口支持多種不同的數據庫。當需要特殊查詢(xún)或者操作時(shí)可以切換到原生的ORM。這樣,工程師的效率和系統的效率就達到了平衡。在 node.js 下,這樣的 ORM 并不多,似乎只有 waterline 可用。waterline 是sails.js 的開(kāi)源ORM,支持多種數據庫的混合使用。在各個(gè)數據庫無(wú)法統一的操作界面上(比如mongodb的upsert),可以很方便的將其生成的模型轉成native,直接使用數據庫。界面。
  另外,水線(xiàn)模型的schema采用json描述,便于在系統導入導出時(shí)轉換成joi schema進(jìn)行校驗。
  // waterline schema
const attributes = {
user_id: { type: &#39;integer&#39;, required: true },
content_id: { type: &#39;integer&#39;, required: true },
content_type: { type: &#39;string&#39;, required: true },
}
  接下來(lái)是日志系統。一個(gè) API 系統可能收錄多個(gè)服務(wù)器,因此需要集中采集、處理和可視化日志。一般來(lái)說(shuō),我們可以使用ELK,或者第三方服務(wù)。如果在系統設計之初就考慮日志的集中管理,那么日志的采集應該考慮結構化的結構而不是字符串。雖然用grok可以處理字符串,但畢竟效率低下,而且必須為每個(gè)日志編寫(xiě)grok表達式。由于node restify默認使用bunyan做日志,而bunyan可以生成json格式的日志,直接滿(mǎn)足了我們的需求。
  最后,讓我們看一下測試框架。一個(gè)合格的系統離不開(kāi)一個(gè)合適的測試框架。我的選擇是 ava/rewire/supertest/nyc。ava是一個(gè)單元測試框架,類(lèi)似于mocha/tape等常見(jiàn)的測試框架,解決了同樣的問(wèn)題,但是ava可以并發(fā)執行,效率很高,對es6有很好的支持,測試用例可以返回Promise,ava處理剩下的事情。有時(shí)我們需要測試一個(gè)模塊中沒(méi)有導出的函數,或者在測試的時(shí)候Mock一些我們不關(guān)心的函數。Rewire 可以輕松處理此類(lèi)問(wèn)題。supertest可以做API級別的測試,也就是功能測試,可以用nyc做測試覆蓋。
  今天就講這么多,下一次講如何構建一個(gè)API系統。
  解讀:學(xué)會(huì )這一點(diǎn),無(wú)視優(yōu)采云采集規則自動(dòng)采集發(fā)布
  做過(guò)網(wǎng)站的SEO網(wǎng)站管理員知道,如果他們想始終如一地輸出網(wǎng)站高質(zhì)量的內容。不建議靠人工編輯,一站還是可以堅持的,10、50個(gè)都很難堅持,所以我們需要用優(yōu)采云采集器這樣的文章采集器。
  首先,我們來(lái)談?wù)剝?yōu)采云車(chē)采集器,作為一款老牌采集工具,作為一款老牌采集工具,在互聯(lián)網(wǎng)采集行業(yè)站穩了腳跟。然而,隨著(zhù)互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,不便之處開(kāi)始出現。
  優(yōu)采云采集器是收費的。你可能會(huì )說(shuō)我可以使用優(yōu)采云采集器的破解版本。好吧,你可以這么說(shuō),但是使用過(guò)優(yōu)采云采集器的網(wǎng)站管理員知道,使用優(yōu)采云采集需要我們編寫(xiě)采集規則。說(shuō)哪些站長(cháng)會(huì )編碼是可以的,但大多數站長(cháng)都不懂所謂的采集規則,更別說(shuō)正則表達式了。這已經(jīng)讓不少小白站長(cháng)望而生畏。另一個(gè)原因是使用優(yōu)采云采集器采集需要的配置參數太多。例如采集批量采集頁(yè)面鏈接被添加到需要指定第一項、容差和項目數的需要中。當需要大量具有不同參數和不同頁(yè)面的采集數據時(shí),不可能為每個(gè)任務(wù)手動(dòng)設置。
  
  市場(chǎng)上有方便且功能強大的免費采集工具嗎?有些人一定有,最近找到了優(yōu)采云采集器替代產(chǎn)品,使用起來(lái)非常方便,可以采集任何新聞來(lái)源,最重要的是,它永遠免費,因為開(kāi)發(fā)人員厭倦了哪些采集軟件打著(zhù)免費的旗號,做一些有償的事情。他看穿了自己受不了了,所以干脆自己寫(xiě)了一套免費的采集工具。這里只是SEO分享,沒(méi)有推薦。
  首先,通過(guò)設置關(guān)鍵詞,選擇
  
  采集數據源,選擇文章 采集的存儲路徑,選擇關(guān)鍵詞采集中的文章數,然后鍵入并接收,整個(gè)過(guò)程不到1分鐘。每天掛斷電話(huà)采集還要同步完成發(fā)布任務(wù)和推送任務(wù)。
  搜索引擎優(yōu)化是多維的。我們需要做好SEO站內優(yōu)化和站外華,我們站長(cháng)的每一個(gè)環(huán)節都做得很好,那么你網(wǎng)站不被搜索引擎喜歡就沒(méi)有意義了。這就是今天分享的全部?jì)热?,或者那句?huà)我受到啟發(fā)成為一名 SEO 布道者,我對分享 SEO 是認真的。不明白可以留言評論區,點(diǎn)贊關(guān)注,下期我會(huì )分享更多SEO相關(guān)的干貨!

完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-11-07 17:14 ? 來(lái)自相關(guān)話(huà)題

  完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單
  本文分享自華為云社區《我用凱天平臺做一個(gè)字符串校驗API【凱天aPaaS之戰】-云社區-華為云》,作者:星星閃耀。
  1 開(kāi)天集成工作臺概述
  據華為官方文檔介紹,所謂華為云開(kāi)天集成工作臺是基于華為豐富的數字化轉型經(jīng)驗,為企業(yè)開(kāi)發(fā)者提供基于元數據的可擴展集成框架,減少應用間集成的工作量,沉淀連接器、業(yè)務(wù)模型、行業(yè)API等多種集成資產(chǎn),幫助客戶(hù)快速建立SaaS應用之間的連接通道,打破信息孤島和“煙囪”架構,實(shí)現快速搭建上線(xiàn)應用,不斷提升用戶(hù)體驗。
  該產(chǎn)品的官方網(wǎng)站是:. 凱天集成工作臺整體架構示意圖如下圖所示:
  凱天集成工作臺使合作伙伴能夠高效地將SaaS上云,與合作伙伴共同構建行業(yè)解決方案,共同積累和分享行業(yè)經(jīng)驗。開(kāi)天集成工作臺提供以下核心能力:
  (01) 標準數據模型管理:領(lǐng)域信息模型的采集、定義、管理能力支持建立行業(yè)標準領(lǐng)域信息模型庫,行業(yè)各廠(chǎng)商應用依托用于互連的標準域信息模型。
  (02) 靈活的API生命周期管理:支持合作伙伴的API設計、實(shí)現、測試、發(fā)布、運維、消費和運營(yíng),可以封裝成連接器和流,方便編排。
  (03) 可擴展的連接器管理:是擴展集成工作臺的流程編排能力的唯一途徑,提供豐富的預設連接器,用戶(hù)也可以基于A(yíng)PI自定義連接器。
  (04) 可視化流管理:基于連接器,以可視化的方式進(jìn)行流組合,實(shí)現一體化流編排。該擴展支持各種形式的編排,例如流程編排、事件編排等。
  凱天集成工作臺的優(yōu)勢如下:
  (01)豐富的行業(yè)經(jīng)驗:面向行業(yè)的業(yè)務(wù)模型庫,連接管理者、業(yè)務(wù)人員和IT人員。行業(yè)能力基于A(yíng)PI,覆蓋行業(yè)、城市治理、教育、辦公、消息、地圖、移動(dòng)應用等領(lǐng)域。SaaS應用之間的集成資產(chǎn)多樣化,開(kāi)箱即用,降低交付復雜度。
  (02) 靈活易用的集成:基于標準業(yè)務(wù)模型的集成模式,每個(gè)應用只需集成一次,使XYZ變成X+Y+Z。開(kāi)放的連接框架可以靈活定義各種連接器和流,以適應企業(yè)的業(yè)務(wù)邏輯。
  2 凱天集成工作臺用戶(hù)及應用場(chǎng)景
  凱天集成工作臺是一個(gè)“開(kāi)放、共生、智能、協(xié)同”的平臺,是開(kāi)發(fā)者、系統集成商和客戶(hù)之間的“橋梁”和“紐帶”。具體來(lái)說(shuō),用戶(hù)可以分為以下幾類(lèi):
  (01) 面向行業(yè)API開(kāi)發(fā)者:一站式完成行業(yè)API設計、編排、測試、發(fā)布、消費,打造API商業(yè)經(jīng)濟。
  (02) 面向行業(yè)應用開(kāi)發(fā)者:以低代碼或零代碼的方式輕松構建面向行業(yè)的SaaS應用,加速業(yè)務(wù)創(chuàng )新。
  (03) 對于系統集成商:與客戶(hù)無(wú)縫對接、集成開(kāi)發(fā)、項目交付和運維支持。同時(shí)積累云項目的綜合資產(chǎn),提高交付效率。
 ?。?4)以客戶(hù)為中心:企業(yè)集成資產(chǎn)的使用和管理,與系統集成商等生態(tài)資源合作,完成企業(yè)數字化平臺建設。
  凱天集成工作臺的應用場(chǎng)景也非常豐富,主要可以分為三類(lèi)應用場(chǎng)景:
 ?。?1)行業(yè)能力開(kāi)放場(chǎng)景。企業(yè)以API服務(wù)的形式開(kāi)放能力,通過(guò)API連接應用開(kāi)發(fā)者、系統集成商等,服務(wù)更多業(yè)務(wù)場(chǎng)景,快速形成產(chǎn)業(yè)鏈,讓企業(yè)用最低成本。滿(mǎn)足客戶(hù)分散且不斷增長(cháng)的需求。
  (02) 賦能行業(yè)應用創(chuàng )新場(chǎng)景,合作伙伴可以通過(guò)集成工作臺提供的低代碼/零代碼方式,輕松利用行業(yè)API、業(yè)務(wù)模型、連接器等各種資產(chǎn)完成應用開(kāi)發(fā)和部署;賦能不同層次的開(kāi)發(fā)者,大大提升企業(yè)應用的供給能力。
  (03) SaaS應用互聯(lián)場(chǎng)景下,企業(yè)應用建設隨著(zhù)業(yè)務(wù)發(fā)展逐步展開(kāi),需要解決現有企業(yè)應用與新應用的協(xié)同。通過(guò)在應用程序之間建立水管,價(jià)值信息可以在企業(yè)內部和企業(yè)之間流動(dòng)。通過(guò)集成工作臺,可以實(shí)現云應用、云應用和企業(yè)內部應用的集成??梢杂孟聢D來(lái)說(shuō)明:
  3 字符串檢查 API 快速構建
  首先在集成工作臺中進(jìn)入API生命周期管理的API組,點(diǎn)擊右上角新建組,輸入名稱(chēng)和描述。創(chuàng )建群組后,點(diǎn)擊API管理,進(jìn)入新建群組下的API管理頁(yè)面。
  
  進(jìn)入API管理頁(yè)面后,我們可以先在右上角創(chuàng )建一個(gè)API,進(jìn)入API創(chuàng )建頁(yè)面。
  根據您的需要輸入所有信息。
  這里的認證方式可以根據自己的需要定制。此處,為簡(jiǎn)單起見(jiàn),不選擇身份驗證(不推薦)。
  然后點(diǎn)擊下一步,自定義訪(fǎng)問(wèn)API的路徑,以及請求方式,是否支持跨域,底部的參數定義也很重要,根據需要選擇參數位置、名稱(chēng)、類(lèi)型、選項等.
  定義參數后,圖像類(lèi)似于下圖。
  單擊下一步以定義后端服務(wù)。這里有三個(gè)選項,一個(gè)是后端服務(wù),也就是API接口,一個(gè)是華為云中定義的功能流程圖,另一個(gè)是mock(我不太了解),這里我用的是華為CLOUD 的功能流程圖。
  可以看到這里需要選擇函數,但是此時(shí)我們沒(méi)有函數可以選擇,所以我們需要先創(chuàng )建一個(gè)函數。
  在添加選項的彈出頁(yè)面左上角點(diǎn)擊創(chuàng )建函數,進(jìn)入函數創(chuàng )建頁(yè)面。
  這里我們選擇相關(guān)信息,選擇事件函數。此處delegate暫時(shí)不可用,因此我們選擇不使用任何delegate和python3.x的環(huán)境運行時(shí)。當然,這里我們可以看到按用量收費的提示。按照華為云的規則,每個(gè)月的請求數都在百萬(wàn)以上,所以這里只是我們個(gè)人的開(kāi)發(fā)和早期使用,不用擔心收費問(wèn)題。
  創(chuàng )建完成后,進(jìn)入功能管理頁(yè)面,
  下面我們可以寫(xiě)函數,我們可以寫(xiě)一個(gè)簡(jiǎn)單的字符串檢查函數。
  `# -
  - 編碼:utf-8 -
  -
  導入json
  從集合導入計數器
  #自定義函數
  def is_anagram(s1, s2):
  返回計數器(s1)==計數器(s2)
  def 處理程序(事件,上下文):
  query=event.get("queryStringParameters")
  s1 = str(查詢(xún)["word1"])
  s2 = str(查詢(xún)["word2"])
  
  res = '%s 和 %s 是 %s' % (s1, s2, is_anagram(s1, s2))
  返回 {
  “狀態(tài)碼”:200,
  “isBase64Encoded”:錯誤,
  “身體”:水庫,
  “標題”:{
  “內容類(lèi)型”:“應用程序/json”
  }
  }`
  在這個(gè)handler的預定義函數及其定義的兩個(gè)形參中,event是代表請求的信息,比如body、headers等(上下文暫時(shí)不太了解)。至于queryStringParameters的鍵名,是根據華為云的文檔找到的。這個(gè)地方也琢磨了很久,之前定義的query中的數據之前都沒(méi)有拿到。
  看這里:
  然后單擊、設置、選擇觸發(fā)器,并創(chuàng )建一個(gè)新觸發(fā)器。
  根據需要定義,但為簡(jiǎn)單起見(jiàn)仍選擇不進(jìn)行身份驗證。創(chuàng )建完成后,可以獲取調用url的地址。
  復制網(wǎng)址并在瀏覽器中進(jìn)行測試。
  得到了答案。
  這與我們定義的預期結果一致。
  至此,函數工作流創(chuàng )建完成,我們回到之前的API創(chuàng )建頁(yè)面。
  在骨灰盒選擇頁(yè)面我們選擇剛才定義的函數流。
  并在底部定義前后端功能映射。
  單擊下一步,我們定義一個(gè) API 相應地是成功還是失敗的示例。
  至此,API 就創(chuàng )建好了。我們可以直接點(diǎn)擊發(fā)布API,進(jìn)入API的管理頁(yè)面。我們可以查看API的url。同樣,我們可以在瀏覽器中測試和使用它。
  點(diǎn)擊下方,第一時(shí)間了解華為云新技術(shù)~
  華為云博客_大數據博客_AI博客_云計算博客_開(kāi)發(fā)者中心-華為云
  教程:英文偽原創(chuàng )怎么做? 3個(gè)步驟搞定
  做英文網(wǎng)站 SEO必然會(huì )提到英文內容創(chuàng )作。但是作為一個(gè)中國人,我的英文不好,寫(xiě)不出高質(zhì)量的內容,很是苦惱。不過(guò)沒(méi)關(guān)系,如果你能掌握英文偽原創(chuàng )技巧,你也可以用蹩腳的英文寫(xiě)出高質(zhì)量的內容,獲得更好的關(guān)鍵詞排名。
  下面我們來(lái)看看英文偽原創(chuàng )應該怎么做,有哪些需要注意的地方。
  偽原創(chuàng )關(guān)于英文內容大致可以分為三個(gè)部分。
  文字變化;形式的變化;偽原創(chuàng ) 圖片。1. 換字的具體方法 方法#1 使用工具進(jìn)行機械改寫(xiě)
  這里我們會(huì )用到一個(gè)工具:Small SEO tools的文章重寫(xiě)工具(需要科學(xué)上網(wǎng))。這是一個(gè)免費的 文章 自動(dòng)重寫(xiě)工具,可以將任何指定的文本內容重寫(xiě)為可讀文本。
  使用方法:將別人的全文放入輸入框,點(diǎn)擊【重寫(xiě)文章】按鈕。該工具可以對 文章 中的常用名詞進(jìn)行同義詞替換。同時(shí),在某些情況下,語(yǔ)句的形式也可以改變。
  彩色部分是本工具改寫(xiě)的內容
  目前只支持英文,不支持其他小語(yǔ)種。
  使用此工具重寫(xiě)的文本實(shí)際上不是特別可讀。所以你仍然可以手動(dòng)完成。
  如果你有時(shí)間,我建議你使用文字 偽原創(chuàng ) 的第二種方法。
  方法 #2 使用 LSI關(guān)鍵詞 手動(dòng)重寫(xiě)
  這種方法是在別人的文字內容的基礎上增加更多的相關(guān)詞(LSI關(guān)鍵詞),從而實(shí)現內容偽原創(chuàng )。
  
  比如我們現在找到這樣一個(gè)關(guān)鍵詞[太陽(yáng)能熱水器]和別人的一段文字,如下圖:
  別人的文字
  現在找到【太陽(yáng)能熱水器】的LSI關(guān)鍵詞,自然添加,或者改寫(xiě)成原文。
  重寫(xiě)后結果的彩色部分是 LSI關(guān)鍵詞
  這種方法的缺點(diǎn):它會(huì )花費更長(cháng)的時(shí)間,但這也是它的優(yōu)點(diǎn) - 內容會(huì )更相關(guān)。
  2. 文章形式的變化
  文本的形式有很多變化。例如,您可以將其他人的段落替換為列表、列表替換為表格,或者將表格替換為文本段落。例如,假設您引用競爭對手的產(chǎn)品參數部分,這是一個(gè)表格。這時(shí)可以以文本段落(句子)等形式改寫(xiě)表格中的參數。
  做B端產(chǎn)品的人應該都知道阿里巴巴國際站吧?也許你可以搜索一個(gè)詞,你可以看到阿里巴巴國際站的排名。
  有很多人會(huì )說(shuō):“廢話(huà),其他用戶(hù)會(huì )寫(xiě)頁(yè)面,內容很多”。
  我可以告訴你:阿里巴巴國際站50%的頁(yè)面不是UGC頁(yè)面,而是阿里巴巴自己生成的搜索聚合頁(yè)面!同時(shí),那些頁(yè)面上的內容不是阿里員工一一手工打出來(lái)的,而是機器生成的,基本是0時(shí)間!
  想知道怎么做?事實(shí)上,它是一種變化形式。想了解詳情的可以加我微信(mbkf6666),一句話(huà)解惑。
  
  3. 偽原創(chuàng ) 圖片
  內容不僅僅是文字,還包括圖片、視頻、音頻等。因此,內容的偽原創(chuàng )和圖片的偽原創(chuàng )的核心。這一點(diǎn)在學(xué)習谷歌SEO的時(shí)候一定要牢記。有些頁(yè)面沒(méi)有流量(沒(méi)有排名)。其實(shí)問(wèn)題不在于文字或外鏈,而在于圖片。
  經(jīng)常采集的朋友會(huì )經(jīng)常采集和別人的照片網(wǎng)站。但是你有沒(méi)有發(fā)現,你的采集后面的圖片在被爬取之后其實(shí)并沒(méi)有被谷歌索引,或者索引率很低。
  當您對圖片進(jìn)行一些調整時(shí),無(wú)論圖片索引如何,附加頁(yè)面也會(huì )被索引,您仍然可以參與排名。
  這時(shí)候你肯定想說(shuō):“我不能一張一張修改圖片嗎?”。當然不是,但是有了圖片,你確實(shí)需要花一些時(shí)間來(lái)處理它。
  如何處理?我給你一個(gè)更好的方法:拼圖。
  通過(guò)拼接兩個(gè)具有相似背景顏色(最好相同)的圖像來(lái)創(chuàng )建一個(gè)新圖像。這個(gè)做法已經(jīng)試過(guò)了,搜索引擎不識別為偽原創(chuàng ),相關(guān)性還不錯。
  一點(diǎn)建議
  很多人可能認為英文內容偽原創(chuàng )消耗的時(shí)間少,所以偽原創(chuàng )可能是最好的選擇。
  其實(shí)不,我給你的建議是自己制作有價(jià)值的內容,而不是一味的模仿和抄襲。建議大家閱讀文章《如何用英文做內容原創(chuàng )》一文,相信你會(huì )有一些啟發(fā)。
  同時(shí),在效率方面,自己制作內容的效率其實(shí)會(huì )更高。畢竟,最了解產(chǎn)品的不是機器,而是你自己。
  相關(guān)性 文章LSI關(guān)鍵詞 – 為什么暴力會(huì )增加英語(yǔ)中的相關(guān)性 關(guān)鍵詞 單數和復數形式的排名不同?英文原創(chuàng )文章英文怎么寫(xiě)不容易寫(xiě)原創(chuàng ) 查看全部

  完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單
  本文分享自華為云社區《我用凱天平臺做一個(gè)字符串校驗API【凱天aPaaS之戰】-云社區-華為云》,作者:星星閃耀。
  1 開(kāi)天集成工作臺概述
  據華為官方文檔介紹,所謂華為云開(kāi)天集成工作臺是基于華為豐富的數字化轉型經(jīng)驗,為企業(yè)開(kāi)發(fā)者提供基于元數據的可擴展集成框架,減少應用間集成的工作量,沉淀連接器、業(yè)務(wù)模型、行業(yè)API等多種集成資產(chǎn),幫助客戶(hù)快速建立SaaS應用之間的連接通道,打破信息孤島和“煙囪”架構,實(shí)現快速搭建上線(xiàn)應用,不斷提升用戶(hù)體驗。
  該產(chǎn)品的官方網(wǎng)站是:. 凱天集成工作臺整體架構示意圖如下圖所示:
  凱天集成工作臺使合作伙伴能夠高效地將SaaS上云,與合作伙伴共同構建行業(yè)解決方案,共同積累和分享行業(yè)經(jīng)驗。開(kāi)天集成工作臺提供以下核心能力:
  (01) 標準數據模型管理:領(lǐng)域信息模型的采集、定義、管理能力支持建立行業(yè)標準領(lǐng)域信息模型庫,行業(yè)各廠(chǎng)商應用依托用于互連的標準域信息模型。
  (02) 靈活的API生命周期管理:支持合作伙伴的API設計、實(shí)現、測試、發(fā)布、運維、消費和運營(yíng),可以封裝成連接器和流,方便編排。
  (03) 可擴展的連接器管理:是擴展集成工作臺的流程編排能力的唯一途徑,提供豐富的預設連接器,用戶(hù)也可以基于A(yíng)PI自定義連接器。
  (04) 可視化流管理:基于連接器,以可視化的方式進(jìn)行流組合,實(shí)現一體化流編排。該擴展支持各種形式的編排,例如流程編排、事件編排等。
  凱天集成工作臺的優(yōu)勢如下:
  (01)豐富的行業(yè)經(jīng)驗:面向行業(yè)的業(yè)務(wù)模型庫,連接管理者、業(yè)務(wù)人員和IT人員。行業(yè)能力基于A(yíng)PI,覆蓋行業(yè)、城市治理、教育、辦公、消息、地圖、移動(dòng)應用等領(lǐng)域。SaaS應用之間的集成資產(chǎn)多樣化,開(kāi)箱即用,降低交付復雜度。
  (02) 靈活易用的集成:基于標準業(yè)務(wù)模型的集成模式,每個(gè)應用只需集成一次,使XYZ變成X+Y+Z。開(kāi)放的連接框架可以靈活定義各種連接器和流,以適應企業(yè)的業(yè)務(wù)邏輯。
  2 凱天集成工作臺用戶(hù)及應用場(chǎng)景
  凱天集成工作臺是一個(gè)“開(kāi)放、共生、智能、協(xié)同”的平臺,是開(kāi)發(fā)者、系統集成商和客戶(hù)之間的“橋梁”和“紐帶”。具體來(lái)說(shuō),用戶(hù)可以分為以下幾類(lèi):
  (01) 面向行業(yè)API開(kāi)發(fā)者:一站式完成行業(yè)API設計、編排、測試、發(fā)布、消費,打造API商業(yè)經(jīng)濟。
  (02) 面向行業(yè)應用開(kāi)發(fā)者:以低代碼或零代碼的方式輕松構建面向行業(yè)的SaaS應用,加速業(yè)務(wù)創(chuàng )新。
  (03) 對于系統集成商:與客戶(hù)無(wú)縫對接、集成開(kāi)發(fā)、項目交付和運維支持。同時(shí)積累云項目的綜合資產(chǎn),提高交付效率。
 ?。?4)以客戶(hù)為中心:企業(yè)集成資產(chǎn)的使用和管理,與系統集成商等生態(tài)資源合作,完成企業(yè)數字化平臺建設。
  凱天集成工作臺的應用場(chǎng)景也非常豐富,主要可以分為三類(lèi)應用場(chǎng)景:
 ?。?1)行業(yè)能力開(kāi)放場(chǎng)景。企業(yè)以API服務(wù)的形式開(kāi)放能力,通過(guò)API連接應用開(kāi)發(fā)者、系統集成商等,服務(wù)更多業(yè)務(wù)場(chǎng)景,快速形成產(chǎn)業(yè)鏈,讓企業(yè)用最低成本。滿(mǎn)足客戶(hù)分散且不斷增長(cháng)的需求。
  (02) 賦能行業(yè)應用創(chuàng )新場(chǎng)景,合作伙伴可以通過(guò)集成工作臺提供的低代碼/零代碼方式,輕松利用行業(yè)API、業(yè)務(wù)模型、連接器等各種資產(chǎn)完成應用開(kāi)發(fā)和部署;賦能不同層次的開(kāi)發(fā)者,大大提升企業(yè)應用的供給能力。
  (03) SaaS應用互聯(lián)場(chǎng)景下,企業(yè)應用建設隨著(zhù)業(yè)務(wù)發(fā)展逐步展開(kāi),需要解決現有企業(yè)應用與新應用的協(xié)同。通過(guò)在應用程序之間建立水管,價(jià)值信息可以在企業(yè)內部和企業(yè)之間流動(dòng)。通過(guò)集成工作臺,可以實(shí)現云應用、云應用和企業(yè)內部應用的集成??梢杂孟聢D來(lái)說(shuō)明:
  3 字符串檢查 API 快速構建
  首先在集成工作臺中進(jìn)入API生命周期管理的API組,點(diǎn)擊右上角新建組,輸入名稱(chēng)和描述。創(chuàng )建群組后,點(diǎn)擊API管理,進(jìn)入新建群組下的API管理頁(yè)面。
  
  進(jìn)入API管理頁(yè)面后,我們可以先在右上角創(chuàng )建一個(gè)API,進(jìn)入API創(chuàng )建頁(yè)面。
  根據您的需要輸入所有信息。
  這里的認證方式可以根據自己的需要定制。此處,為簡(jiǎn)單起見(jiàn),不選擇身份驗證(不推薦)。
  然后點(diǎn)擊下一步,自定義訪(fǎng)問(wèn)API的路徑,以及請求方式,是否支持跨域,底部的參數定義也很重要,根據需要選擇參數位置、名稱(chēng)、類(lèi)型、選項等.
  定義參數后,圖像類(lèi)似于下圖。
  單擊下一步以定義后端服務(wù)。這里有三個(gè)選項,一個(gè)是后端服務(wù),也就是API接口,一個(gè)是華為云中定義的功能流程圖,另一個(gè)是mock(我不太了解),這里我用的是華為CLOUD 的功能流程圖。
  可以看到這里需要選擇函數,但是此時(shí)我們沒(méi)有函數可以選擇,所以我們需要先創(chuàng )建一個(gè)函數。
  在添加選項的彈出頁(yè)面左上角點(diǎn)擊創(chuàng )建函數,進(jìn)入函數創(chuàng )建頁(yè)面。
  這里我們選擇相關(guān)信息,選擇事件函數。此處delegate暫時(shí)不可用,因此我們選擇不使用任何delegate和python3.x的環(huán)境運行時(shí)。當然,這里我們可以看到按用量收費的提示。按照華為云的規則,每個(gè)月的請求數都在百萬(wàn)以上,所以這里只是我們個(gè)人的開(kāi)發(fā)和早期使用,不用擔心收費問(wèn)題。
  創(chuàng )建完成后,進(jìn)入功能管理頁(yè)面,
  下面我們可以寫(xiě)函數,我們可以寫(xiě)一個(gè)簡(jiǎn)單的字符串檢查函數。
  `# -
  - 編碼:utf-8 -
  -
  導入json
  從集合導入計數器
  #自定義函數
  def is_anagram(s1, s2):
  返回計數器(s1)==計數器(s2)
  def 處理程序(事件,上下文):
  query=event.get("queryStringParameters")
  s1 = str(查詢(xún)["word1"])
  s2 = str(查詢(xún)["word2"])
  
  res = '%s 和 %s 是 %s' % (s1, s2, is_anagram(s1, s2))
  返回 {
  “狀態(tài)碼”:200,
  “isBase64Encoded”:錯誤,
  “身體”:水庫,
  “標題”:{
  “內容類(lèi)型”:“應用程序/json”
  }
  }`
  在這個(gè)handler的預定義函數及其定義的兩個(gè)形參中,event是代表請求的信息,比如body、headers等(上下文暫時(shí)不太了解)。至于queryStringParameters的鍵名,是根據華為云的文檔找到的。這個(gè)地方也琢磨了很久,之前定義的query中的數據之前都沒(méi)有拿到。
  看這里:
  然后單擊、設置、選擇觸發(fā)器,并創(chuàng )建一個(gè)新觸發(fā)器。
  根據需要定義,但為簡(jiǎn)單起見(jiàn)仍選擇不進(jìn)行身份驗證。創(chuàng )建完成后,可以獲取調用url的地址。
  復制網(wǎng)址并在瀏覽器中進(jìn)行測試。
  得到了答案。
  這與我們定義的預期結果一致。
  至此,函數工作流創(chuàng )建完成,我們回到之前的API創(chuàng )建頁(yè)面。
  在骨灰盒選擇頁(yè)面我們選擇剛才定義的函數流。
  并在底部定義前后端功能映射。
  單擊下一步,我們定義一個(gè) API 相應地是成功還是失敗的示例。
  至此,API 就創(chuàng )建好了。我們可以直接點(diǎn)擊發(fā)布API,進(jìn)入API的管理頁(yè)面。我們可以查看API的url。同樣,我們可以在瀏覽器中測試和使用它。
  點(diǎn)擊下方,第一時(shí)間了解華為云新技術(shù)~
  華為云博客_大數據博客_AI博客_云計算博客_開(kāi)發(fā)者中心-華為云
  教程:英文偽原創(chuàng )怎么做? 3個(gè)步驟搞定
  做英文網(wǎng)站 SEO必然會(huì )提到英文內容創(chuàng )作。但是作為一個(gè)中國人,我的英文不好,寫(xiě)不出高質(zhì)量的內容,很是苦惱。不過(guò)沒(méi)關(guān)系,如果你能掌握英文偽原創(chuàng )技巧,你也可以用蹩腳的英文寫(xiě)出高質(zhì)量的內容,獲得更好的關(guān)鍵詞排名。
  下面我們來(lái)看看英文偽原創(chuàng )應該怎么做,有哪些需要注意的地方。
  偽原創(chuàng )關(guān)于英文內容大致可以分為三個(gè)部分。
  文字變化;形式的變化;偽原創(chuàng ) 圖片。1. 換字的具體方法 方法#1 使用工具進(jìn)行機械改寫(xiě)
  這里我們會(huì )用到一個(gè)工具:Small SEO tools的文章重寫(xiě)工具(需要科學(xué)上網(wǎng))。這是一個(gè)免費的 文章 自動(dòng)重寫(xiě)工具,可以將任何指定的文本內容重寫(xiě)為可讀文本。
  使用方法:將別人的全文放入輸入框,點(diǎn)擊【重寫(xiě)文章】按鈕。該工具可以對 文章 中的常用名詞進(jìn)行同義詞替換。同時(shí),在某些情況下,語(yǔ)句的形式也可以改變。
  彩色部分是本工具改寫(xiě)的內容
  目前只支持英文,不支持其他小語(yǔ)種。
  使用此工具重寫(xiě)的文本實(shí)際上不是特別可讀。所以你仍然可以手動(dòng)完成。
  如果你有時(shí)間,我建議你使用文字 偽原創(chuàng ) 的第二種方法。
  方法 #2 使用 LSI關(guān)鍵詞 手動(dòng)重寫(xiě)
  這種方法是在別人的文字內容的基礎上增加更多的相關(guān)詞(LSI關(guān)鍵詞),從而實(shí)現內容偽原創(chuàng )。
  
  比如我們現在找到這樣一個(gè)關(guān)鍵詞[太陽(yáng)能熱水器]和別人的一段文字,如下圖:
  別人的文字
  現在找到【太陽(yáng)能熱水器】的LSI關(guān)鍵詞,自然添加,或者改寫(xiě)成原文。
  重寫(xiě)后結果的彩色部分是 LSI關(guān)鍵詞
  這種方法的缺點(diǎn):它會(huì )花費更長(cháng)的時(shí)間,但這也是它的優(yōu)點(diǎn) - 內容會(huì )更相關(guān)。
  2. 文章形式的變化
  文本的形式有很多變化。例如,您可以將其他人的段落替換為列表、列表替換為表格,或者將表格替換為文本段落。例如,假設您引用競爭對手的產(chǎn)品參數部分,這是一個(gè)表格。這時(shí)可以以文本段落(句子)等形式改寫(xiě)表格中的參數。
  做B端產(chǎn)品的人應該都知道阿里巴巴國際站吧?也許你可以搜索一個(gè)詞,你可以看到阿里巴巴國際站的排名。
  有很多人會(huì )說(shuō):“廢話(huà),其他用戶(hù)會(huì )寫(xiě)頁(yè)面,內容很多”。
  我可以告訴你:阿里巴巴國際站50%的頁(yè)面不是UGC頁(yè)面,而是阿里巴巴自己生成的搜索聚合頁(yè)面!同時(shí),那些頁(yè)面上的內容不是阿里員工一一手工打出來(lái)的,而是機器生成的,基本是0時(shí)間!
  想知道怎么做?事實(shí)上,它是一種變化形式。想了解詳情的可以加我微信(mbkf6666),一句話(huà)解惑。
  
  3. 偽原創(chuàng ) 圖片
  內容不僅僅是文字,還包括圖片、視頻、音頻等。因此,內容的偽原創(chuàng )和圖片的偽原創(chuàng )的核心。這一點(diǎn)在學(xué)習谷歌SEO的時(shí)候一定要牢記。有些頁(yè)面沒(méi)有流量(沒(méi)有排名)。其實(shí)問(wèn)題不在于文字或外鏈,而在于圖片。
  經(jīng)常采集的朋友會(huì )經(jīng)常采集和別人的照片網(wǎng)站。但是你有沒(méi)有發(fā)現,你的采集后面的圖片在被爬取之后其實(shí)并沒(méi)有被谷歌索引,或者索引率很低。
  當您對圖片進(jìn)行一些調整時(shí),無(wú)論圖片索引如何,附加頁(yè)面也會(huì )被索引,您仍然可以參與排名。
  這時(shí)候你肯定想說(shuō):“我不能一張一張修改圖片嗎?”。當然不是,但是有了圖片,你確實(shí)需要花一些時(shí)間來(lái)處理它。
  如何處理?我給你一個(gè)更好的方法:拼圖。
  通過(guò)拼接兩個(gè)具有相似背景顏色(最好相同)的圖像來(lái)創(chuàng )建一個(gè)新圖像。這個(gè)做法已經(jīng)試過(guò)了,搜索引擎不識別為偽原創(chuàng ),相關(guān)性還不錯。
  一點(diǎn)建議
  很多人可能認為英文內容偽原創(chuàng )消耗的時(shí)間少,所以偽原創(chuàng )可能是最好的選擇。
  其實(shí)不,我給你的建議是自己制作有價(jià)值的內容,而不是一味的模仿和抄襲。建議大家閱讀文章《如何用英文做內容原創(chuàng )》一文,相信你會(huì )有一些啟發(fā)。
  同時(shí),在效率方面,自己制作內容的效率其實(shí)會(huì )更高。畢竟,最了解產(chǎn)品的不是機器,而是你自己。
  相關(guān)性 文章LSI關(guān)鍵詞 – 為什么暴力會(huì )增加英語(yǔ)中的相關(guān)性 關(guān)鍵詞 單數和復數形式的排名不同?英文原創(chuàng )文章英文怎么寫(xiě)不容易寫(xiě)原創(chuàng )

分享文章:微信公眾號文章爬蟲(chóng)采集

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 102 次瀏覽 ? 2022-11-27 05:30 ? 來(lái)自相關(guān)話(huà)題

  分享文章:微信公眾號文章爬蟲(chóng)采集
  捕捉場(chǎng)景
  進(jìn)入搜狗微信首頁(yè),(),采集【熱點(diǎn)】分類(lèi)下的文章列表數據。同時(shí)點(diǎn)擊每篇文章的鏈接,進(jìn)入文章詳情頁(yè),采集
文章的文字和圖片。
  集合字段
  標題、文章鏈接、封面圖片、介紹、出處、發(fā)布時(shí)間、正文、圖片鏈接。
  將鼠標放在圖片上,點(diǎn)擊鼠標右鍵,選擇【在新標簽頁(yè)中打開(kāi)圖片】即可查看高分辨率大圖
  下面的其他圖片也一樣
  采集結果
  采集結果可以導出為Excel、CSV、HTML、數據庫等格式。導出到 Excel 的示例:
  教程說(shuō)明
  本文制作時(shí)間:2020/4/24 優(yōu)采云
版本:V8.1.8
  如因網(wǎng)頁(yè)改版導致網(wǎng)址或步驟失效,導致無(wú)法采集目標數據,請聯(lián)系官方客服,我們會(huì )及時(shí)更正。
  采集步驟
  第一步:打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  Step 2. 調整使用【智能識別】生成的采集流程
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  步驟 4. 開(kāi)始采集
  以下是具體步驟:
  Step 1. 打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  在首頁(yè)【輸入框】輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集
】,優(yōu)采云
會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
  點(diǎn)擊【自動(dòng)識別網(wǎng)頁(yè)】,成功識別文章列表中的數據和翻頁(yè)。
  點(diǎn)擊【生成采集
設置】,將自動(dòng)識別的列表數據和翻頁(yè)生成為一個(gè)采集
過(guò)程,方便我們使用和修改。
  特別提示:
  
  一個(gè)。本文使用【自動(dòng)識別】自動(dòng)識別網(wǎng)頁(yè)上的列表、滾動(dòng)和翻頁(yè)。識別成功后會(huì )生成采集規則,然后調整采集規則采集目標數據。如果【自動(dòng)識別】結果與上圖不同,您可以點(diǎn)擊【取消識別】自行配置采集流程或聯(lián)系客服反饋。詳情點(diǎn)擊查看【自動(dòng)識別】教程
  Step 2. 調整使用【智能識別】生成的采集流程
  【智能識別】對我們建立收款規則很有幫助,可以調整優(yōu)化規則。
  2.編輯字段
  在【當前頁(yè)數據預覽】面板中,可以刪除多余字段、修改字段名稱(chēng)、移動(dòng)字段順序等。
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  1.點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè)
  進(jìn)入【循環(huán)列表】設置頁(yè)面,查看當前文章列表(當前列表為藍色背景,其他項目為白色背景),在網(wǎng)頁(yè)中找到對應的當前文章列表(藍色高亮顯示)。
  在當前文章列表中選擇文章鏈接,在操作提示框中點(diǎn)擊【點(diǎn)擊鏈接】,優(yōu)采云
會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。
  特別提示:
  一個(gè)。一定要選擇當前文章列表中的文章鏈接做【點(diǎn)擊鏈接】,否則【點(diǎn)擊元素】步驟無(wú)法與【循環(huán)】中的文章列表鏈接,會(huì )一直點(diǎn)擊某個(gè)文章鏈接多次進(jìn)入其文章詳情頁(yè),無(wú)法依次點(diǎn)擊每篇文章鏈接。
  b. 如何找到當前的文章列表?【流通】中當前文章列表為藍色背景,其他條目為白色背景。網(wǎng)頁(yè)當前文章列表會(huì )以藍色高亮顯示,與【循環(huán)】中的當前列表一一對應。
  2.采集
文字
  選中一個(gè)段落,在操作提示框中點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊),然后點(diǎn)擊【采集
該元素的文本】,文本就會(huì )被采集
。
  特別提示:
  一個(gè)。為什么先選一個(gè)段落,再選DIV?搜狗微信文章格式復雜,文字也選不好。我們先選擇一個(gè)段落,然后直接點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊)來(lái)選擇文本。這里涉及到一定的XPath知識。點(diǎn)擊查看XPath學(xué)習和實(shí)例教程
  3.創(chuàng )建【循環(huán)列表】,提取文本中所有圖片地址
  一篇文章中可能有多張圖片。通過(guò)以下步驟采集
文章中的所有圖片地址:
 ?、?文本提取步驟后,點(diǎn)擊+號添加循環(huán)步驟
 ?、?將循環(huán)方式改為【不固定元素列表】,輸入XPath://div[@id='js_content']//img,點(diǎn)擊應用,采集
所有文章中的所有圖片地址。
 ?、?點(diǎn)擊頁(yè)面第一張圖片,在操作提示框中點(diǎn)擊【采集
圖片鏈接】,會(huì )自動(dòng)生成采集
圖片鏈接的步驟
  
  特別提示:
  一個(gè)。經(jīng)過(guò)以上3個(gè)連續的步驟,【循環(huán)-提取數據】就創(chuàng )建好了。[Loop]中的項對應頁(yè)面中的所有圖片,[Extract Data]中的字段對應每張圖片的圖片地址。開(kāi)始抓取后,優(yōu)采云
會(huì )按照循環(huán)中的順序依次提取每張圖片的地址。
  b. 為什么可以通過(guò)以上3步建立【循環(huán)-提取數據】?點(diǎn)擊查看榜單數據采集教程。
  特別提示:
  一個(gè)。為什么要修改[Circular List 1]的XPath?這是因為默認生成的XPath無(wú)法采集
到所有文章的圖片地址。我們需要手動(dòng)寫(xiě)一個(gè)XPath來(lái)定位所有的圖片。這里需要一些 XPath 知識。點(diǎn)擊查看XPath學(xué)習和示例教程。
  b. 默認是一個(gè)圖像地址和一個(gè)數據。如果要將同一篇文章的圖片地址合并到同一個(gè)數據中,需要進(jìn)入【提取列表數據1】設置頁(yè)面,勾選【自定義數據合并方式】【多次提取同一字段和一個(gè)排]。
  步驟 4. 開(kāi)始采集
  1.啟動(dòng)本地采集,查找并修正圖片地址亂碼問(wèn)題
  點(diǎn)擊【采集
】和【開(kāi)始本地采集
】。啟動(dòng)后,優(yōu)采云
開(kāi)始自動(dòng)采集
數據。
  采集
了部分數據導出到excel后,發(fā)現圖片地址有很多重復的亂碼,并不是真實(shí)的圖片地址。
  特別提示:
  一個(gè)?!颈镜夭杉渴鞘褂米约旱碾娔X進(jìn)行采集,【云采集】是使用優(yōu)采云
提供的云服務(wù)器進(jìn)行采集,點(diǎn)擊查看本地采集和云端采集的詳細說(shuō)明。
  這是因為打開(kāi)詳情頁(yè)后,需要滾動(dòng)頁(yè)面才能采集
真實(shí)圖片地址。進(jìn)入【點(diǎn)擊元素】步驟的設置頁(yè)面,勾選【頁(yè)面加載后向下滾動(dòng)】,滾動(dòng)方式為【向下滾動(dòng)一屏】,【滾動(dòng)次數】為20次,【每次間隔】為1秒,設置完成稍后保存。
  特別提示:
  一個(gè)。真實(shí)圖片地址是什么?微信文章中的圖片,需要先滾動(dòng)頁(yè)面,讓圖片在當前屏幕顯示一段時(shí)間,然后再加載真實(shí)圖片地址,否則會(huì )出現重復亂碼。請根據采集需求和網(wǎng)頁(yè)圖片加載情況,在設置中設置滾動(dòng)次數和時(shí)間間隔。它們不是靜態(tài)的。詳情請點(diǎn)擊查看處理滾動(dòng)加載數據的網(wǎng)頁(yè)教程
  2.重新開(kāi)始采集
  優(yōu)采云
打開(kāi)文章詳情頁(yè),滾動(dòng)到采集
實(shí)圖地址,如下圖:
  3.導出數據
  采集完成后,選擇合適的導出方式導出數據。支持導出為Excel、CSV、HTML、數據庫等,這里導出為Excel,示例數據:
  分享文章:如何一鍵采集網(wǎng)頁(yè)的文章到自己的網(wǎng)站
  首先需要懂編程語(yǔ)言,采集軟件的開(kāi)發(fā)比較簡(jiǎn)單。如果要采集
某個(gè)網(wǎng)站,需要先采集
源碼內容,然后取需要的內容,然后寫(xiě)后臺動(dòng)作打開(kāi)自己的網(wǎng)站,包括自動(dòng)填寫(xiě)賬號密碼,然后打開(kāi)發(fā)帖界面, 然后選擇列。
  公眾號采集
文章插件,什么是公眾號文章采集
插件,公眾號文章采集
插件有什么用?公眾號采集
插件是一款可以自動(dòng)采集
公眾號文章的插件工具。市面上采集
公眾號的工具或軟件很多,并不是所有的都能適合你的網(wǎng)站,滿(mǎn)足你的需求。今天給大家介紹一個(gè)。一款免費全能的公眾號采集
插件,支持各大公眾號采集
并發(fā)布到各大網(wǎng)站??梢灾苯釉诰庉嬈髦芯庉嫲l(fā)布,也可以將收錄的文章自動(dòng)偽原創(chuàng )發(fā)布。詳見(jiàn)圖1、圖2、圖3、圖4、圖5、
  對于企業(yè)網(wǎng)站來(lái)說(shuō),產(chǎn)品展示是網(wǎng)站最重要的部分,也是我們內鏈的一部分。對各種商品進(jìn)行分類(lèi),可以很好的建立導航鏈之間的聯(lián)系,同時(shí)進(jìn)行商品搜索或者站內搜索,在很大程度上增加了鏈接。
  企業(yè)網(wǎng)站的另一個(gè)重要板塊是文章頁(yè)。很多人喜歡在文章底部留下關(guān)鍵詞錨文本鏈接,以增加網(wǎng)站權重。但是我認為,這當然可以提高關(guān)鍵詞的排名,但是在一個(gè)有200篇文章的站點(diǎn)中,很容易產(chǎn)生過(guò)多的關(guān)鍵詞優(yōu)化。盡量在文章的內頁(yè)放置超鏈接,減少內頁(yè)的權重來(lái)增加所有站點(diǎn)的權重。
  百度官方優(yōu)化指南中提到,在頁(yè)面中添加導航欄,可以方便搜索引擎定位各個(gè)頁(yè)面在網(wǎng)站結構中的層級,起到鏈接作用。在頁(yè)面內容過(guò)多的地方,采用面包屑填充的方式。比如百度知道在數據包芯片導航中:
  
  在對歌曲進(jìn)行排名時(shí),我們總是關(guān)注關(guān)注的問(wèn)題。如何更好的積累網(wǎng)站權重,提高關(guān)鍵詞的排名,穩定關(guān)鍵詞的排名,這些關(guān)鍵點(diǎn)是搜索引擎優(yōu)化研究的目的。很多姐妹城市都會(huì )遇到這樣的問(wèn)題。網(wǎng)站上的文章數量繼續穩步增長(cháng)。每天都有很多PV和獨立訪(fǎng)客。為什么關(guān)鍵字排名不能提高?關(guān)于這些問(wèn)題,筆者今天就對問(wèn)題進(jìn)行全面的分析,找出問(wèn)題的根源。
  很多公司在大量的頁(yè)面上都使用同一個(gè)標題,這樣對搜索引擎是很不友好的。當搜索引擎抓取頁(yè)面時(shí),標題將直接出現在搜索結果中。如果標題反復出現,對用戶(hù)體驗來(lái)說(shuō)是倒霉的。關(guān)鍵詞 散布運氣不好。頁(yè)面的每個(gè)部分都有一組不同的關(guān)鍵字,可以實(shí)現出色的關(guān)鍵字分布。死鏈接就不多說(shuō)了,網(wǎng)站會(huì )實(shí)時(shí)處理死鏈接,能收錄和不能收錄的頁(yè)面就是收錄的頁(yè)面。如果頁(yè)面無(wú)法訪(fǎng)問(wèn),會(huì )設置所有404,及時(shí)處理丟失。
  關(guān)于seo,雖然互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展取得了長(cháng)足的進(jìn)步,網(wǎng)站和線(xiàn)下實(shí)體的使用同步提升已經(jīng)成為企業(yè)或者團隊建設的基本方式,但是做網(wǎng)站的時(shí)候,面臨著(zhù)激烈的競爭,各種行業(yè)網(wǎng)站,還必須考慮你的網(wǎng)站如何吸引客戶(hù)。SEO優(yōu)化是網(wǎng)站管理和維護的根本方法。要保證更好的優(yōu)化效果,一定要把握好優(yōu)化的內容,尤其是關(guān)鍵詞要找到合適的,這樣起點(diǎn)就醒目,吸引人。
  如何使用軟件對網(wǎng)站文章進(jìn)行采集和采集
?
  網(wǎng)站做的好不好是專(zhuān)業(yè)建站者要求的,但是網(wǎng)站管理和維護的好不好就是另外一回事了。為了使網(wǎng)站不斷更新,它總是可以非常有特色。除了考慮基本的優(yōu)化方法外,就是把握住關(guān)鍵詞的內容,保證常量?jì)?yōu)化準確可靠。. SEO優(yōu)化的重點(diǎn)是關(guān)鍵詞,關(guān)鍵詞也可以擴展關(guān)鍵詞,有了這一點(diǎn),就可以從源頭完成更有效的引渡。
  
  關(guān)鍵詞很重要,如果內容可以很豐富很吸引人,可以提高轉化率。這是在一系列seo優(yōu)化服務(wù)過(guò)程中,可以充分利用網(wǎng)站建設的基本標準,達到更可靠的優(yōu)化服務(wù)條件。許多網(wǎng)站的成功經(jīng)驗證明,選擇正確的方式,優(yōu)化提供外包等專(zhuān)業(yè)服務(wù),可以節省能源和人力,確保效果。尤其是把握關(guān)鍵詞這一點(diǎn),一定要分離網(wǎng)站引擎的支持,正確識別和使用。
  尋找關(guān)鍵詞是利用互聯(lián)網(wǎng)的基本功能實(shí)現的,使用關(guān)鍵詞成為SEO優(yōu)化內容的重點(diǎn)。注重適應網(wǎng)絡(luò )平臺特點(diǎn),有效實(shí)現網(wǎng)絡(luò )提升。這種以專(zhuān)業(yè)的優(yōu)化服務(wù)為基礎的方法,在相對專(zhuān)業(yè)的層面上,給人更好的機會(huì ),更多的享受專(zhuān)業(yè)的服務(wù),輕松打造一流的網(wǎng)站。目的。當然,任何網(wǎng)絡(luò )功能都具有網(wǎng)絡(luò )特性,關(guān)鍵詞成為網(wǎng)站優(yōu)化的核心。
  采集
采集
網(wǎng)站文章,現在市面上有很多工具,不僅可以采集
保存在本地,還可以發(fā)送到網(wǎng)站優(yōu)采云
智能文章采集
系統等,不需要代碼基礎,這也是可能的。
  目前采集
器很多,需要自己去探索和學(xué)習,比如優(yōu)采云
、VG瀏覽器、優(yōu)采云
采集
器等,都可以使用。 查看全部

  分享文章:微信公眾號文章爬蟲(chóng)采集
  捕捉場(chǎng)景
  進(jìn)入搜狗微信首頁(yè),(),采集【熱點(diǎn)】分類(lèi)下的文章列表數據。同時(shí)點(diǎn)擊每篇文章的鏈接,進(jìn)入文章詳情頁(yè),采集
文章的文字和圖片。
  集合字段
  標題、文章鏈接、封面圖片、介紹、出處、發(fā)布時(shí)間、正文、圖片鏈接。
  將鼠標放在圖片上,點(diǎn)擊鼠標右鍵,選擇【在新標簽頁(yè)中打開(kāi)圖片】即可查看高分辨率大圖
  下面的其他圖片也一樣
  采集結果
  采集結果可以導出為Excel、CSV、HTML、數據庫等格式。導出到 Excel 的示例:
  教程說(shuō)明
  本文制作時(shí)間:2020/4/24 優(yōu)采云
版本:V8.1.8
  如因網(wǎng)頁(yè)改版導致網(wǎng)址或步驟失效,導致無(wú)法采集目標數據,請聯(lián)系官方客服,我們會(huì )及時(shí)更正。
  采集步驟
  第一步:打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  Step 2. 調整使用【智能識別】生成的采集流程
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  步驟 4. 開(kāi)始采集
  以下是具體步驟:
  Step 1. 打開(kāi)網(wǎng)頁(yè),使用【智能識別】
  在首頁(yè)【輸入框】輸入目標網(wǎng)址,點(diǎn)擊【開(kāi)始采集
】,優(yōu)采云
會(huì )自動(dòng)打開(kāi)網(wǎng)頁(yè)。
  點(diǎn)擊【自動(dòng)識別網(wǎng)頁(yè)】,成功識別文章列表中的數據和翻頁(yè)。
  點(diǎn)擊【生成采集
設置】,將自動(dòng)識別的列表數據和翻頁(yè)生成為一個(gè)采集
過(guò)程,方便我們使用和修改。
  特別提示:
  
  一個(gè)。本文使用【自動(dòng)識別】自動(dòng)識別網(wǎng)頁(yè)上的列表、滾動(dòng)和翻頁(yè)。識別成功后會(huì )生成采集規則,然后調整采集規則采集目標數據。如果【自動(dòng)識別】結果與上圖不同,您可以點(diǎn)擊【取消識別】自行配置采集流程或聯(lián)系客服反饋。詳情點(diǎn)擊查看【自動(dòng)識別】教程
  Step 2. 調整使用【智能識別】生成的采集流程
  【智能識別】對我們建立收款規則很有幫助,可以調整優(yōu)化規則。
  2.編輯字段
  在【當前頁(yè)數據預覽】面板中,可以刪除多余字段、修改字段名稱(chēng)、移動(dòng)字段順序等。
  第三步:點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè),采集
圖文
  1.點(diǎn)擊文章鏈接進(jìn)入詳情頁(yè)
  進(jìn)入【循環(huán)列表】設置頁(yè)面,查看當前文章列表(當前列表為藍色背景,其他項目為白色背景),在網(wǎng)頁(yè)中找到對應的當前文章列表(藍色高亮顯示)。
  在當前文章列表中選擇文章鏈接,在操作提示框中點(diǎn)擊【點(diǎn)擊鏈接】,優(yōu)采云
會(huì )自動(dòng)進(jìn)入文章詳情頁(yè)面。
  特別提示:
  一個(gè)。一定要選擇當前文章列表中的文章鏈接做【點(diǎn)擊鏈接】,否則【點(diǎn)擊元素】步驟無(wú)法與【循環(huán)】中的文章列表鏈接,會(huì )一直點(diǎn)擊某個(gè)文章鏈接多次進(jìn)入其文章詳情頁(yè),無(wú)法依次點(diǎn)擊每篇文章鏈接。
  b. 如何找到當前的文章列表?【流通】中當前文章列表為藍色背景,其他條目為白色背景。網(wǎng)頁(yè)當前文章列表會(huì )以藍色高亮顯示,與【循環(huán)】中的當前列表一一對應。
  2.采集
文字
  選中一個(gè)段落,在操作提示框中點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊),然后點(diǎn)擊【采集
該元素的文本】,文本就會(huì )被采集
。
  特別提示:
  一個(gè)。為什么先選一個(gè)段落,再選DIV?搜狗微信文章格式復雜,文字也選不好。我們先選擇一個(gè)段落,然后直接點(diǎn)擊最后一個(gè)DIV(代表整個(gè)文本塊)來(lái)選擇文本。這里涉及到一定的XPath知識。點(diǎn)擊查看XPath學(xué)習和實(shí)例教程
  3.創(chuàng )建【循環(huán)列表】,提取文本中所有圖片地址
  一篇文章中可能有多張圖片。通過(guò)以下步驟采集
文章中的所有圖片地址:
 ?、?文本提取步驟后,點(diǎn)擊+號添加循環(huán)步驟
 ?、?將循環(huán)方式改為【不固定元素列表】,輸入XPath://div[@id='js_content']//img,點(diǎn)擊應用,采集
所有文章中的所有圖片地址。
 ?、?點(diǎn)擊頁(yè)面第一張圖片,在操作提示框中點(diǎn)擊【采集
圖片鏈接】,會(huì )自動(dòng)生成采集
圖片鏈接的步驟
  
  特別提示:
  一個(gè)。經(jīng)過(guò)以上3個(gè)連續的步驟,【循環(huán)-提取數據】就創(chuàng )建好了。[Loop]中的項對應頁(yè)面中的所有圖片,[Extract Data]中的字段對應每張圖片的圖片地址。開(kāi)始抓取后,優(yōu)采云
會(huì )按照循環(huán)中的順序依次提取每張圖片的地址。
  b. 為什么可以通過(guò)以上3步建立【循環(huán)-提取數據】?點(diǎn)擊查看榜單數據采集教程。
  特別提示:
  一個(gè)。為什么要修改[Circular List 1]的XPath?這是因為默認生成的XPath無(wú)法采集
到所有文章的圖片地址。我們需要手動(dòng)寫(xiě)一個(gè)XPath來(lái)定位所有的圖片。這里需要一些 XPath 知識。點(diǎn)擊查看XPath學(xué)習和示例教程。
  b. 默認是一個(gè)圖像地址和一個(gè)數據。如果要將同一篇文章的圖片地址合并到同一個(gè)數據中,需要進(jìn)入【提取列表數據1】設置頁(yè)面,勾選【自定義數據合并方式】【多次提取同一字段和一個(gè)排]。
  步驟 4. 開(kāi)始采集
  1.啟動(dòng)本地采集,查找并修正圖片地址亂碼問(wèn)題
  點(diǎn)擊【采集
】和【開(kāi)始本地采集
】。啟動(dòng)后,優(yōu)采云
開(kāi)始自動(dòng)采集
數據。
  采集
了部分數據導出到excel后,發(fā)現圖片地址有很多重復的亂碼,并不是真實(shí)的圖片地址。
  特別提示:
  一個(gè)?!颈镜夭杉渴鞘褂米约旱碾娔X進(jìn)行采集,【云采集】是使用優(yōu)采云
提供的云服務(wù)器進(jìn)行采集,點(diǎn)擊查看本地采集和云端采集的詳細說(shuō)明。
  這是因為打開(kāi)詳情頁(yè)后,需要滾動(dòng)頁(yè)面才能采集
真實(shí)圖片地址。進(jìn)入【點(diǎn)擊元素】步驟的設置頁(yè)面,勾選【頁(yè)面加載后向下滾動(dòng)】,滾動(dòng)方式為【向下滾動(dòng)一屏】,【滾動(dòng)次數】為20次,【每次間隔】為1秒,設置完成稍后保存。
  特別提示:
  一個(gè)。真實(shí)圖片地址是什么?微信文章中的圖片,需要先滾動(dòng)頁(yè)面,讓圖片在當前屏幕顯示一段時(shí)間,然后再加載真實(shí)圖片地址,否則會(huì )出現重復亂碼。請根據采集需求和網(wǎng)頁(yè)圖片加載情況,在設置中設置滾動(dòng)次數和時(shí)間間隔。它們不是靜態(tài)的。詳情請點(diǎn)擊查看處理滾動(dòng)加載數據的網(wǎng)頁(yè)教程
  2.重新開(kāi)始采集
  優(yōu)采云
打開(kāi)文章詳情頁(yè),滾動(dòng)到采集
實(shí)圖地址,如下圖:
  3.導出數據
  采集完成后,選擇合適的導出方式導出數據。支持導出為Excel、CSV、HTML、數據庫等,這里導出為Excel,示例數據:
  分享文章:如何一鍵采集網(wǎng)頁(yè)的文章到自己的網(wǎng)站
  首先需要懂編程語(yǔ)言,采集軟件的開(kāi)發(fā)比較簡(jiǎn)單。如果要采集
某個(gè)網(wǎng)站,需要先采集
源碼內容,然后取需要的內容,然后寫(xiě)后臺動(dòng)作打開(kāi)自己的網(wǎng)站,包括自動(dòng)填寫(xiě)賬號密碼,然后打開(kāi)發(fā)帖界面, 然后選擇列。
  公眾號采集
文章插件,什么是公眾號文章采集
插件,公眾號文章采集
插件有什么用?公眾號采集
插件是一款可以自動(dòng)采集
公眾號文章的插件工具。市面上采集
公眾號的工具或軟件很多,并不是所有的都能適合你的網(wǎng)站,滿(mǎn)足你的需求。今天給大家介紹一個(gè)。一款免費全能的公眾號采集
插件,支持各大公眾號采集
并發(fā)布到各大網(wǎng)站??梢灾苯釉诰庉嬈髦芯庉嫲l(fā)布,也可以將收錄的文章自動(dòng)偽原創(chuàng )發(fā)布。詳見(jiàn)圖1、圖2、圖3、圖4、圖5、
  對于企業(yè)網(wǎng)站來(lái)說(shuō),產(chǎn)品展示是網(wǎng)站最重要的部分,也是我們內鏈的一部分。對各種商品進(jìn)行分類(lèi),可以很好的建立導航鏈之間的聯(lián)系,同時(shí)進(jìn)行商品搜索或者站內搜索,在很大程度上增加了鏈接。
  企業(yè)網(wǎng)站的另一個(gè)重要板塊是文章頁(yè)。很多人喜歡在文章底部留下關(guān)鍵詞錨文本鏈接,以增加網(wǎng)站權重。但是我認為,這當然可以提高關(guān)鍵詞的排名,但是在一個(gè)有200篇文章的站點(diǎn)中,很容易產(chǎn)生過(guò)多的關(guān)鍵詞優(yōu)化。盡量在文章的內頁(yè)放置超鏈接,減少內頁(yè)的權重來(lái)增加所有站點(diǎn)的權重。
  百度官方優(yōu)化指南中提到,在頁(yè)面中添加導航欄,可以方便搜索引擎定位各個(gè)頁(yè)面在網(wǎng)站結構中的層級,起到鏈接作用。在頁(yè)面內容過(guò)多的地方,采用面包屑填充的方式。比如百度知道在數據包芯片導航中:
  
  在對歌曲進(jìn)行排名時(shí),我們總是關(guān)注關(guān)注的問(wèn)題。如何更好的積累網(wǎng)站權重,提高關(guān)鍵詞的排名,穩定關(guān)鍵詞的排名,這些關(guān)鍵點(diǎn)是搜索引擎優(yōu)化研究的目的。很多姐妹城市都會(huì )遇到這樣的問(wèn)題。網(wǎng)站上的文章數量繼續穩步增長(cháng)。每天都有很多PV和獨立訪(fǎng)客。為什么關(guān)鍵字排名不能提高?關(guān)于這些問(wèn)題,筆者今天就對問(wèn)題進(jìn)行全面的分析,找出問(wèn)題的根源。
  很多公司在大量的頁(yè)面上都使用同一個(gè)標題,這樣對搜索引擎是很不友好的。當搜索引擎抓取頁(yè)面時(shí),標題將直接出現在搜索結果中。如果標題反復出現,對用戶(hù)體驗來(lái)說(shuō)是倒霉的。關(guān)鍵詞 散布運氣不好。頁(yè)面的每個(gè)部分都有一組不同的關(guān)鍵字,可以實(shí)現出色的關(guān)鍵字分布。死鏈接就不多說(shuō)了,網(wǎng)站會(huì )實(shí)時(shí)處理死鏈接,能收錄和不能收錄的頁(yè)面就是收錄的頁(yè)面。如果頁(yè)面無(wú)法訪(fǎng)問(wèn),會(huì )設置所有404,及時(shí)處理丟失。
  關(guān)于seo,雖然互聯(lián)網(wǎng)時(shí)代的不斷發(fā)展取得了長(cháng)足的進(jìn)步,網(wǎng)站和線(xiàn)下實(shí)體的使用同步提升已經(jīng)成為企業(yè)或者團隊建設的基本方式,但是做網(wǎng)站的時(shí)候,面臨著(zhù)激烈的競爭,各種行業(yè)網(wǎng)站,還必須考慮你的網(wǎng)站如何吸引客戶(hù)。SEO優(yōu)化是網(wǎng)站管理和維護的根本方法。要保證更好的優(yōu)化效果,一定要把握好優(yōu)化的內容,尤其是關(guān)鍵詞要找到合適的,這樣起點(diǎn)就醒目,吸引人。
  如何使用軟件對網(wǎng)站文章進(jìn)行采集和采集
?
  網(wǎng)站做的好不好是專(zhuān)業(yè)建站者要求的,但是網(wǎng)站管理和維護的好不好就是另外一回事了。為了使網(wǎng)站不斷更新,它總是可以非常有特色。除了考慮基本的優(yōu)化方法外,就是把握住關(guān)鍵詞的內容,保證常量?jì)?yōu)化準確可靠。. SEO優(yōu)化的重點(diǎn)是關(guān)鍵詞,關(guān)鍵詞也可以擴展關(guān)鍵詞,有了這一點(diǎn),就可以從源頭完成更有效的引渡。
  
  關(guān)鍵詞很重要,如果內容可以很豐富很吸引人,可以提高轉化率。這是在一系列seo優(yōu)化服務(wù)過(guò)程中,可以充分利用網(wǎng)站建設的基本標準,達到更可靠的優(yōu)化服務(wù)條件。許多網(wǎng)站的成功經(jīng)驗證明,選擇正確的方式,優(yōu)化提供外包等專(zhuān)業(yè)服務(wù),可以節省能源和人力,確保效果。尤其是把握關(guān)鍵詞這一點(diǎn),一定要分離網(wǎng)站引擎的支持,正確識別和使用。
  尋找關(guān)鍵詞是利用互聯(lián)網(wǎng)的基本功能實(shí)現的,使用關(guān)鍵詞成為SEO優(yōu)化內容的重點(diǎn)。注重適應網(wǎng)絡(luò )平臺特點(diǎn),有效實(shí)現網(wǎng)絡(luò )提升。這種以專(zhuān)業(yè)的優(yōu)化服務(wù)為基礎的方法,在相對專(zhuān)業(yè)的層面上,給人更好的機會(huì ),更多的享受專(zhuān)業(yè)的服務(wù),輕松打造一流的網(wǎng)站。目的。當然,任何網(wǎng)絡(luò )功能都具有網(wǎng)絡(luò )特性,關(guān)鍵詞成為網(wǎng)站優(yōu)化的核心。
  采集
采集
網(wǎng)站文章,現在市面上有很多工具,不僅可以采集
保存在本地,還可以發(fā)送到網(wǎng)站優(yōu)采云
智能文章采集
系統等,不需要代碼基礎,這也是可能的。
  目前采集
器很多,需要自己去探索和學(xué)習,比如優(yōu)采云
、VG瀏覽器、優(yōu)采云
采集
器等,都可以使用。

解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-11-27 05:19 ? 來(lái)自相關(guān)話(huà)題

  解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!
  說(shuō)到消息隊列,心里還是有些波瀾。
  消息隊列、緩存和分庫分表是高并發(fā)解決方案的三把劍,而消息隊列是我最喜歡的,也是我思考最多的技術(shù)。
  下面分享一下我在消息隊列這四個(gè)階段的故事,也是對自己技術(shù)成長(cháng)經(jīng)歷的回顧。
  1 認識ActiveMQ1.1異步&amp;解耦
  2011年初,我在一家互聯(lián)網(wǎng)彩票公司做研發(fā)。
  我負責用戶(hù)中心系統,提供用戶(hù)注冊、查詢(xún)、修改等基本功能。用戶(hù)注冊成功后,需要給用戶(hù)發(fā)送一條短信。
  因為本來(lái)就是面向過(guò)程的編程,所以我把新建用戶(hù)模塊和短信發(fā)送模塊組合在一起。
  一開(kāi)始還好,但是慢慢的問(wèn)題就出現了。
  第一個(gè)問(wèn)題,我可以采取線(xiàn)程池的方式來(lái)做,主要是異步的。但是第二個(gè)問(wèn)題讓我很困惑。
  于是向技術(shù)經(jīng)理請教,他讓我引入消息隊列來(lái)解決這個(gè)問(wèn)題。
  這時(shí)候我才明白,消息隊列的核心功能就是異步和解耦。
  1.2 調度中心
  彩票系統的業(yè)務(wù)比較復雜。在彩票訂單的生命周期中,有創(chuàng )建、子訂單拆分、出票、中獎?dòng)嬎愕榷鄠€(gè)環(huán)節。每個(gè)環(huán)節需要不同的業(yè)務(wù)處理,每個(gè)系統都有自己獨立的表,業(yè)務(wù)功能相對獨立。如果每個(gè)應用程序都修改訂單主表中的信息,那將是相當混亂的。
  該公司的建筑師設計了調度中心的服務(wù)。調度中心的職責是維護訂單核心狀態(tài)機、訂單獎勵流程、彩票核心數據的生成。
  調度中心通過(guò)消息隊列、票務(wù)網(wǎng)關(guān)、獎品計算服務(wù)等系統進(jìn)行信息傳遞和交換。
  在我當時(shí)幼小的眼里,這種設計就像是水滴對戰人類(lèi)艦隊,降維打擊。
  隨著(zhù)對業(yè)務(wù)理解的不斷加深,我隱約感覺(jué)到:“好的架構是簡(jiǎn)潔的,應該是易于維護的”。
  當彩票業(yè)務(wù)日均交易量幾千萬(wàn)的時(shí)候,調度中心只有兩個(gè)研發(fā)和維護人員。調度中心源碼中的業(yè)務(wù)邏輯、日志、代碼規范都很優(yōu)秀。
  在以后的編程生活中,我也會(huì )下意識地模仿調度中心的編碼方式,“別?;?,代碼是給人看的”。
  1.3 重啟大法
  隨著(zhù)彩票業(yè)務(wù)的爆發(fā)式增長(cháng),日新聞量從30萬(wàn)條猛增到150萬(wàn)到200萬(wàn)條左右,一切似乎都趨于平穩。
  某一天,雙色球投注結束,調度中心無(wú)法消費消息隊列中的數據。消息總線(xiàn)處于發(fā)送狀態(tài),沒(méi)有接收狀態(tài)。整個(gè)技術(shù)團隊都處于極度焦急的狀態(tài),“如果不能出票,那將是幾百萬(wàn)的損失,如果用戶(hù)中了兩個(gè)雙色球?那就是幾千萬(wàn)了?!?每個(gè)人都急得像熱鍋上的螞蟻。
  這也是整個(gè)技術(shù)團隊第一次遇到消費積累,大家都沒(méi)有經(jīng)驗。
  首先想到的是多部署幾個(gè)調度中心服務(wù)。部署完成后,調度中心消費了上千條消息還是掛了。這時(shí)架構師只能采用重啟策略。你沒(méi)看錯,就是重啟大法。說(shuō)起來(lái)真的很慚愧,但當時(shí)真的是只能這樣了。
  調度中心重啟后,花了1萬(wàn)到2萬(wàn)元又掛了。只能重新開(kāi)始。來(lái)回20多次,像擠牙膏一樣。而隨著(zhù)開(kāi)票期限的臨近,這種精神上的緊張和恐懼也變得更加強烈。最后,經(jīng)過(guò)1個(gè)小時(shí)的手動(dòng)重啟,消息終于被消費了。
  當時(shí)剛好在看畢軒的《分布式Java應用基礎與實(shí)踐》。想是不是線(xiàn)程被阻塞了,于是用Jstack命令查看堆棧狀態(tài)。果然不出所料,線(xiàn)程阻塞在提交數據的方法上。
  我們第一時(shí)間與DBA溝通,發(fā)現oracle數據庫執行了很多大事務(wù),每個(gè)大事務(wù)執行需要30多分鐘,導致調度中心的調度票線(xiàn)程阻塞。
  技術(shù)部門(mén)后來(lái)采用了以下方案來(lái)避免堆積問(wèn)題:
  生產(chǎn)者發(fā)送消息時(shí),將超大消息拆分成多批消息,降低調度中心執行大事務(wù)的概率;數據源配置參數,如果事務(wù)執行超過(guò)一定時(shí)間,則自動(dòng)拋出異常并回滾。1.4 回顧
  Spring封裝的ActiveMQ API非常簡(jiǎn)單易用,用起來(lái)真的很舒服。
  受限于當時(shí)彩票技術(shù)團隊的技術(shù)水平和眼界,我們在使用ActiveMQ的過(guò)程中遇到了一些問(wèn)題。
  高吞吐量,當消息累積到一定數量時(shí)很容易hold
  技術(shù)團隊發(fā)現,在吞吐量特別高的場(chǎng)景下,如果消息的堆積越大,ActiveMQ Hanging的幾率就越低。
  票務(wù)網(wǎng)關(guān)消息量很大,有些消息不需要立即消費,但是為了避免消息隊列Hang的問(wèn)題,票務(wù)網(wǎng)關(guān)在消費數據時(shí),先將消息持久化到本地磁盤(pán),生成本地 XML 文件,然后異步和周期性地執行消息。這樣,我們大大提高了票務(wù)網(wǎng)關(guān)的消費速度,基本消除了票務(wù)網(wǎng)關(guān)排隊的堆積。
  但是這個(gè)方法感覺(jué)很奇怪。消費新聞時(shí),必須在本地存儲另一份數據。新聞存儲在本地。如果磁盤(pán)出現故障,也有丟失消息的風(fēng)險。
  高可用機制有待完善
  我們采用master/slave部署方式,一主一從,服務(wù)器配置為4核8G。
  這種部署方式可以同時(shí)運行兩個(gè)ActiveMQ,并且只允許一個(gè)slave連接Master,也就是說(shuō)一個(gè)集群只能有2個(gè)MQ,兩個(gè)服務(wù)之間有數據備份通道. 單向數據備份。該方案在實(shí)際生產(chǎn)線(xiàn)上使用不便,因為當Master掛掉后,Slave無(wú)法自動(dòng)接收Client發(fā)送的邀請,需要人工干預,必須先停止Slave再重啟恢復負載集群。
  還有一些非常奇怪的消息丟失事件。producer發(fā)送消息成功,但是master控制臺查詢(xún)不到,但是slave控制臺確實(shí)可以查詢(xún)到消息。
  但是消費者沒(méi)有辦法消費slave上的消息,只能手動(dòng)處理。
  2 進(jìn)階Redis&amp;RabbitMQ
  2014年在藝龍網(wǎng)從事紅包系統和優(yōu)惠券系統的優(yōu)化工作。
  2.1 Redis可以做消息隊列嗎?
  酒店優(yōu)惠券計算服務(wù)采用第一代流式計算框架Storm。Storm這里就不詳細介紹了,可以參考下面的邏輯圖:
  這里我們Storm集群的水源(數據源)是redis集群,使用list數據結構實(shí)現消息隊列的push/pop功能。
  流式計算的整體流程:
  酒店信息服務(wù)向Redis集群A/B發(fā)送酒店信息;Storm的spout組件從Redis集群A/B獲取數據,獲取成功后發(fā)送tuple消息給Bolt組件;數據被清理;最后,Storm將處理后的數據發(fā)送到Redis集群C;存儲服務(wù)從Redis集群C獲取數據,存儲到數據庫中;搜索團隊掃描數據庫表并生成索引。
  風(fēng)暴的描述
  這個(gè)流計算服務(wù)每天處理數千萬(wàn)條數據,處理起來(lái)比較流暢。但該計劃在團隊內部仍有不同的聲音:
  我認為使用Redis作為消息隊列應該滿(mǎn)足以下條件:
  容忍小概率消息丟失,通過(guò)定時(shí)任務(wù)/手動(dòng)觸發(fā)實(shí)現最終一致的業(yè)務(wù)場(chǎng)景;消息堆積概率低,有相關(guān)告警監控;消費者的消費模式應該足夠簡(jiǎn)單。2.2 RabbitMQ 是管道而不是池
  
  RabbitMQ 是用 erlang 語(yǔ)言編寫(xiě)的。RabbitMQ 滿(mǎn)足了我的兩個(gè)需求:
  高可用性機制。藝龍內部采用的是鏡像高可用模式,這種模式在藝龍內部已經(jīng)使用了很長(cháng)時(shí)間,其穩定性也得到了一定程度的驗證。在我負責的紅包系統中,RabbitMQ的日吞吐量在百萬(wàn)條消息左右,消息的發(fā)送和消費都相當完善。
  優(yōu)惠券服務(wù)最初使用的是SqlServer。由于數據量大,技術(shù)團隊決定采用分庫分表的策略,使用公司自研的分布式數據庫DDA。
  因為是第一次使用分布式數據庫,為了測試DDA的穩定性,我們模擬發(fā)送1000萬(wàn)條消息到RabbitMQ,然后優(yōu)惠券重構服務(wù)消費消息后,根據hash到不同的mysql庫用戶(hù)號碼。
  RabbitMQ集群模式是鏡像高可用,3臺服務(wù)器,每臺配置4核8G。
  我們以每小時(shí) 300 萬(wàn)條消息的速度發(fā)送消息。第一個(gè)小時(shí)生產(chǎn)者和消費者的表現都很好,但是由于消費者的速度跟不上生產(chǎn)者的速度,消息隊列出現了積壓。第三個(gè)小時(shí),消息隊列已經(jīng)積累了超過(guò)500萬(wàn)條消息,生產(chǎn)者發(fā)送消息的速度從最初的2毫秒提升到500毫秒左右。RabbitMQ的控制臺當場(chǎng)有血濺,紅標告警。
  這是一個(gè)無(wú)意的測試。從測試情況來(lái)看,RabbitMQ是優(yōu)秀的,但是RabbitMQ對消息堆積的支持不是很好。當大量消息積壓時(shí),RabbitMQ的性能會(huì )急劇下降。
  有朋友跟我說(shuō):“RabbitMQ明明是個(gè)管道,你非要把他當成池子嗎?”
  隨著(zhù)整個(gè)互聯(lián)網(wǎng)數據量的快速增長(cháng),在很多業(yè)務(wù)場(chǎng)景中允許適當的積累,只要消費者消費順暢,整個(gè)業(yè)務(wù)波動(dòng)不大。
  我心里越來(lái)越相信:消息隊列既可以作為管道,也可以作為池。
  3 升華 MetaQ
  Metamorphosis的由來(lái)是我從學(xué)習linkedin的開(kāi)源MQ開(kāi)始的——現在轉入apache的kafka。這是一個(gè)設計獨特的MQ系統。它使用拉機制而不是一般的 MQ 推模型。它大量使用Zookeeper做服務(wù)發(fā)現和偏移量存儲。我很欣賞也很認同它的設計理念。我強烈建議您閱讀它的設計文檔??偟膩?lái)說(shuō),蛻變的設計是完全符合它的。---莊曉丹,MetaQ作者
  3.1 驚人的消費模式
  2015年主要從事中國專(zhuān)用車(chē)訂單的研發(fā)工作。
  MetaQ滿(mǎn)足了我對消息隊列的幻想:“分布式、高吞吐、高積累”。
  MetaQ支持兩種消費模型:集群消費和廣播消費,因為之前使用的消費模型都是使用隊列模型。剛開(kāi)始接觸這種發(fā)布-訂閱模式的時(shí)候,我還是很驚嘆的。
  集群消費
  訂單創(chuàng )建成功后,發(fā)送消息給MetaQ。此消息可由調度服務(wù)或 BI 服務(wù)使用。
  廣播消費
  當調度服務(wù)將訂單分配給司機時(shí),它會(huì )向司機發(fā)送一條推送消息。推送是使用廣播消費的方式實(shí)現的。
  一般過(guò)程是:
  驅動(dòng)端的推送服務(wù)是一個(gè)TCP服務(wù)。啟動(dòng)后,以廣播方式消費MetaQ的PushTopic;驅動(dòng)端會(huì )定時(shí)向推送服務(wù)發(fā)送TCP請求。認證成功后,推送服務(wù)會(huì )保存司機號和通道的引用;單服務(wù)向MetaQ發(fā)送推送消息;推送服務(wù)的每臺機器都會(huì )收到消息,然后判斷內存中是否有驅動(dòng)程序的通道引用,如果有則推送消息。
  這是一個(gè)非常經(jīng)典的廣播消費案例。我曾經(jīng)研究過(guò)京麥TCP網(wǎng)關(guān)的設計,它的推送也是類(lèi)似的方式。
  3.2 積極削峰
  2015年是出租車(chē)大戰硝煙彌漫的一年。
  就神州專(zhuān)車(chē)而言,隨著(zhù)訂單的不斷增長(cháng),業(yè)績(jì)壓力與日俱增。早晚高峰時(shí)段,用戶(hù)打車(chē)時(shí),往往點(diǎn)擊下單,往往沒(méi)有反應。在系統層面,私家車(chē)API網(wǎng)關(guān)發(fā)現大范圍超時(shí),訂單服務(wù)性能急劇下降。數據庫層面的壓力就更大了,高峰期插入一條記錄需要8秒。
  整個(gè)技術(shù)團隊需要盡快提升私家車(chē)系統的性能,之前已經(jīng)按照模塊字段拆分了數據庫。但是系統的瓶頸還是很明顯的。
  我們設計了現在看起來(lái)有點(diǎn)激進(jìn)的東西:
  設計訂單緩存。如果大家對緩存的方案感興趣,我們以后再說(shuō),有很多點(diǎn)可以詳細討論;在訂單的生命周期中,訂單的修改操作首先修改緩存,然后發(fā)送消息給MetaQ,下單服務(wù)消費消息,判斷訂單信息是否正常(如是否亂序), 如果訂單數據是正確的,它將被存儲在數據庫中。
  這里有兩個(gè)細節:
  消費者消費時(shí),需要順序消費。實(shí)現方式是根據訂單號路由到不同分區。相同序號的消息每次發(fā)送到同一個(gè)分區;
  一個(gè)守護任務(wù),定時(shí)輪詢(xún)當前順序,當緩存與數據不一致時(shí),修復數據,并發(fā)出告警。
  本次優(yōu)化大大提升了訂單服務(wù)的整體性能,也為后續的訂單服務(wù)分庫分表、異構化打下了堅實(shí)的基礎。根據我們的統計數據,緩存和數據庫之間基本沒(méi)有最后的不一致。但是這個(gè)方案對緩存的高可用要求比較高,有點(diǎn)激進(jìn)。
  3.3 消息SDK包
  做過(guò)基礎架構的同學(xué)可能會(huì )有這樣的體會(huì ):“三方組件都會(huì )封裝一層”,中國架構團隊也將metaq-client封裝在一層。
  在我看來(lái),封裝一層可以減少研發(fā)人員使用第三方組件的心智投入,統一技術(shù)棧,僅此而已。
  直到一場(chǎng)意外發(fā)生,我的思維升級了。那是一個(gè)下午,整個(gè)乘車(chē)服務(wù)崩潰了很長(cháng)一段時(shí)間。技術(shù)團隊發(fā)現:“專(zhuān)車(chē)使用zookeeper進(jìn)行服務(wù)發(fā)現,zk集群的leader機器掛了,一直在選舉leader?!?br />   經(jīng)過(guò)臨時(shí)解決,我們發(fā)現MetaQ和服務(wù)發(fā)現都使用了同一套zk集群,消費者的offset提交和負載均衡都會(huì )對zk集群進(jìn)行大量的寫(xiě)操作。
  為了減少MetaQ對zk集群的影響,我們的目標是:“MetaQ使用獨立的zk集群”。
  需要部署一個(gè)新的zk集群;MetaQ的zk數據需要同步到新集群;保證切換到新集群,應用服務(wù)基本無(wú)感知。
  好奇的問(wèn)了建筑系的同學(xué)。他說(shuō)新集群已經(jīng)部署好了,但是zk數據需要同步到新集群。他在客戶(hù)端添加了雙寫(xiě)操作。也就是說(shuō):除了在原來(lái)的zk集群中寫(xiě)一份數據,我們還要在新的zk集群中寫(xiě)一份數據。幾周后,MetaQ 使用單獨的 zk 集群的任務(wù)已經(jīng)完成。
  這次經(jīng)歷給我帶來(lái)了很多感慨:“我還能這樣玩嗎?” 這也讓我想到:三方組件的封裝并沒(méi)有想象的那么簡(jiǎn)單。
  我們可以看看快手消息的SDK打包策略:
  對外只提供了最基本的API,所有訪(fǎng)問(wèn)都必須通過(guò)SDK提供的接口。簡(jiǎn)潔的 API 就像冰山一角。除了簡(jiǎn)單的外部接口外,以下所有內容都可以在不破壞兼容性的情況下進(jìn)行升級和替換;業(yè)務(wù)開(kāi)發(fā)也很簡(jiǎn)單,只要提供Topic(全局唯一)和Group即可生產(chǎn)和消費,無(wú)需提供環(huán)境、NameServer地址等。在SDK內部,會(huì )根據需要解析集群NameServer的地址到主題,然后連接到相應的集群。生產(chǎn)環(huán)境和測試環(huán)境會(huì )解析不同的地址,從而實(shí)現隔離;上圖分為3層,第二層一般,第三層對應具體的MQ實(shí)現。因此理論上可以用其他Message中間件替代,客戶(hù)端程序不需要修改;SDK集成了熱改機制,可以在不重啟Client的情況下動(dòng)態(tài)配置,比如下發(fā)路由策略(更換集群NameServer的地址,或者連接到另一個(gè)集群Go),Client的線(xiàn)程數,超時(shí)時(shí)間期等。通過(guò)Maven的強制更新機制,可以保證業(yè)務(wù)使用的SDK基本是最新的。
  3.4 重構MetaQ,形成自成一體的系統
  我有一個(gè)習慣:“我經(jīng)常找運維、DBA、架構師,了解當前系統有沒(méi)有問(wèn)題,以及他們解決問(wèn)題的思路,這樣我就有了另一個(gè)角度來(lái)審視運維公司系統?!?br />   MetaQ也有他的缺點(diǎn)。
  MetaQ的基礎通信框架是gecko,MetaQ偶爾會(huì )出現rpc無(wú)響應,應用卡頓的情況,不易定位問(wèn)題;MetaQ的運維能力較弱,只有簡(jiǎn)單的Dashboard界面,無(wú)法實(shí)現自動(dòng)主題申請、消息追蹤等功能。
  有一天,我發(fā)現測試環(huán)境的一臺消費者服務(wù)器啟動(dòng)后,一直報鏈接異常,CPU占用率高。我立即用 netstat 命令查看,發(fā)現已經(jīng)創(chuàng )建了數百個(gè)鏈接。出于好奇,打開(kāi)源碼,發(fā)現網(wǎng)絡(luò )通信框架gecko已經(jīng)被netty取代了。我們會(huì )第一時(shí)間聯(lián)系建筑系的同學(xué)。
  那時(shí)我才意識到:他們已經(jīng)開(kāi)始重構 MetaQ。我從來(lái)沒(méi)有想過(guò)重構一個(gè)開(kāi)源軟件,因為它離我太遠了?;蛘吣莻€(gè)時(shí)候覺(jué)得自己能力不行。
  后來(lái)中國自研的消息隊列成為了自己的系統,在生產(chǎn)環(huán)境中一直運行的很好。
  時(shí)至今日,我仍然很佩服中國建筑團隊。他們自己開(kāi)發(fā)了消息隊列、DataLink(數據異構中間件)、分庫分表中間件等。他們樂(lè )于創(chuàng )新,勇于做出更好的技術(shù)產(chǎn)品。
  我從他們身上學(xué)到了很多。
  
  可能是看到他們重構MetaQ的那一刻,心里就種下了一顆種子。
  4 熱愛(ài)RocketMQ4.1開(kāi)源盛宴
  2014年的時(shí)候,搜了很多關(guān)于淘寶消息隊列的資料。我知道MetaQ的版本已經(jīng)升級到MetaQ 3.0,但是開(kāi)源版本還沒(méi)有發(fā)布。
  大約在秋天,我加入了 RocketMQ 技術(shù)組。石佳(RocketMQ創(chuàng )始人)在群里說(shuō):“最近開(kāi)源要發(fā)布了,發(fā)布了大家抓緊fork一下?!?他這句話(huà)發(fā)到群里后,群里炸開(kāi)了鍋。心里更加高興了,期待早日看到阿里自己的內部消息中間件。
  最后,RocketMQ終于開(kāi)源了。我迫不及待地想看他一眼。
  因為想學(xué)網(wǎng)絡(luò )編程,而RocketMQ的通訊模塊remoting底層也是Netty寫(xiě)的。因此,RocketMQ的通信層是我學(xué)習的起點(diǎn)。
  我模仿了RocketMQ的remoting,寫(xiě)了一個(gè)玩具rpc,大大提升了自信心。巧合的是,藝龍舉辦了科技創(chuàng )新活動(dòng)。我想了想,不如試試用Netty重寫(xiě)Cobar的通信模塊。于是參考Cobar的源碼,花了兩周的時(shí)間寫(xiě)了一個(gè)netty版的proxy,其實(shí)很粗糙,很多功能還不完善。后來(lái)這次活動(dòng)給了我一個(gè)鼓勵獎,現在想想都覺(jué)得有趣。
  因為在UCAR中使用了MetaQ,所以我在學(xué)習RocketMQ方面也比較得心應手。為了真正理解源碼,我經(jīng)常參考RocketMQ的源碼,寫(xiě)一些輪子來(lái)驗證自己的學(xué)習效果。
  雖然自己也做過(guò)一些練習,但是從來(lái)沒(méi)有在商業(yè)環(huán)境中使用過(guò)。2018年是我真正使用RocketMQ的一年,也是收獲的一年。
  短信服務(wù)
  短信服務(wù)應用廣泛,比如用戶(hù)注冊登錄驗證碼、營(yíng)銷(xiāo)短信、下單成功短信通知等。當初設計短信服務(wù)的時(shí)候,想了解一下業(yè)界是怎么做的。于是目標就鎖定在了騰訊云的短信服務(wù)上。騰訊云的短信服務(wù)具有以下特點(diǎn):
  所以,我參考了這個(gè)設計思路。
  模仿騰訊云SDK設計,提供簡(jiǎn)單易用的短信接口;設計短信服務(wù)API,接收短信請求,發(fā)送短信信息到消息隊列;worker服務(wù)消費消息,根據負載均衡算法Interface調用不同通道提供者的SMS消息;Dashboard可以查看短信發(fā)送記錄,配置渠道商信息。
  短信服務(wù)是我第一次真正意義上在生產(chǎn)環(huán)境中使用RocketMQ。當短信一條一條發(fā)出去的時(shí)候,還是挺有成就感的。
  MQ控制臺
  用過(guò)RocketMQ的朋友一定對上圖的控制臺不陌生。當時(shí)團隊有多個(gè) RocketMQ 集群,每個(gè)集群需要部署一個(gè)單獨的控制臺。所以我想:我能不能稍微修改一下控制臺來(lái)支持多集群。
  所以,我卷起袖子開(kāi)始工作。在開(kāi)源版本的基礎上修改了可以支持多組集群的版本,用了大概20天。做完之后,雖然能滿(mǎn)足我最初的想法,但是很粗糙。而且,搜狐還開(kāi)源了自己的MQCloud??戳怂麄兊脑O計,感覺(jué)離一個(gè)消息管理平臺還差得很遠。
  后來(lái)又看了兩篇《網(wǎng)易云音樂(lè )的消息隊列改造之路》和《今日頭條在消息服務(wù)平臺和容災體系建設中的實(shí)踐與思考》。我越癢,我就越想做。它是一個(gè)真正的消息管理平臺??上б恢睕](méi)有場(chǎng)景和機會(huì )。
  最近看了單車(chē)架構專(zhuān)家梁勇的一篇《Hello在分布式消息治理和微服務(wù)治理方面的實(shí)踐》,推薦大家閱讀。
  一個(gè)窗口,啟動(dòng)自研組件
  后來(lái)嘗試用RocketMQ更進(jìn)一步。
  這些做完之后,我們就自己開(kāi)發(fā)了注冊中心,配置中心,任務(wù)調度系統。在設計這些系統的時(shí)候,我從RocketMQ的源碼中汲取了很多營(yíng)養。雖然看起來(lái)設計上還有很多不完善的地方,代碼質(zhì)量也有待提高,但是在做完這些系統之后,我的自信心得到了很大的提升。
  RocketMQ為我打開(kāi)了一扇窗,讓我看到了更廣闊的Java世界。對我來(lái)說(shuō),這是開(kāi)源的盛宴。
  4.2 Kafka:大數據生態(tài)不可或缺的一部分
  Kafka是一個(gè)分布式消息流處理中間件,具有高吞吐、持久、水平可擴展、支持流式數據處理等特點(diǎn)。、在線(xiàn)/離線(xiàn)系統分析、實(shí)時(shí)監控等領(lǐng)域有著(zhù)廣泛的應用。
  日志同步
  在大型業(yè)務(wù)系統設計中,為了快速定位問(wèn)題,全鏈路跟蹤日志,及時(shí)監控故障,通常需要對各個(gè)系統應用的日志進(jìn)行集中分析處理。
  Kafka設計的初衷是為了應對大量的日志傳輸場(chǎng)景。應用程序將日志消息以可靠和異步的方式同步到消息服務(wù),然后使用其他組件實(shí)時(shí)或離線(xiàn)分析日志。它還可以用于采集
關(guān)鍵日志信息以進(jìn)行應用程序監控。
  日志同步主要有三個(gè)關(guān)鍵部分:日志采集客戶(hù)端、Kafka消息隊列、后端日志處理應用。
  日志采集客戶(hù)端負責用戶(hù)各種應用服務(wù)的日志數據采集,將日志以消息的形式“批量”、“異步”發(fā)送給Kafka客戶(hù)端。Kafka客戶(hù)端批量提交和壓縮消息,對應用服務(wù)的性能影響很小。Kafka 將日志存儲在消息文件中以提供持久性。一個(gè)日志處理應用程序,如Logstash,在Kafka中訂閱和消費日志消息,最后提供文件搜索服務(wù)來(lái)檢索日志,或者Kafka將消息傳遞給其他大數據應用程序,如Hadoop進(jìn)行系統存儲和分析。
  日志同步示意圖:
  流計算處理
  在股市走勢分析、氣象數據測控、網(wǎng)站用戶(hù)行為分析等諸多領(lǐng)域,由于數據生成速度快、實(shí)時(shí)性強、體量大,很難統一采集這些數據并進(jìn)行分析。加工前將它們存放在倉庫中。因此,傳統的數據處理架構無(wú)法滿(mǎn)足需求。Kafka、Storm、Samza、Spark等流計算引擎的出現,就是為了更好的解決這類(lèi)數據處理過(guò)程中遇到的問(wèn)題。流計算模型可以在數據流動(dòng)過(guò)程中實(shí)現對數據的實(shí)時(shí)捕獲和處理。處理,并根據業(yè)務(wù)需求進(jìn)行計算分析,最后將結果保存或分發(fā)到需要的組件中。
  數據傳輸中心
  近10年來(lái),KV存儲(HBase)、搜索(ElasticSearch)、流處理(Storm、Spark、Samza)、時(shí)序數據庫(OpenTSDB)等專(zhuān)用系統應運而生。這些系統誕生時(shí)心中只有一個(gè)目標,因為它們的簡(jiǎn)單性使得在商品硬件上構建分布式系統變得更加容易和更具成本效益。通常,需要將相同的數據集注入多個(gè)專(zhuān)用系統。例如,當應用日志用于離線(xiàn)日志分析時(shí),搜索單獨的日志記錄也是必不可少的,建立獨立的工作流來(lái)采集
每一類(lèi)數據,然后將它們導入到自己的專(zhuān)用系統中顯然是不切實(shí)際的。使用消息隊列 Kafka 版本充當數據傳輸中心,
  下圖是美團MySQL數據實(shí)時(shí)同步到Hive的架構圖,也是一個(gè)非常經(jīng)典的案例。
  4.3 如何選擇技術(shù)
  2018年去哪兒QMQ開(kāi)源,2019年騰訊TubeMQ開(kāi)源,2020年P(guān)ulsar如火如荼。
  消息隊列的生態(tài)如此繁榮,那么我們該如何選擇模型呢?
  我認為我們不必局限于消息隊列,我們??可以擴展它。只是談?wù)勎业目捶ā?br />   數據庫正在專(zhuān)業(yè)化——“一刀切”的方法不再適用 ----- MongoDB 設計哲學(xué)
  第一點(diǎn):先有場(chǎng)景,再有適應這個(gè)場(chǎng)景的技術(shù)。什么樣的場(chǎng)景選擇什么樣的技術(shù)。
  第二點(diǎn):現實(shí)往往很復雜。當我們真正進(jìn)行技術(shù)選型并需要實(shí)施時(shí),技術(shù)儲備和成本是我們需要重點(diǎn)關(guān)注的兩個(gè)因素。
  技術(shù)儲備
  成本
  最后一點(diǎn)是人的因素,尤其是管理者的因素。每一次重大的技術(shù)選型,都考驗著(zhù)技術(shù)管理者的眼光、布局和管理智慧。
  5 寫(xiě)到最后
  我覺(jué)得這個(gè)世界上沒(méi)有不合理的事情。真的,沒(méi)有多多的積累,多多的思考,是做不成事情的。. . 總之,體驗了這部電影,感覺(jué)自己要學(xué)習的東西太多了。這個(gè)世界上有能力的人太多了。你認為的極限,如果沒(méi)有做好,只是別人的起點(diǎn)。所以唯有不斷進(jìn)取,才能不丟人。好吧,人們不必上學(xué),但他們必須學(xué)習,真的。------韓寒《未來(lái)永無(wú)止境》演講
  我學(xué)習消息隊列的過(guò)程就是一個(gè)不斷思考和實(shí)踐的過(guò)程。雖然我覺(jué)得極限不好,只是別人的起點(diǎn),但至少現在,當我面對這個(gè)技術(shù)的時(shí)候,我的內心充滿(mǎn)了好奇。心亦無(wú)懼。
  我始終相信:每天學(xué)一點(diǎn),就是比昨天好一點(diǎn)。
  微信8.0讓好友達到10000,好友可以加我plus size,先到先得,過(guò)后就沒(méi)了
  掃描下方二維碼加我微信,2022,抱在一起取暖,一起帥。
  案例研究:強化學(xué)習如何做數據分析?新加坡國立等TKDE 2022綜述論文
  【新致遠簡(jiǎn)介】數據分析是現在必備的技能之一。傳統上,靜態(tài)算法或規則多用于數據分析,但在現實(shí)場(chǎng)景中,往往面臨復雜的交互環(huán)境,如何學(xué)習更好的策略是一個(gè)非?,F實(shí)的問(wèn)題。幸運的是,強化學(xué)習可以作為解決此類(lèi)問(wèn)題的有效方法。新加坡南洋理工大學(xué)的學(xué)者在 TKDE 發(fā)表了一篇關(guān)于“深度強化學(xué)習數據處理和分析”的綜述論文,全面回顧了近期的工作,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  數據處理和分析是基礎和普遍的。算法在數據處理和分析中起著(zhù)至關(guān)重要的作用,許多算法設計結合了人類(lèi)知識和經(jīng)驗的啟發(fā)式和一般規則以提高其有效性。
  近年來(lái),強化學(xué)習,尤其是深度強化學(xué)習(DRL)在許多領(lǐng)域得到了越來(lái)越多的探索和利用,因為與靜態(tài)設計的算法相比,它可以在復雜的交互環(huán)境中學(xué)習到更好的策略。在這種趨勢的推動(dòng)下,我們對最近的工作進(jìn)行了全面回顧,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  首先,我們介紹 DRL 中的關(guān)鍵概念、理論和方法。接下來(lái),我們將討論DRL在數據庫系統上的部署,以方便數據組織、調度、調優(yōu)和索引等各個(gè)方面的數據處理和分析。
  然后,我們研究 DRL 在數據處理和分析中的應用,從數據準備和自然語(yǔ)言處理到醫療保健、金融科技等。
  最后,我們討論了在數據處理和分析中使用 DRL 的重要挑戰和未來(lái)的研究方向。
  論文鏈接:
  在大數據時(shí)代,數據處理和分析是基本的、無(wú)處不在的,對于許多正在數字化旅程中改善和轉變其業(yè)務(wù)和運營(yíng)的組織來(lái)說(shuō)至關(guān)重要。數據分析通常需要其他關(guān)鍵操作,例如數據采集、數據清理、數據集成、建模等,然后才能提取見(jiàn)解。
  從醫療保健到零售,大數據可以在許多行業(yè)釋放巨大的價(jià)值創(chuàng )造。然而,數據的復雜性(例如,大容量、高速度和高多樣性)對數據分析提出了許多挑戰,使其難以獲得有意義的見(jiàn)解。為了迎接這一挑戰,促進(jìn)高效、有效的數據處理和分析,研究人員和從業(yè)者設計了大量的算法和技術(shù),也開(kāi)發(fā)了大量的學(xué)習系統,如Spark MLlib和Rafiki。
  為了支持快速的數據處理和準確的數據分析,大量算法依賴(lài)于基于人類(lèi)知識和經(jīng)驗制定的規則。例如,“最短作業(yè)優(yōu)先”是一種調度算法,選擇執行時(shí)間最短的作業(yè)進(jìn)行下一次執行。但與沒(méi)有充分利用工作負載特性的基于學(xué)習的調度算法相比,其性能較差。另一個(gè)例子是計算機網(wǎng)絡(luò )中的數據包分類(lèi),它將數據包與一組規則中的一個(gè)相匹配。一種解決方案是使用手動(dòng)調整的分類(lèi)啟發(fā)式方法來(lái)構建決策樹(shù)。具體來(lái)說(shuō),啟發(fā)式算法是為一組特定的規則而設計的,因此可能不適用于具有不同特征的其他工作負載。
  
  我們觀(guān)察到現有算法的三個(gè)局限性:
  首先,該算法是次優(yōu)的。規則可能會(huì )忽略或未充分利用數據分布等有用信息。其次,該算法缺乏自適應能力。為特定工作負載設計的算法在不同的工作負載中表現不佳。第三,算法設計是一個(gè)耗時(shí)的過(guò)程。開(kāi)發(fā)人員必須花費大量時(shí)間嘗試許多規則才能找到一個(gè)憑經(jīng)驗行得通的規則。
  基于學(xué)習的算法也用于數據處理和分析。常用的學(xué)習方法有兩種:監督學(xué)習和強化學(xué)習。他們通過(guò)直接優(yōu)化性能目標來(lái)實(shí)現更好的性能。監督學(xué)習通常需要一組豐富的高質(zhì)量帶注釋的訓練數據,而獲取這些數據既困難又具有挑戰性。例如,配置調整對于優(yōu)化數據庫管理系統 (DBMS) 的整體性能非常重要。在離散和連續空間中可能有數百個(gè)相互關(guān)聯(lián)的調諧旋鈕。此外,不同的數據庫實(shí)例、查詢(xún)工作負載和硬件特性使得數據采集
不可用,尤其是在云環(huán)境中。
  強化學(xué)習比監督學(xué)習具有更好的性能,因為它采用試錯法搜索并且需要更少的訓練樣本來(lái)為云數據庫找到良好的配置。
  另一個(gè)具體的例子是查詢(xún)處理中的查詢(xún)優(yōu)化。數據庫系統優(yōu)化器的任務(wù)是為查詢(xún)找到最佳的執行計劃,以降低查詢(xún)成本。傳統的優(yōu)化器通常會(huì )枚舉許多候選計劃并使用成本模型來(lái)找到成本最低的計劃。優(yōu)化過(guò)程可能緩慢且不準確。
  在不依賴(lài)不準確的成本模型的情況下,深度強化學(xué)習 (DRL) 方法通過(guò)與數據庫交互(例如,更改表連接順序)來(lái)改進(jìn)執行計劃。
  當查詢(xún)被發(fā)送到代理(即 DRL 優(yōu)化器)時(shí),代理通過(guò)表征基本信息(例如訪(fǎng)問(wèn)的關(guān)系和表)來(lái)生成狀態(tài)向量。代理將狀態(tài)作為輸入,并使用神經(jīng)網(wǎng)絡(luò )生成一個(gè)動(dòng)作集的概率分布,其中可以收錄
所有可能的連接操作作為潛在動(dòng)作。
  每個(gè)操作代表一對表的部分連接計劃,一旦執行操作,狀態(tài)就會(huì )更新。在采取可能的行動(dòng)之后,生成一個(gè)完整的計劃,然后由 DBMS 執行以獲得獎勵。
  在這個(gè)查詢(xún)優(yōu)化問(wèn)題中,可以根據實(shí)際延遲計算獎勵。在使用獎勵信號進(jìn)行訓練期間,代理可以改進(jìn)其策略,從而產(chǎn)生更好的連接順序(即更少的延遲)和更高的獎勵。
  用于查詢(xún)優(yōu)化的 DRL 工作流
  強化學(xué)習 (RL) 側重于學(xué)習在環(huán)境中智能地行動(dòng)。RL 算法通過(guò)基于探索和開(kāi)發(fā)的環(huán)境反饋來(lái)改進(jìn)自身。在過(guò)去的幾十年里,強化學(xué)習在理論和技術(shù)上都取得了長(cháng)足的進(jìn)步。
  
  值得注意的是,DRL 結合了深度學(xué)習 (DL) 技術(shù)來(lái)處理復雜的非結構化數據,旨在從歷史數據中學(xué)習和自我探索,以解決眾所周知的困難和大規模問(wèn)題(例如 AlphaGo)。
  近年來(lái),來(lái)自不同社區的研究人員提出了 DRL 解決方案,以解決數據處理和分析中的問(wèn)題。我們從系統和應用程序的角度使用 DRL 對現有作品進(jìn)行分類(lèi)。
  從系統的角度來(lái)看,我們專(zhuān)注于基礎研究主題,從一般的(例如調度)到特定于系統的(例如數據庫查詢(xún)優(yōu)化)。我們還應該強調它是如何被表述為馬爾可夫決策過(guò)程的,并討論與傳統方法相比如何更有效地解決 DRL 問(wèn)題。由于實(shí)際系統中的工作負載執行和數據獲取時(shí)間比較長(cháng),因此采用采樣、模擬等技術(shù)來(lái)提高DRL訓練的效率。
  從應用的角度,我們將涵蓋數據處理和數據分析中的各種關(guān)鍵應用,以全面了解 DRL 的可用性和適應性。許多領(lǐng)域通過(guò)采用 DRL 進(jìn)行轉換,這有助于學(xué)習有關(guān)應用程序的特定領(lǐng)域知識。
  在這篇綜述中,我們旨在對使用深度強化學(xué)習解決數據系統、數據處理和分析問(wèn)題的最新進(jìn)展進(jìn)行廣泛而系統的綜述。
  強化學(xué)習技術(shù)分類(lèi)
  參考:
  [1] J. Manyika、M. Chui、B. Brown、J. Bughin、R. Dobbs、C. Roxburgh、A. Hung Byers 等,大數據:創(chuàng )新、競爭和生產(chǎn)力的下一個(gè)前沿。麥肯錫全球研究院,2011 年。
  [2] X. Meng、J. Bradley、B. Yavuz、E. Sparks、S. Venkataraman、D. Liu、J. Freeman、D. Tsai、M. Amde、S. Owen 等人,“Mllib:機器在 apache spark 中學(xué)習,”機器學(xué)習研究雜志,卷。17,沒(méi)有。1,第 1235–1241 頁(yè),2016 年。
  [3] W.Wang、J. Gao、M. Zhang、S.Wang、G. Chen、TK Ng、BC Ooi、J. Shao 和 M. Reyad,“Rafiki:機器學(xué)習作為分析服務(wù)系統”, VLDB,卷。12,沒(méi)有。2,第 128–140 頁(yè),2018 年。 查看全部

  解決方案:用了8年MQ!聊聊消息隊列的技術(shù)選型,哪個(gè)最香!
  說(shuō)到消息隊列,心里還是有些波瀾。
  消息隊列、緩存和分庫分表是高并發(fā)解決方案的三把劍,而消息隊列是我最喜歡的,也是我思考最多的技術(shù)。
  下面分享一下我在消息隊列這四個(gè)階段的故事,也是對自己技術(shù)成長(cháng)經(jīng)歷的回顧。
  1 認識ActiveMQ1.1異步&amp;解耦
  2011年初,我在一家互聯(lián)網(wǎng)彩票公司做研發(fā)。
  我負責用戶(hù)中心系統,提供用戶(hù)注冊、查詢(xún)、修改等基本功能。用戶(hù)注冊成功后,需要給用戶(hù)發(fā)送一條短信。
  因為本來(lái)就是面向過(guò)程的編程,所以我把新建用戶(hù)模塊和短信發(fā)送模塊組合在一起。
  一開(kāi)始還好,但是慢慢的問(wèn)題就出現了。
  第一個(gè)問(wèn)題,我可以采取線(xiàn)程池的方式來(lái)做,主要是異步的。但是第二個(gè)問(wèn)題讓我很困惑。
  于是向技術(shù)經(jīng)理請教,他讓我引入消息隊列來(lái)解決這個(gè)問(wèn)題。
  這時(shí)候我才明白,消息隊列的核心功能就是異步和解耦。
  1.2 調度中心
  彩票系統的業(yè)務(wù)比較復雜。在彩票訂單的生命周期中,有創(chuàng )建、子訂單拆分、出票、中獎?dòng)嬎愕榷鄠€(gè)環(huán)節。每個(gè)環(huán)節需要不同的業(yè)務(wù)處理,每個(gè)系統都有自己獨立的表,業(yè)務(wù)功能相對獨立。如果每個(gè)應用程序都修改訂單主表中的信息,那將是相當混亂的。
  該公司的建筑師設計了調度中心的服務(wù)。調度中心的職責是維護訂單核心狀態(tài)機、訂單獎勵流程、彩票核心數據的生成。
  調度中心通過(guò)消息隊列、票務(wù)網(wǎng)關(guān)、獎品計算服務(wù)等系統進(jìn)行信息傳遞和交換。
  在我當時(shí)幼小的眼里,這種設計就像是水滴對戰人類(lèi)艦隊,降維打擊。
  隨著(zhù)對業(yè)務(wù)理解的不斷加深,我隱約感覺(jué)到:“好的架構是簡(jiǎn)潔的,應該是易于維護的”。
  當彩票業(yè)務(wù)日均交易量幾千萬(wàn)的時(shí)候,調度中心只有兩個(gè)研發(fā)和維護人員。調度中心源碼中的業(yè)務(wù)邏輯、日志、代碼規范都很優(yōu)秀。
  在以后的編程生活中,我也會(huì )下意識地模仿調度中心的編碼方式,“別?;?,代碼是給人看的”。
  1.3 重啟大法
  隨著(zhù)彩票業(yè)務(wù)的爆發(fā)式增長(cháng),日新聞量從30萬(wàn)條猛增到150萬(wàn)到200萬(wàn)條左右,一切似乎都趨于平穩。
  某一天,雙色球投注結束,調度中心無(wú)法消費消息隊列中的數據。消息總線(xiàn)處于發(fā)送狀態(tài),沒(méi)有接收狀態(tài)。整個(gè)技術(shù)團隊都處于極度焦急的狀態(tài),“如果不能出票,那將是幾百萬(wàn)的損失,如果用戶(hù)中了兩個(gè)雙色球?那就是幾千萬(wàn)了?!?每個(gè)人都急得像熱鍋上的螞蟻。
  這也是整個(gè)技術(shù)團隊第一次遇到消費積累,大家都沒(méi)有經(jīng)驗。
  首先想到的是多部署幾個(gè)調度中心服務(wù)。部署完成后,調度中心消費了上千條消息還是掛了。這時(shí)架構師只能采用重啟策略。你沒(méi)看錯,就是重啟大法。說(shuō)起來(lái)真的很慚愧,但當時(shí)真的是只能這樣了。
  調度中心重啟后,花了1萬(wàn)到2萬(wàn)元又掛了。只能重新開(kāi)始。來(lái)回20多次,像擠牙膏一樣。而隨著(zhù)開(kāi)票期限的臨近,這種精神上的緊張和恐懼也變得更加強烈。最后,經(jīng)過(guò)1個(gè)小時(shí)的手動(dòng)重啟,消息終于被消費了。
  當時(shí)剛好在看畢軒的《分布式Java應用基礎與實(shí)踐》。想是不是線(xiàn)程被阻塞了,于是用Jstack命令查看堆棧狀態(tài)。果然不出所料,線(xiàn)程阻塞在提交數據的方法上。
  我們第一時(shí)間與DBA溝通,發(fā)現oracle數據庫執行了很多大事務(wù),每個(gè)大事務(wù)執行需要30多分鐘,導致調度中心的調度票線(xiàn)程阻塞。
  技術(shù)部門(mén)后來(lái)采用了以下方案來(lái)避免堆積問(wèn)題:
  生產(chǎn)者發(fā)送消息時(shí),將超大消息拆分成多批消息,降低調度中心執行大事務(wù)的概率;數據源配置參數,如果事務(wù)執行超過(guò)一定時(shí)間,則自動(dòng)拋出異常并回滾。1.4 回顧
  Spring封裝的ActiveMQ API非常簡(jiǎn)單易用,用起來(lái)真的很舒服。
  受限于當時(shí)彩票技術(shù)團隊的技術(shù)水平和眼界,我們在使用ActiveMQ的過(guò)程中遇到了一些問(wèn)題。
  高吞吐量,當消息累積到一定數量時(shí)很容易hold
  技術(shù)團隊發(fā)現,在吞吐量特別高的場(chǎng)景下,如果消息的堆積越大,ActiveMQ Hanging的幾率就越低。
  票務(wù)網(wǎng)關(guān)消息量很大,有些消息不需要立即消費,但是為了避免消息隊列Hang的問(wèn)題,票務(wù)網(wǎng)關(guān)在消費數據時(shí),先將消息持久化到本地磁盤(pán),生成本地 XML 文件,然后異步和周期性地執行消息。這樣,我們大大提高了票務(wù)網(wǎng)關(guān)的消費速度,基本消除了票務(wù)網(wǎng)關(guān)排隊的堆積。
  但是這個(gè)方法感覺(jué)很奇怪。消費新聞時(shí),必須在本地存儲另一份數據。新聞存儲在本地。如果磁盤(pán)出現故障,也有丟失消息的風(fēng)險。
  高可用機制有待完善
  我們采用master/slave部署方式,一主一從,服務(wù)器配置為4核8G。
  這種部署方式可以同時(shí)運行兩個(gè)ActiveMQ,并且只允許一個(gè)slave連接Master,也就是說(shuō)一個(gè)集群只能有2個(gè)MQ,兩個(gè)服務(wù)之間有數據備份通道. 單向數據備份。該方案在實(shí)際生產(chǎn)線(xiàn)上使用不便,因為當Master掛掉后,Slave無(wú)法自動(dòng)接收Client發(fā)送的邀請,需要人工干預,必須先停止Slave再重啟恢復負載集群。
  還有一些非常奇怪的消息丟失事件。producer發(fā)送消息成功,但是master控制臺查詢(xún)不到,但是slave控制臺確實(shí)可以查詢(xún)到消息。
  但是消費者沒(méi)有辦法消費slave上的消息,只能手動(dòng)處理。
  2 進(jìn)階Redis&amp;RabbitMQ
  2014年在藝龍網(wǎng)從事紅包系統和優(yōu)惠券系統的優(yōu)化工作。
  2.1 Redis可以做消息隊列嗎?
  酒店優(yōu)惠券計算服務(wù)采用第一代流式計算框架Storm。Storm這里就不詳細介紹了,可以參考下面的邏輯圖:
  這里我們Storm集群的水源(數據源)是redis集群,使用list數據結構實(shí)現消息隊列的push/pop功能。
  流式計算的整體流程:
  酒店信息服務(wù)向Redis集群A/B發(fā)送酒店信息;Storm的spout組件從Redis集群A/B獲取數據,獲取成功后發(fā)送tuple消息給Bolt組件;數據被清理;最后,Storm將處理后的數據發(fā)送到Redis集群C;存儲服務(wù)從Redis集群C獲取數據,存儲到數據庫中;搜索團隊掃描數據庫表并生成索引。
  風(fēng)暴的描述
  這個(gè)流計算服務(wù)每天處理數千萬(wàn)條數據,處理起來(lái)比較流暢。但該計劃在團隊內部仍有不同的聲音:
  我認為使用Redis作為消息隊列應該滿(mǎn)足以下條件:
  容忍小概率消息丟失,通過(guò)定時(shí)任務(wù)/手動(dòng)觸發(fā)實(shí)現最終一致的業(yè)務(wù)場(chǎng)景;消息堆積概率低,有相關(guān)告警監控;消費者的消費模式應該足夠簡(jiǎn)單。2.2 RabbitMQ 是管道而不是池
  
  RabbitMQ 是用 erlang 語(yǔ)言編寫(xiě)的。RabbitMQ 滿(mǎn)足了我的兩個(gè)需求:
  高可用性機制。藝龍內部采用的是鏡像高可用模式,這種模式在藝龍內部已經(jīng)使用了很長(cháng)時(shí)間,其穩定性也得到了一定程度的驗證。在我負責的紅包系統中,RabbitMQ的日吞吐量在百萬(wàn)條消息左右,消息的發(fā)送和消費都相當完善。
  優(yōu)惠券服務(wù)最初使用的是SqlServer。由于數據量大,技術(shù)團隊決定采用分庫分表的策略,使用公司自研的分布式數據庫DDA。
  因為是第一次使用分布式數據庫,為了測試DDA的穩定性,我們模擬發(fā)送1000萬(wàn)條消息到RabbitMQ,然后優(yōu)惠券重構服務(wù)消費消息后,根據hash到不同的mysql庫用戶(hù)號碼。
  RabbitMQ集群模式是鏡像高可用,3臺服務(wù)器,每臺配置4核8G。
  我們以每小時(shí) 300 萬(wàn)條消息的速度發(fā)送消息。第一個(gè)小時(shí)生產(chǎn)者和消費者的表現都很好,但是由于消費者的速度跟不上生產(chǎn)者的速度,消息隊列出現了積壓。第三個(gè)小時(shí),消息隊列已經(jīng)積累了超過(guò)500萬(wàn)條消息,生產(chǎn)者發(fā)送消息的速度從最初的2毫秒提升到500毫秒左右。RabbitMQ的控制臺當場(chǎng)有血濺,紅標告警。
  這是一個(gè)無(wú)意的測試。從測試情況來(lái)看,RabbitMQ是優(yōu)秀的,但是RabbitMQ對消息堆積的支持不是很好。當大量消息積壓時(shí),RabbitMQ的性能會(huì )急劇下降。
  有朋友跟我說(shuō):“RabbitMQ明明是個(gè)管道,你非要把他當成池子嗎?”
  隨著(zhù)整個(gè)互聯(lián)網(wǎng)數據量的快速增長(cháng),在很多業(yè)務(wù)場(chǎng)景中允許適當的積累,只要消費者消費順暢,整個(gè)業(yè)務(wù)波動(dòng)不大。
  我心里越來(lái)越相信:消息隊列既可以作為管道,也可以作為池。
  3 升華 MetaQ
  Metamorphosis的由來(lái)是我從學(xué)習linkedin的開(kāi)源MQ開(kāi)始的——現在轉入apache的kafka。這是一個(gè)設計獨特的MQ系統。它使用拉機制而不是一般的 MQ 推模型。它大量使用Zookeeper做服務(wù)發(fā)現和偏移量存儲。我很欣賞也很認同它的設計理念。我強烈建議您閱讀它的設計文檔??偟膩?lái)說(shuō),蛻變的設計是完全符合它的。---莊曉丹,MetaQ作者
  3.1 驚人的消費模式
  2015年主要從事中國專(zhuān)用車(chē)訂單的研發(fā)工作。
  MetaQ滿(mǎn)足了我對消息隊列的幻想:“分布式、高吞吐、高積累”。
  MetaQ支持兩種消費模型:集群消費和廣播消費,因為之前使用的消費模型都是使用隊列模型。剛開(kāi)始接觸這種發(fā)布-訂閱模式的時(shí)候,我還是很驚嘆的。
  集群消費
  訂單創(chuàng )建成功后,發(fā)送消息給MetaQ。此消息可由調度服務(wù)或 BI 服務(wù)使用。
  廣播消費
  當調度服務(wù)將訂單分配給司機時(shí),它會(huì )向司機發(fā)送一條推送消息。推送是使用廣播消費的方式實(shí)現的。
  一般過(guò)程是:
  驅動(dòng)端的推送服務(wù)是一個(gè)TCP服務(wù)。啟動(dòng)后,以廣播方式消費MetaQ的PushTopic;驅動(dòng)端會(huì )定時(shí)向推送服務(wù)發(fā)送TCP請求。認證成功后,推送服務(wù)會(huì )保存司機號和通道的引用;單服務(wù)向MetaQ發(fā)送推送消息;推送服務(wù)的每臺機器都會(huì )收到消息,然后判斷內存中是否有驅動(dòng)程序的通道引用,如果有則推送消息。
  這是一個(gè)非常經(jīng)典的廣播消費案例。我曾經(jīng)研究過(guò)京麥TCP網(wǎng)關(guān)的設計,它的推送也是類(lèi)似的方式。
  3.2 積極削峰
  2015年是出租車(chē)大戰硝煙彌漫的一年。
  就神州專(zhuān)車(chē)而言,隨著(zhù)訂單的不斷增長(cháng),業(yè)績(jì)壓力與日俱增。早晚高峰時(shí)段,用戶(hù)打車(chē)時(shí),往往點(diǎn)擊下單,往往沒(méi)有反應。在系統層面,私家車(chē)API網(wǎng)關(guān)發(fā)現大范圍超時(shí),訂單服務(wù)性能急劇下降。數據庫層面的壓力就更大了,高峰期插入一條記錄需要8秒。
  整個(gè)技術(shù)團隊需要盡快提升私家車(chē)系統的性能,之前已經(jīng)按照模塊字段拆分了數據庫。但是系統的瓶頸還是很明顯的。
  我們設計了現在看起來(lái)有點(diǎn)激進(jìn)的東西:
  設計訂單緩存。如果大家對緩存的方案感興趣,我們以后再說(shuō),有很多點(diǎn)可以詳細討論;在訂單的生命周期中,訂單的修改操作首先修改緩存,然后發(fā)送消息給MetaQ,下單服務(wù)消費消息,判斷訂單信息是否正常(如是否亂序), 如果訂單數據是正確的,它將被存儲在數據庫中。
  這里有兩個(gè)細節:
  消費者消費時(shí),需要順序消費。實(shí)現方式是根據訂單號路由到不同分區。相同序號的消息每次發(fā)送到同一個(gè)分區;
  一個(gè)守護任務(wù),定時(shí)輪詢(xún)當前順序,當緩存與數據不一致時(shí),修復數據,并發(fā)出告警。
  本次優(yōu)化大大提升了訂單服務(wù)的整體性能,也為后續的訂單服務(wù)分庫分表、異構化打下了堅實(shí)的基礎。根據我們的統計數據,緩存和數據庫之間基本沒(méi)有最后的不一致。但是這個(gè)方案對緩存的高可用要求比較高,有點(diǎn)激進(jìn)。
  3.3 消息SDK包
  做過(guò)基礎架構的同學(xué)可能會(huì )有這樣的體會(huì ):“三方組件都會(huì )封裝一層”,中國架構團隊也將metaq-client封裝在一層。
  在我看來(lái),封裝一層可以減少研發(fā)人員使用第三方組件的心智投入,統一技術(shù)棧,僅此而已。
  直到一場(chǎng)意外發(fā)生,我的思維升級了。那是一個(gè)下午,整個(gè)乘車(chē)服務(wù)崩潰了很長(cháng)一段時(shí)間。技術(shù)團隊發(fā)現:“專(zhuān)車(chē)使用zookeeper進(jìn)行服務(wù)發(fā)現,zk集群的leader機器掛了,一直在選舉leader?!?br />   經(jīng)過(guò)臨時(shí)解決,我們發(fā)現MetaQ和服務(wù)發(fā)現都使用了同一套zk集群,消費者的offset提交和負載均衡都會(huì )對zk集群進(jìn)行大量的寫(xiě)操作。
  為了減少MetaQ對zk集群的影響,我們的目標是:“MetaQ使用獨立的zk集群”。
  需要部署一個(gè)新的zk集群;MetaQ的zk數據需要同步到新集群;保證切換到新集群,應用服務(wù)基本無(wú)感知。
  好奇的問(wèn)了建筑系的同學(xué)。他說(shuō)新集群已經(jīng)部署好了,但是zk數據需要同步到新集群。他在客戶(hù)端添加了雙寫(xiě)操作。也就是說(shuō):除了在原來(lái)的zk集群中寫(xiě)一份數據,我們還要在新的zk集群中寫(xiě)一份數據。幾周后,MetaQ 使用單獨的 zk 集群的任務(wù)已經(jīng)完成。
  這次經(jīng)歷給我帶來(lái)了很多感慨:“我還能這樣玩嗎?” 這也讓我想到:三方組件的封裝并沒(méi)有想象的那么簡(jiǎn)單。
  我們可以看看快手消息的SDK打包策略:
  對外只提供了最基本的API,所有訪(fǎng)問(wèn)都必須通過(guò)SDK提供的接口。簡(jiǎn)潔的 API 就像冰山一角。除了簡(jiǎn)單的外部接口外,以下所有內容都可以在不破壞兼容性的情況下進(jìn)行升級和替換;業(yè)務(wù)開(kāi)發(fā)也很簡(jiǎn)單,只要提供Topic(全局唯一)和Group即可生產(chǎn)和消費,無(wú)需提供環(huán)境、NameServer地址等。在SDK內部,會(huì )根據需要解析集群NameServer的地址到主題,然后連接到相應的集群。生產(chǎn)環(huán)境和測試環(huán)境會(huì )解析不同的地址,從而實(shí)現隔離;上圖分為3層,第二層一般,第三層對應具體的MQ實(shí)現。因此理論上可以用其他Message中間件替代,客戶(hù)端程序不需要修改;SDK集成了熱改機制,可以在不重啟Client的情況下動(dòng)態(tài)配置,比如下發(fā)路由策略(更換集群NameServer的地址,或者連接到另一個(gè)集群Go),Client的線(xiàn)程數,超時(shí)時(shí)間期等。通過(guò)Maven的強制更新機制,可以保證業(yè)務(wù)使用的SDK基本是最新的。
  3.4 重構MetaQ,形成自成一體的系統
  我有一個(gè)習慣:“我經(jīng)常找運維、DBA、架構師,了解當前系統有沒(méi)有問(wèn)題,以及他們解決問(wèn)題的思路,這樣我就有了另一個(gè)角度來(lái)審視運維公司系統?!?br />   MetaQ也有他的缺點(diǎn)。
  MetaQ的基礎通信框架是gecko,MetaQ偶爾會(huì )出現rpc無(wú)響應,應用卡頓的情況,不易定位問(wèn)題;MetaQ的運維能力較弱,只有簡(jiǎn)單的Dashboard界面,無(wú)法實(shí)現自動(dòng)主題申請、消息追蹤等功能。
  有一天,我發(fā)現測試環(huán)境的一臺消費者服務(wù)器啟動(dòng)后,一直報鏈接異常,CPU占用率高。我立即用 netstat 命令查看,發(fā)現已經(jīng)創(chuàng )建了數百個(gè)鏈接。出于好奇,打開(kāi)源碼,發(fā)現網(wǎng)絡(luò )通信框架gecko已經(jīng)被netty取代了。我們會(huì )第一時(shí)間聯(lián)系建筑系的同學(xué)。
  那時(shí)我才意識到:他們已經(jīng)開(kāi)始重構 MetaQ。我從來(lái)沒(méi)有想過(guò)重構一個(gè)開(kāi)源軟件,因為它離我太遠了?;蛘吣莻€(gè)時(shí)候覺(jué)得自己能力不行。
  后來(lái)中國自研的消息隊列成為了自己的系統,在生產(chǎn)環(huán)境中一直運行的很好。
  時(shí)至今日,我仍然很佩服中國建筑團隊。他們自己開(kāi)發(fā)了消息隊列、DataLink(數據異構中間件)、分庫分表中間件等。他們樂(lè )于創(chuàng )新,勇于做出更好的技術(shù)產(chǎn)品。
  我從他們身上學(xué)到了很多。
  
  可能是看到他們重構MetaQ的那一刻,心里就種下了一顆種子。
  4 熱愛(ài)RocketMQ4.1開(kāi)源盛宴
  2014年的時(shí)候,搜了很多關(guān)于淘寶消息隊列的資料。我知道MetaQ的版本已經(jīng)升級到MetaQ 3.0,但是開(kāi)源版本還沒(méi)有發(fā)布。
  大約在秋天,我加入了 RocketMQ 技術(shù)組。石佳(RocketMQ創(chuàng )始人)在群里說(shuō):“最近開(kāi)源要發(fā)布了,發(fā)布了大家抓緊fork一下?!?他這句話(huà)發(fā)到群里后,群里炸開(kāi)了鍋。心里更加高興了,期待早日看到阿里自己的內部消息中間件。
  最后,RocketMQ終于開(kāi)源了。我迫不及待地想看他一眼。
  因為想學(xué)網(wǎng)絡(luò )編程,而RocketMQ的通訊模塊remoting底層也是Netty寫(xiě)的。因此,RocketMQ的通信層是我學(xué)習的起點(diǎn)。
  我模仿了RocketMQ的remoting,寫(xiě)了一個(gè)玩具rpc,大大提升了自信心。巧合的是,藝龍舉辦了科技創(chuàng )新活動(dòng)。我想了想,不如試試用Netty重寫(xiě)Cobar的通信模塊。于是參考Cobar的源碼,花了兩周的時(shí)間寫(xiě)了一個(gè)netty版的proxy,其實(shí)很粗糙,很多功能還不完善。后來(lái)這次活動(dòng)給了我一個(gè)鼓勵獎,現在想想都覺(jué)得有趣。
  因為在UCAR中使用了MetaQ,所以我在學(xué)習RocketMQ方面也比較得心應手。為了真正理解源碼,我經(jīng)常參考RocketMQ的源碼,寫(xiě)一些輪子來(lái)驗證自己的學(xué)習效果。
  雖然自己也做過(guò)一些練習,但是從來(lái)沒(méi)有在商業(yè)環(huán)境中使用過(guò)。2018年是我真正使用RocketMQ的一年,也是收獲的一年。
  短信服務(wù)
  短信服務(wù)應用廣泛,比如用戶(hù)注冊登錄驗證碼、營(yíng)銷(xiāo)短信、下單成功短信通知等。當初設計短信服務(wù)的時(shí)候,想了解一下業(yè)界是怎么做的。于是目標就鎖定在了騰訊云的短信服務(wù)上。騰訊云的短信服務(wù)具有以下特點(diǎn):
  所以,我參考了這個(gè)設計思路。
  模仿騰訊云SDK設計,提供簡(jiǎn)單易用的短信接口;設計短信服務(wù)API,接收短信請求,發(fā)送短信信息到消息隊列;worker服務(wù)消費消息,根據負載均衡算法Interface調用不同通道提供者的SMS消息;Dashboard可以查看短信發(fā)送記錄,配置渠道商信息。
  短信服務(wù)是我第一次真正意義上在生產(chǎn)環(huán)境中使用RocketMQ。當短信一條一條發(fā)出去的時(shí)候,還是挺有成就感的。
  MQ控制臺
  用過(guò)RocketMQ的朋友一定對上圖的控制臺不陌生。當時(shí)團隊有多個(gè) RocketMQ 集群,每個(gè)集群需要部署一個(gè)單獨的控制臺。所以我想:我能不能稍微修改一下控制臺來(lái)支持多集群。
  所以,我卷起袖子開(kāi)始工作。在開(kāi)源版本的基礎上修改了可以支持多組集群的版本,用了大概20天。做完之后,雖然能滿(mǎn)足我最初的想法,但是很粗糙。而且,搜狐還開(kāi)源了自己的MQCloud??戳怂麄兊脑O計,感覺(jué)離一個(gè)消息管理平臺還差得很遠。
  后來(lái)又看了兩篇《網(wǎng)易云音樂(lè )的消息隊列改造之路》和《今日頭條在消息服務(wù)平臺和容災體系建設中的實(shí)踐與思考》。我越癢,我就越想做。它是一個(gè)真正的消息管理平臺??上б恢睕](méi)有場(chǎng)景和機會(huì )。
  最近看了單車(chē)架構專(zhuān)家梁勇的一篇《Hello在分布式消息治理和微服務(wù)治理方面的實(shí)踐》,推薦大家閱讀。
  一個(gè)窗口,啟動(dòng)自研組件
  后來(lái)嘗試用RocketMQ更進(jìn)一步。
  這些做完之后,我們就自己開(kāi)發(fā)了注冊中心,配置中心,任務(wù)調度系統。在設計這些系統的時(shí)候,我從RocketMQ的源碼中汲取了很多營(yíng)養。雖然看起來(lái)設計上還有很多不完善的地方,代碼質(zhì)量也有待提高,但是在做完這些系統之后,我的自信心得到了很大的提升。
  RocketMQ為我打開(kāi)了一扇窗,讓我看到了更廣闊的Java世界。對我來(lái)說(shuō),這是開(kāi)源的盛宴。
  4.2 Kafka:大數據生態(tài)不可或缺的一部分
  Kafka是一個(gè)分布式消息流處理中間件,具有高吞吐、持久、水平可擴展、支持流式數據處理等特點(diǎn)。、在線(xiàn)/離線(xiàn)系統分析、實(shí)時(shí)監控等領(lǐng)域有著(zhù)廣泛的應用。
  日志同步
  在大型業(yè)務(wù)系統設計中,為了快速定位問(wèn)題,全鏈路跟蹤日志,及時(shí)監控故障,通常需要對各個(gè)系統應用的日志進(jìn)行集中分析處理。
  Kafka設計的初衷是為了應對大量的日志傳輸場(chǎng)景。應用程序將日志消息以可靠和異步的方式同步到消息服務(wù),然后使用其他組件實(shí)時(shí)或離線(xiàn)分析日志。它還可以用于采集
關(guān)鍵日志信息以進(jìn)行應用程序監控。
  日志同步主要有三個(gè)關(guān)鍵部分:日志采集客戶(hù)端、Kafka消息隊列、后端日志處理應用。
  日志采集客戶(hù)端負責用戶(hù)各種應用服務(wù)的日志數據采集,將日志以消息的形式“批量”、“異步”發(fā)送給Kafka客戶(hù)端。Kafka客戶(hù)端批量提交和壓縮消息,對應用服務(wù)的性能影響很小。Kafka 將日志存儲在消息文件中以提供持久性。一個(gè)日志處理應用程序,如Logstash,在Kafka中訂閱和消費日志消息,最后提供文件搜索服務(wù)來(lái)檢索日志,或者Kafka將消息傳遞給其他大數據應用程序,如Hadoop進(jìn)行系統存儲和分析。
  日志同步示意圖:
  流計算處理
  在股市走勢分析、氣象數據測控、網(wǎng)站用戶(hù)行為分析等諸多領(lǐng)域,由于數據生成速度快、實(shí)時(shí)性強、體量大,很難統一采集這些數據并進(jìn)行分析。加工前將它們存放在倉庫中。因此,傳統的數據處理架構無(wú)法滿(mǎn)足需求。Kafka、Storm、Samza、Spark等流計算引擎的出現,就是為了更好的解決這類(lèi)數據處理過(guò)程中遇到的問(wèn)題。流計算模型可以在數據流動(dòng)過(guò)程中實(shí)現對數據的實(shí)時(shí)捕獲和處理。處理,并根據業(yè)務(wù)需求進(jìn)行計算分析,最后將結果保存或分發(fā)到需要的組件中。
  數據傳輸中心
  近10年來(lái),KV存儲(HBase)、搜索(ElasticSearch)、流處理(Storm、Spark、Samza)、時(shí)序數據庫(OpenTSDB)等專(zhuān)用系統應運而生。這些系統誕生時(shí)心中只有一個(gè)目標,因為它們的簡(jiǎn)單性使得在商品硬件上構建分布式系統變得更加容易和更具成本效益。通常,需要將相同的數據集注入多個(gè)專(zhuān)用系統。例如,當應用日志用于離線(xiàn)日志分析時(shí),搜索單獨的日志記錄也是必不可少的,建立獨立的工作流來(lái)采集
每一類(lèi)數據,然后將它們導入到自己的專(zhuān)用系統中顯然是不切實(shí)際的。使用消息隊列 Kafka 版本充當數據傳輸中心,
  下圖是美團MySQL數據實(shí)時(shí)同步到Hive的架構圖,也是一個(gè)非常經(jīng)典的案例。
  4.3 如何選擇技術(shù)
  2018年去哪兒QMQ開(kāi)源,2019年騰訊TubeMQ開(kāi)源,2020年P(guān)ulsar如火如荼。
  消息隊列的生態(tài)如此繁榮,那么我們該如何選擇模型呢?
  我認為我們不必局限于消息隊列,我們??可以擴展它。只是談?wù)勎业目捶ā?br />   數據庫正在專(zhuān)業(yè)化——“一刀切”的方法不再適用 ----- MongoDB 設計哲學(xué)
  第一點(diǎn):先有場(chǎng)景,再有適應這個(gè)場(chǎng)景的技術(shù)。什么樣的場(chǎng)景選擇什么樣的技術(shù)。
  第二點(diǎn):現實(shí)往往很復雜。當我們真正進(jìn)行技術(shù)選型并需要實(shí)施時(shí),技術(shù)儲備和成本是我們需要重點(diǎn)關(guān)注的兩個(gè)因素。
  技術(shù)儲備
  成本
  最后一點(diǎn)是人的因素,尤其是管理者的因素。每一次重大的技術(shù)選型,都考驗著(zhù)技術(shù)管理者的眼光、布局和管理智慧。
  5 寫(xiě)到最后
  我覺(jué)得這個(gè)世界上沒(méi)有不合理的事情。真的,沒(méi)有多多的積累,多多的思考,是做不成事情的。. . 總之,體驗了這部電影,感覺(jué)自己要學(xué)習的東西太多了。這個(gè)世界上有能力的人太多了。你認為的極限,如果沒(méi)有做好,只是別人的起點(diǎn)。所以唯有不斷進(jìn)取,才能不丟人。好吧,人們不必上學(xué),但他們必須學(xué)習,真的。------韓寒《未來(lái)永無(wú)止境》演講
  我學(xué)習消息隊列的過(guò)程就是一個(gè)不斷思考和實(shí)踐的過(guò)程。雖然我覺(jué)得極限不好,只是別人的起點(diǎn),但至少現在,當我面對這個(gè)技術(shù)的時(shí)候,我的內心充滿(mǎn)了好奇。心亦無(wú)懼。
  我始終相信:每天學(xué)一點(diǎn),就是比昨天好一點(diǎn)。
  微信8.0讓好友達到10000,好友可以加我plus size,先到先得,過(guò)后就沒(méi)了
  掃描下方二維碼加我微信,2022,抱在一起取暖,一起帥。
  案例研究:強化學(xué)習如何做數據分析?新加坡國立等TKDE 2022綜述論文
  【新致遠簡(jiǎn)介】數據分析是現在必備的技能之一。傳統上,靜態(tài)算法或規則多用于數據分析,但在現實(shí)場(chǎng)景中,往往面臨復雜的交互環(huán)境,如何學(xué)習更好的策略是一個(gè)非?,F實(shí)的問(wèn)題。幸運的是,強化學(xué)習可以作為解決此類(lèi)問(wèn)題的有效方法。新加坡南洋理工大學(xué)的學(xué)者在 TKDE 發(fā)表了一篇關(guān)于“深度強化學(xué)習數據處理和分析”的綜述論文,全面回顧了近期的工作,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  數據處理和分析是基礎和普遍的。算法在數據處理和分析中起著(zhù)至關(guān)重要的作用,許多算法設計結合了人類(lèi)知識和經(jīng)驗的啟發(fā)式和一般規則以提高其有效性。
  近年來(lái),強化學(xué)習,尤其是深度強化學(xué)習(DRL)在許多領(lǐng)域得到了越來(lái)越多的探索和利用,因為與靜態(tài)設計的算法相比,它可以在復雜的交互環(huán)境中學(xué)習到更好的策略。在這種趨勢的推動(dòng)下,我們對最近的工作進(jìn)行了全面回顧,重點(diǎn)是使用 DRL 改進(jìn)數據處理和分析。
  首先,我們介紹 DRL 中的關(guān)鍵概念、理論和方法。接下來(lái),我們將討論DRL在數據庫系統上的部署,以方便數據組織、調度、調優(yōu)和索引等各個(gè)方面的數據處理和分析。
  然后,我們研究 DRL 在數據處理和分析中的應用,從數據準備和自然語(yǔ)言處理到醫療保健、金融科技等。
  最后,我們討論了在數據處理和分析中使用 DRL 的重要挑戰和未來(lái)的研究方向。
  論文鏈接:
  在大數據時(shí)代,數據處理和分析是基本的、無(wú)處不在的,對于許多正在數字化旅程中改善和轉變其業(yè)務(wù)和運營(yíng)的組織來(lái)說(shuō)至關(guān)重要。數據分析通常需要其他關(guān)鍵操作,例如數據采集、數據清理、數據集成、建模等,然后才能提取見(jiàn)解。
  從醫療保健到零售,大數據可以在許多行業(yè)釋放巨大的價(jià)值創(chuàng )造。然而,數據的復雜性(例如,大容量、高速度和高多樣性)對數據分析提出了許多挑戰,使其難以獲得有意義的見(jiàn)解。為了迎接這一挑戰,促進(jìn)高效、有效的數據處理和分析,研究人員和從業(yè)者設計了大量的算法和技術(shù),也開(kāi)發(fā)了大量的學(xué)習系統,如Spark MLlib和Rafiki。
  為了支持快速的數據處理和準確的數據分析,大量算法依賴(lài)于基于人類(lèi)知識和經(jīng)驗制定的規則。例如,“最短作業(yè)優(yōu)先”是一種調度算法,選擇執行時(shí)間最短的作業(yè)進(jìn)行下一次執行。但與沒(méi)有充分利用工作負載特性的基于學(xué)習的調度算法相比,其性能較差。另一個(gè)例子是計算機網(wǎng)絡(luò )中的數據包分類(lèi),它將數據包與一組規則中的一個(gè)相匹配。一種解決方案是使用手動(dòng)調整的分類(lèi)啟發(fā)式方法來(lái)構建決策樹(shù)。具體來(lái)說(shuō),啟發(fā)式算法是為一組特定的規則而設計的,因此可能不適用于具有不同特征的其他工作負載。
  
  我們觀(guān)察到現有算法的三個(gè)局限性:
  首先,該算法是次優(yōu)的。規則可能會(huì )忽略或未充分利用數據分布等有用信息。其次,該算法缺乏自適應能力。為特定工作負載設計的算法在不同的工作負載中表現不佳。第三,算法設計是一個(gè)耗時(shí)的過(guò)程。開(kāi)發(fā)人員必須花費大量時(shí)間嘗試許多規則才能找到一個(gè)憑經(jīng)驗行得通的規則。
  基于學(xué)習的算法也用于數據處理和分析。常用的學(xué)習方法有兩種:監督學(xué)習和強化學(xué)習。他們通過(guò)直接優(yōu)化性能目標來(lái)實(shí)現更好的性能。監督學(xué)習通常需要一組豐富的高質(zhì)量帶注釋的訓練數據,而獲取這些數據既困難又具有挑戰性。例如,配置調整對于優(yōu)化數據庫管理系統 (DBMS) 的整體性能非常重要。在離散和連續空間中可能有數百個(gè)相互關(guān)聯(lián)的調諧旋鈕。此外,不同的數據庫實(shí)例、查詢(xún)工作負載和硬件特性使得數據采集
不可用,尤其是在云環(huán)境中。
  強化學(xué)習比監督學(xué)習具有更好的性能,因為它采用試錯法搜索并且需要更少的訓練樣本來(lái)為云數據庫找到良好的配置。
  另一個(gè)具體的例子是查詢(xún)處理中的查詢(xún)優(yōu)化。數據庫系統優(yōu)化器的任務(wù)是為查詢(xún)找到最佳的執行計劃,以降低查詢(xún)成本。傳統的優(yōu)化器通常會(huì )枚舉許多候選計劃并使用成本模型來(lái)找到成本最低的計劃。優(yōu)化過(guò)程可能緩慢且不準確。
  在不依賴(lài)不準確的成本模型的情況下,深度強化學(xué)習 (DRL) 方法通過(guò)與數據庫交互(例如,更改表連接順序)來(lái)改進(jìn)執行計劃。
  當查詢(xún)被發(fā)送到代理(即 DRL 優(yōu)化器)時(shí),代理通過(guò)表征基本信息(例如訪(fǎng)問(wèn)的關(guān)系和表)來(lái)生成狀態(tài)向量。代理將狀態(tài)作為輸入,并使用神經(jīng)網(wǎng)絡(luò )生成一個(gè)動(dòng)作集的概率分布,其中可以收錄
所有可能的連接操作作為潛在動(dòng)作。
  每個(gè)操作代表一對表的部分連接計劃,一旦執行操作,狀態(tài)就會(huì )更新。在采取可能的行動(dòng)之后,生成一個(gè)完整的計劃,然后由 DBMS 執行以獲得獎勵。
  在這個(gè)查詢(xún)優(yōu)化問(wèn)題中,可以根據實(shí)際延遲計算獎勵。在使用獎勵信號進(jìn)行訓練期間,代理可以改進(jìn)其策略,從而產(chǎn)生更好的連接順序(即更少的延遲)和更高的獎勵。
  用于查詢(xún)優(yōu)化的 DRL 工作流
  強化學(xué)習 (RL) 側重于學(xué)習在環(huán)境中智能地行動(dòng)。RL 算法通過(guò)基于探索和開(kāi)發(fā)的環(huán)境反饋來(lái)改進(jìn)自身。在過(guò)去的幾十年里,強化學(xué)習在理論和技術(shù)上都取得了長(cháng)足的進(jìn)步。
  
  值得注意的是,DRL 結合了深度學(xué)習 (DL) 技術(shù)來(lái)處理復雜的非結構化數據,旨在從歷史數據中學(xué)習和自我探索,以解決眾所周知的困難和大規模問(wèn)題(例如 AlphaGo)。
  近年來(lái),來(lái)自不同社區的研究人員提出了 DRL 解決方案,以解決數據處理和分析中的問(wèn)題。我們從系統和應用程序的角度使用 DRL 對現有作品進(jìn)行分類(lèi)。
  從系統的角度來(lái)看,我們專(zhuān)注于基礎研究主題,從一般的(例如調度)到特定于系統的(例如數據庫查詢(xún)優(yōu)化)。我們還應該強調它是如何被表述為馬爾可夫決策過(guò)程的,并討論與傳統方法相比如何更有效地解決 DRL 問(wèn)題。由于實(shí)際系統中的工作負載執行和數據獲取時(shí)間比較長(cháng),因此采用采樣、模擬等技術(shù)來(lái)提高DRL訓練的效率。
  從應用的角度,我們將涵蓋數據處理和數據分析中的各種關(guān)鍵應用,以全面了解 DRL 的可用性和適應性。許多領(lǐng)域通過(guò)采用 DRL 進(jìn)行轉換,這有助于學(xué)習有關(guān)應用程序的特定領(lǐng)域知識。
  在這篇綜述中,我們旨在對使用深度強化學(xué)習解決數據系統、數據處理和分析問(wèn)題的最新進(jìn)展進(jìn)行廣泛而系統的綜述。
  強化學(xué)習技術(shù)分類(lèi)
  參考:
  [1] J. Manyika、M. Chui、B. Brown、J. Bughin、R. Dobbs、C. Roxburgh、A. Hung Byers 等,大數據:創(chuàng )新、競爭和生產(chǎn)力的下一個(gè)前沿。麥肯錫全球研究院,2011 年。
  [2] X. Meng、J. Bradley、B. Yavuz、E. Sparks、S. Venkataraman、D. Liu、J. Freeman、D. Tsai、M. Amde、S. Owen 等人,“Mllib:機器在 apache spark 中學(xué)習,”機器學(xué)習研究雜志,卷。17,沒(méi)有。1,第 1235–1241 頁(yè),2016 年。
  [3] W.Wang、J. Gao、M. Zhang、S.Wang、G. Chen、TK Ng、BC Ooi、J. Shao 和 M. Reyad,“Rafiki:機器學(xué)習作為分析服務(wù)系統”, VLDB,卷。12,沒(méi)有。2,第 128–140 頁(yè),2018 年。

最新版本:android音頻開(kāi)發(fā)6

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2022-11-26 20:59 ? 來(lái)自相關(guān)話(huà)題

  最新版本:android音頻開(kāi)發(fā)6
  前面的文章介紹了如何使用Android提供的AudioRecord在Java層采集音頻,使用AudioTrack播放音頻,使用MediaCodec編解碼。這些API是Android提供的Java層API。無(wú)論是采集、播放還是編解碼,這些API接口都需要將音頻數據從Java復制到native層,或者從native層復制到Java。如果想減少拷貝,開(kāi)發(fā)更高效的Android音頻應用,推薦使用Android NDK提供的OpenSL ES API接口。它支持直接在本機層處理音頻數據。
  OpenSL ES從Android 2.3開(kāi)始就提供了,但是關(guān)于OpenSL ES的Android官方文檔很少,網(wǎng)上資料也比較少。另外,它的接口使用了面向對象的C接口,不是特別簡(jiǎn)單易懂,所以學(xué)起來(lái)也不是那么容易,我打算通過(guò)兩篇文章來(lái)介紹這個(gè)框架,希望對初學(xué)者有所幫助。
  本文無(wú)意介紹OpenSL ES的工作原理和功能使用(這些將在下一篇文章中介紹),而是從宏觀(guān)的角度簡(jiǎn)單介紹一下OpenSL ES的概況,讓初學(xué)者了解這個(gè)API是干什么的,以及可以做哪些事情,哪些事情不能做,最后給出了一些參考示例代碼和資源鏈接。
  1. 什么是 OpenSL ES?
  OpenSL ES的全稱(chēng)是:Open Sound Library for Embedded Systems,是一套免授權、跨平臺、針對嵌入式系統優(yōu)化的硬件音頻加速API。為本地應用開(kāi)發(fā)者在嵌入式移動(dòng)多媒體設備上提供標準化、高性能、低響應時(shí)間的音頻功能實(shí)現方法,實(shí)現軟硬件音頻性能的直接跨平臺部署,降低執行難度,促進(jìn)先進(jìn)音響市場(chǎng)。開(kāi)發(fā)。(來(lái)自百度百科)
  一句話(huà)概述:OpenSL ES是一套針對嵌入式平臺的音頻標準。
  2、Android和OpenSL ES有什么關(guān)系?
  Android 2.3 (API 9) 開(kāi)始支持 OpenSL ES 標準。通過(guò)NDK提供相應的API開(kāi)發(fā)接口。下圖是Android官方給出的關(guān)系圖(來(lái)源:這里):
  從圖中可以看出,Android實(shí)現的OpenSL ES只是OpenSL 1.0.1的一個(gè)子集,并進(jìn)行了擴展。因此,對于OpenSL ES API的使用,我們需要特別注意Android支持哪些,哪些不支持。有的,具體相關(guān)文檔地址位于NDK docs目錄:
  1個(gè)
  2個(gè)
  NDKroot/docs/Additional_library_docs/opensles/index.html
  
  NDKroot/docs/Additional_library_docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
  3.可以做什么?什么不能做?
  下面總結了 Android OpenSL ES 的特性和不支持的功能。
  特征:
  (1) C語(yǔ)言接口,兼容C++,需要在NDK下開(kāi)發(fā),可以更好的集成到原生應用中
  (2) 運行在native層,需要自己管理資源的申請和釋放,沒(méi)有Dalvik虛擬機的垃圾回收機制
  (3) 支持PCM數據采集,支持配置:16bit位寬,16000Hz采樣率,單通道。(其他配置不保證兼容所有平臺)
  (4) 支持PCM數據播放,支持配置:8bit/16bit位寬,單通道/雙通道,little endian模式,采樣率(8000、11025、12000、16000、22050、24000、32000、44100、48000Hz)
 ?。?)支持播放的音頻數據來(lái)源:res文件夾下的音頻、assets文件夾下的音頻、sdcard目錄下的音頻、在線(xiàn)網(wǎng)絡(luò )音頻、代碼中定義的音頻二進(jìn)制數據等。
  不支持:
  (1) 不支持Android 2.3(API 9)以下版本的設備
  (2) 并非OpenSL ES定義的所有特性和功能都得到實(shí)現
  (3) 不支持 MIDI
  (4) 不支持直接播放DRM或加密內容
  
  (5) 不支持音頻數據的編解碼器。如果需要編解碼器,則需要MediaCodec API或第三方庫
  (6) 音頻延遲方面,與上層API相比,沒(méi)有明顯改善
  4. 使用 OpenSL ES 開(kāi)發(fā)音頻應用程序有什么好處?
  (1)避免在native層和java層頻繁拷貝音頻數據,提高效率
  (2) 與Java API相比,可以更靈活地控制參數
  (3) 由于是C代碼,可以進(jìn)行深度優(yōu)化,比如使用NEON優(yōu)化
  (4) 代碼細節更難被反編譯
 ?。ㄎ澹┢渌?,待補充
  5.示例代碼
  老外(Victor Lazzarini)寫(xiě)了一篇很好的Android OpenSL ES API介紹,并給出了一些示例代碼,鏈接如下:
  我提取了其中兩個(gè)文件,對其進(jìn)行了修改,并將它們組織到我的 AudioDemo 示例中。我個(gè)人認為它具有更好的示范效果。地址如下:
  6.有什么好的資源?
  “Android.NDK.Beginner's.Guide.pdf”
  七、總結
  官方發(fā)布:seo優(yōu)化 | 網(wǎng)站被百度降權后該怎么辦?
  作為一個(gè)網(wǎng)站SEO優(yōu)化師,最不想看到也是最害怕的就是自己負責的網(wǎng)站被降級。這里說(shuō)的降級指的是多個(gè)關(guān)鍵詞排名下降,即使在前100之外,網(wǎng)站流量也大幅下降,SEO優(yōu)化的負責人會(huì )承受不小的壓力,尤其是服務(wù)的SEOer人員公司。你吃頓飯,不然直接開(kāi)除。
  這個(gè)時(shí)候,“吃苦耐勞”的SEOer人員只能忍著(zhù)了,因為這個(gè)時(shí)候你跟老板解釋就沒(méi)有意義了。他只會(huì )說(shuō)你在找借口。如果老板懂一點(diǎn)SEO知識,他可能會(huì )來(lái)找你,和你親切的聊聊,出現這種情況是什么原因,怎么解決等等。
  總之,不管是什么情況,當網(wǎng)站降級的時(shí)候,我們都應該冷靜下來(lái)想一想為什么會(huì )降級,我們在優(yōu)化網(wǎng)站的時(shí)候是不是做了什么違反搜索引擎規則的事情。思考過(guò)后,再修正優(yōu)化方法等。
  那么,網(wǎng)站降級后,您會(huì )立即做什么?我做SEO好幾年了,也經(jīng)歷過(guò)網(wǎng)站被K的情況,下面我就用SEM來(lái)分析一下這種情況,我會(huì )怎么做,給大家提供一個(gè)參考。
  1、冷靜思考分析網(wǎng)站被降級的原因
  當網(wǎng)站被確認降級后,我們應該冷靜下來(lái)分析原因,不要感到天塌下來(lái)的恐慌。說(shuō)到這里,我會(huì )回憶一下我去年優(yōu)化過(guò)的東西。一個(gè)關(guān)于SEO的企業(yè)網(wǎng)站。當時(shí),該網(wǎng)站是一個(gè)全新的網(wǎng)站。上線(xiàn)不到兩周,我用SEO工具查了一下,發(fā)現權重從2變成了0,同時(shí)發(fā)現指數也從百降到單。算起來(lái),第一頁(yè)和第二頁(yè)都找不到網(wǎng)站域名的首頁(yè)。這時(shí)候我就確定網(wǎng)站已經(jīng)降級了。也就是在這個(gè)時(shí)候,我并沒(méi)有像新手那樣驚慌失措,而是冷靜的思考分析了它功率下降的原因,那個(gè)時(shí)候,
  1.查看百度站長(cháng)平臺的消息提醒
  相信現在大部分站長(cháng)做網(wǎng)站排名優(yōu)化,主要是針對百度的。既然是為百度搜索引擎做的,那怎么能不在站長(cháng)平臺上驗證自己的網(wǎng)站呢?經(jīng)核實(shí),如果網(wǎng)站出現問(wèn)題,一般百度站長(cháng)平臺會(huì )有及時(shí)的信息通知,如:機器人封禁、抓取異常等。這些通知可能是您的網(wǎng)站被剝奪權利的原因。
  2. 分析同一IP下的站點(diǎn)
  因為同一個(gè)IP下其他網(wǎng)站如果被處罰,也會(huì )對本站產(chǎn)生影響,嚴重的還會(huì )導致網(wǎng)站降級。這種情況出現的幾率是比較小的,但是在網(wǎng)站降級的時(shí)候,我們還是需要分析每一個(gè)可能導致網(wǎng)站降級的因素,所以還是要檢查每個(gè)網(wǎng)站在同一個(gè)IP下,沒(méi)有網(wǎng)站在同一個(gè)IP下會(huì )被懲罰。那么,這個(gè)因素就可以排除了。
  3、查看每個(gè)頁(yè)面是否正常
  如果我們在站長(cháng)平臺上沒(méi)有得到任何重要的新聞提醒,那么檢查我們網(wǎng)站的首頁(yè)、欄目頁(yè)、內容頁(yè)是否正常,主要是檢查頁(yè)面中的代碼是否被黑鏈接、被攻擊、等等
  4、查看網(wǎng)站近期是否有重大改版改版
  
  網(wǎng)站大改版意味著(zhù)關(guān)鍵詞的排名和采集
會(huì )有很大的波動(dòng)。當然,這種波動(dòng)可能會(huì )讓網(wǎng)站變得更貴,也可能會(huì )降低權威。網(wǎng)站的大改版會(huì )引起波動(dòng)。百度方面也明確表示,當然如果我們的修改是基于給用戶(hù)帶來(lái)更好的體驗,那么你們網(wǎng)站的降電是短期的事情,很快就會(huì )恢復??赡軙?huì )有更好的排名。
  如果一個(gè)網(wǎng)站改版處理不當,被降權的概率是非常高的。如果處理得當,不會(huì )造成降級。那個(gè)時(shí)候百度沒(méi)有什么改版工具,很多東西基本都是靠自己的經(jīng)驗?,F在百度推出了網(wǎng)站改版工具,當您需要網(wǎng)站改版的時(shí)候,可以好好利用網(wǎng)站改版工具,減少不必要的損失。
  5.是否有作弊
  作弊行為當然包括常見(jiàn)的購買(mǎi)鏈接、黑鏈接、群發(fā)垃圾鏈接等。這些行為都是搜索引擎明令禁止的作弊行為。很有可能這個(gè)站點(diǎn)已經(jīng)被百度發(fā)現是購買(mǎi)鏈接的行為,鏈接到它的鏈接很可能會(huì )受到聯(lián)合處罰。
  6、各大搜索引擎排名
  每個(gè)搜索引擎都會(huì )有自己的一套收錄和排名規則,但是搜索引擎也會(huì )有相同的規則,比如以用戶(hù)為導向,用戶(hù)體驗好的網(wǎng)站會(huì )得到好的排名,如果你的網(wǎng)站在各種情況下的話(huà)你在搜索引擎中被降級,你的網(wǎng)站肯定有很大的問(wèn)題,而且這些問(wèn)題絕對不是一天兩天的事情,有可能你自己已經(jīng)發(fā)現了,所以你得去找及時(shí)解決這些問(wèn)題并改正。
  7、檢查服務(wù)器是否正常
  服務(wù)器的穩定性是絕對影響排名和采集
的最重要因素之一。很多網(wǎng)站經(jīng)常因為服務(wù)器不穩定而降級。這種不穩定主要體現在網(wǎng)站經(jīng)常打不開(kāi),或者只能在某些區域打開(kāi),或者打開(kāi)速度很慢,尤其是百度,非常重視服務(wù)器的穩定性。
  凡德的服務(wù)器不穩定,導致無(wú)法訪(fǎng)問(wèn)。十有八九網(wǎng)站會(huì )降級,而且宕機時(shí)間長(cháng),很難恢復到以前的狀態(tài)。當然,搜索引擎這么看重這個(gè)服務(wù)器也是正常的。因為搜索引擎是相當“用戶(hù)”的,一個(gè)用戶(hù)往往打不開(kāi)你的網(wǎng)站,那么搜索引擎把你排名上去有什么意義呢?
  用戶(hù)點(diǎn)了你的網(wǎng)站也打不開(kāi),嚴重影響用戶(hù)體驗。這嚴重違背了搜索引擎所倡導的具有良好用戶(hù)體驗的網(wǎng)站。因此,被剝奪權利也是恰當的。這個(gè)時(shí)候,我應該盡快去做?;謴筒⒋_保服務(wù)器穩定性。
  8.查看網(wǎng)站日志
  一般網(wǎng)站的服務(wù)器都會(huì )存儲每天的網(wǎng)站日志。這些日志包括用戶(hù)和搜索引擎的一些行為軌跡。從這些網(wǎng)站日志中,我們可以查看降級前后的幾天里,哪些頁(yè)面被搜索引擎蜘蛛抓取過(guò)?爬取頁(yè)面返回的信息是什么?有問(wèn)題嗎?
  目前,網(wǎng)上有相當多的網(wǎng)站日志查看工具。相信大家都知道怎么查看這個(gè)網(wǎng)站的日志。
  9、分析網(wǎng)站的外部鏈接
  因為我優(yōu)化過(guò)的SEO網(wǎng)站是改版網(wǎng)站,域名之前也優(yōu)化過(guò),所以很有可能是之前做的外鏈有問(wèn)題,所以我用百度站長(cháng)工具里的外鏈分析工具檢測并分析了外鏈,不出所料,發(fā)現了大量黃色和賭博外鏈。同時(shí)制作了大量黃色和賭博的錨文本。此類(lèi)外部鏈接有 2,000 多個(gè)。再說(shuō)說(shuō)網(wǎng)站被這種垃圾外鏈包圍會(huì )不會(huì )降級。答案將是不言而喻的,所以我將一一拒絕此類(lèi)外部鏈接。我花了將近兩天的時(shí)間。
  
  2.制定網(wǎng)站SEO策略,解決權重恢復問(wèn)題
  網(wǎng)站降級的原因找到并處理好之后,接下來(lái)就是解決恢復網(wǎng)站權重和排名的問(wèn)題了,那么一個(gè)被降級的網(wǎng)站如何恢復權重呢?這是很多站長(cháng),尤其是新手站長(cháng)每天都在站長(cháng)群里問(wèn)的問(wèn)題,也是他們最苦惱的問(wèn)題。接下來(lái),馬海翔再次以?xún)?yōu)化后的SEO網(wǎng)站為例,說(shuō)說(shuō)我是如何讓被降級的網(wǎng)站重振旗鼓的。
  1、定期定量更新網(wǎng)站原有價(jià)值內容
  網(wǎng)站內容建設的重要性已經(jīng)是老生常談了。百度官方多次強調內容質(zhì)量,并明確表示將優(yōu)先提供更優(yōu)質(zhì)、有利于用戶(hù)體驗的內容頁(yè)面。因此,我會(huì )堅持每天寫(xiě)幾篇SEO行業(yè)相關(guān)的原創(chuàng )文章,上午寫(xiě),下午發(fā)表。堅持了一段時(shí)間后,發(fā)現百度已經(jīng)開(kāi)始重新收錄了。一些長(cháng)尾關(guān)鍵詞也有排名,這是很好的體重恢復表現。
  2.優(yōu)質(zhì)外鏈建設
  與往年相比,外鏈不是很有效,但指的是一些低質(zhì)量的外鏈和一些被稱(chēng)為垃圾的外鏈。百度搜索引擎仍然更加重視高質(zhì)量的外部鏈接。權重高,那么什么是高質(zhì)量的外鏈呢?官方的標準是用戶(hù)主動(dòng)自愿給的鏈接才叫優(yōu)質(zhì)外鏈
  當時(shí)在優(yōu)化網(wǎng)站的時(shí)候,為了建設高質(zhì)量的外鏈,除了做一些相關(guān)行業(yè)的友情鏈接,馬海翔還堅持寫(xiě)了一篇跟SEO相關(guān)的文章,也跟站長(cháng)、SEO或者互聯(lián)網(wǎng)相關(guān)每天向A5站長(cháng)投稿到知名門(mén)戶(hù)網(wǎng)站如、站長(cháng)之家等,文章審核通過(guò)后將被大量轉發(fā),源源不斷帶來(lái)大量高- 優(yōu)化網(wǎng)站的優(yōu)質(zhì)外部鏈接。
  這樣不僅可以引導蜘蛛抓取網(wǎng)站,還可以增加整個(gè)網(wǎng)站的權重,提高網(wǎng)站的關(guān)鍵詞排名,對恢復權重也起到至關(guān)重要的作用。
  3、恢復網(wǎng)站權重一定要有毅力,執行力要強
  一個(gè)被剝奪權利的網(wǎng)站要想恢復,不僅要改變一些不當的優(yōu)化方式,還需要不斷重復以上兩點(diǎn):
  (1)定期、定量更新網(wǎng)站原有價(jià)值內容。
  (2) 建立高質(zhì)量的外部鏈接
  很多站長(cháng)失敗的原因就是不夠堅持。有的站長(cháng)堅持更新半個(gè)月,看網(wǎng)站沒(méi)有任何變化就放棄了。其實(shí)網(wǎng)站優(yōu)化是一個(gè)日積月累的過(guò)程,從量變到質(zhì)變。在恢復SEO站點(diǎn)權重的時(shí)候,我堅持了5個(gè)月。在這5個(gè)月的時(shí)間里,我也想過(guò)放棄,但是想了想還是要堅持做下去,這樣才能考驗自己的判斷能力,所以一直堅持了5個(gè)月,終于把網(wǎng)站做完了百花齊放,很多關(guān)鍵詞排名都很好。
  注釋?zhuān)?br />   網(wǎng)站被降級并不可怕。在我看來(lái),這是鍛煉自己,提高自身能力的最好方式。和朋友聊天的時(shí)候經(jīng)常會(huì )說(shuō)這句話(huà)。如果一個(gè)SEOer工作者沒(méi)有經(jīng)歷過(guò)網(wǎng)站降級到恢復的過(guò)程,那么你就不是一個(gè)合格的SEOer。說(shuō)實(shí)話(huà),在優(yōu)化這個(gè)SEO網(wǎng)站的過(guò)程中,從降權到恢復,我學(xué)到了很多東西。同時(shí),自身的能力也有了質(zhì)的飛躍! 查看全部

  最新版本:android音頻開(kāi)發(fā)6
  前面的文章介紹了如何使用Android提供的AudioRecord在Java層采集音頻,使用AudioTrack播放音頻,使用MediaCodec編解碼。這些API是Android提供的Java層API。無(wú)論是采集、播放還是編解碼,這些API接口都需要將音頻數據從Java復制到native層,或者從native層復制到Java。如果想減少拷貝,開(kāi)發(fā)更高效的Android音頻應用,推薦使用Android NDK提供的OpenSL ES API接口。它支持直接在本機層處理音頻數據。
  OpenSL ES從Android 2.3開(kāi)始就提供了,但是關(guān)于OpenSL ES的Android官方文檔很少,網(wǎng)上資料也比較少。另外,它的接口使用了面向對象的C接口,不是特別簡(jiǎn)單易懂,所以學(xué)起來(lái)也不是那么容易,我打算通過(guò)兩篇文章來(lái)介紹這個(gè)框架,希望對初學(xué)者有所幫助。
  本文無(wú)意介紹OpenSL ES的工作原理和功能使用(這些將在下一篇文章中介紹),而是從宏觀(guān)的角度簡(jiǎn)單介紹一下OpenSL ES的概況,讓初學(xué)者了解這個(gè)API是干什么的,以及可以做哪些事情,哪些事情不能做,最后給出了一些參考示例代碼和資源鏈接。
  1. 什么是 OpenSL ES?
  OpenSL ES的全稱(chēng)是:Open Sound Library for Embedded Systems,是一套免授權、跨平臺、針對嵌入式系統優(yōu)化的硬件音頻加速API。為本地應用開(kāi)發(fā)者在嵌入式移動(dòng)多媒體設備上提供標準化、高性能、低響應時(shí)間的音頻功能實(shí)現方法,實(shí)現軟硬件音頻性能的直接跨平臺部署,降低執行難度,促進(jìn)先進(jìn)音響市場(chǎng)。開(kāi)發(fā)。(來(lái)自百度百科)
  一句話(huà)概述:OpenSL ES是一套針對嵌入式平臺的音頻標準。
  2、Android和OpenSL ES有什么關(guān)系?
  Android 2.3 (API 9) 開(kāi)始支持 OpenSL ES 標準。通過(guò)NDK提供相應的API開(kāi)發(fā)接口。下圖是Android官方給出的關(guān)系圖(來(lái)源:這里):
  從圖中可以看出,Android實(shí)現的OpenSL ES只是OpenSL 1.0.1的一個(gè)子集,并進(jìn)行了擴展。因此,對于OpenSL ES API的使用,我們需要特別注意Android支持哪些,哪些不支持。有的,具體相關(guān)文檔地址位于NDK docs目錄:
  1個(gè)
  2個(gè)
  NDKroot/docs/Additional_library_docs/opensles/index.html
  
  NDKroot/docs/Additional_library_docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
  3.可以做什么?什么不能做?
  下面總結了 Android OpenSL ES 的特性和不支持的功能。
  特征:
  (1) C語(yǔ)言接口,兼容C++,需要在NDK下開(kāi)發(fā),可以更好的集成到原生應用中
  (2) 運行在native層,需要自己管理資源的申請和釋放,沒(méi)有Dalvik虛擬機的垃圾回收機制
  (3) 支持PCM數據采集,支持配置:16bit位寬,16000Hz采樣率,單通道。(其他配置不保證兼容所有平臺)
  (4) 支持PCM數據播放,支持配置:8bit/16bit位寬,單通道/雙通道,little endian模式,采樣率(8000、11025、12000、16000、22050、24000、32000、44100、48000Hz)
 ?。?)支持播放的音頻數據來(lái)源:res文件夾下的音頻、assets文件夾下的音頻、sdcard目錄下的音頻、在線(xiàn)網(wǎng)絡(luò )音頻、代碼中定義的音頻二進(jìn)制數據等。
  不支持:
  (1) 不支持Android 2.3(API 9)以下版本的設備
  (2) 并非OpenSL ES定義的所有特性和功能都得到實(shí)現
  (3) 不支持 MIDI
  (4) 不支持直接播放DRM或加密內容
  
  (5) 不支持音頻數據的編解碼器。如果需要編解碼器,則需要MediaCodec API或第三方庫
  (6) 音頻延遲方面,與上層API相比,沒(méi)有明顯改善
  4. 使用 OpenSL ES 開(kāi)發(fā)音頻應用程序有什么好處?
  (1)避免在native層和java層頻繁拷貝音頻數據,提高效率
  (2) 與Java API相比,可以更靈活地控制參數
  (3) 由于是C代碼,可以進(jìn)行深度優(yōu)化,比如使用NEON優(yōu)化
  (4) 代碼細節更難被反編譯
 ?。ㄎ澹┢渌?,待補充
  5.示例代碼
  老外(Victor Lazzarini)寫(xiě)了一篇很好的Android OpenSL ES API介紹,并給出了一些示例代碼,鏈接如下:
  我提取了其中兩個(gè)文件,對其進(jìn)行了修改,并將它們組織到我的 AudioDemo 示例中。我個(gè)人認為它具有更好的示范效果。地址如下:
  6.有什么好的資源?
  “Android.NDK.Beginner's.Guide.pdf”
  七、總結
  官方發(fā)布:seo優(yōu)化 | 網(wǎng)站被百度降權后該怎么辦?
  作為一個(gè)網(wǎng)站SEO優(yōu)化師,最不想看到也是最害怕的就是自己負責的網(wǎng)站被降級。這里說(shuō)的降級指的是多個(gè)關(guān)鍵詞排名下降,即使在前100之外,網(wǎng)站流量也大幅下降,SEO優(yōu)化的負責人會(huì )承受不小的壓力,尤其是服務(wù)的SEOer人員公司。你吃頓飯,不然直接開(kāi)除。
  這個(gè)時(shí)候,“吃苦耐勞”的SEOer人員只能忍著(zhù)了,因為這個(gè)時(shí)候你跟老板解釋就沒(méi)有意義了。他只會(huì )說(shuō)你在找借口。如果老板懂一點(diǎn)SEO知識,他可能會(huì )來(lái)找你,和你親切的聊聊,出現這種情況是什么原因,怎么解決等等。
  總之,不管是什么情況,當網(wǎng)站降級的時(shí)候,我們都應該冷靜下來(lái)想一想為什么會(huì )降級,我們在優(yōu)化網(wǎng)站的時(shí)候是不是做了什么違反搜索引擎規則的事情。思考過(guò)后,再修正優(yōu)化方法等。
  那么,網(wǎng)站降級后,您會(huì )立即做什么?我做SEO好幾年了,也經(jīng)歷過(guò)網(wǎng)站被K的情況,下面我就用SEM來(lái)分析一下這種情況,我會(huì )怎么做,給大家提供一個(gè)參考。
  1、冷靜思考分析網(wǎng)站被降級的原因
  當網(wǎng)站被確認降級后,我們應該冷靜下來(lái)分析原因,不要感到天塌下來(lái)的恐慌。說(shuō)到這里,我會(huì )回憶一下我去年優(yōu)化過(guò)的東西。一個(gè)關(guān)于SEO的企業(yè)網(wǎng)站。當時(shí),該網(wǎng)站是一個(gè)全新的網(wǎng)站。上線(xiàn)不到兩周,我用SEO工具查了一下,發(fā)現權重從2變成了0,同時(shí)發(fā)現指數也從百降到單。算起來(lái),第一頁(yè)和第二頁(yè)都找不到網(wǎng)站域名的首頁(yè)。這時(shí)候我就確定網(wǎng)站已經(jīng)降級了。也就是在這個(gè)時(shí)候,我并沒(méi)有像新手那樣驚慌失措,而是冷靜的思考分析了它功率下降的原因,那個(gè)時(shí)候,
  1.查看百度站長(cháng)平臺的消息提醒
  相信現在大部分站長(cháng)做網(wǎng)站排名優(yōu)化,主要是針對百度的。既然是為百度搜索引擎做的,那怎么能不在站長(cháng)平臺上驗證自己的網(wǎng)站呢?經(jīng)核實(shí),如果網(wǎng)站出現問(wèn)題,一般百度站長(cháng)平臺會(huì )有及時(shí)的信息通知,如:機器人封禁、抓取異常等。這些通知可能是您的網(wǎng)站被剝奪權利的原因。
  2. 分析同一IP下的站點(diǎn)
  因為同一個(gè)IP下其他網(wǎng)站如果被處罰,也會(huì )對本站產(chǎn)生影響,嚴重的還會(huì )導致網(wǎng)站降級。這種情況出現的幾率是比較小的,但是在網(wǎng)站降級的時(shí)候,我們還是需要分析每一個(gè)可能導致網(wǎng)站降級的因素,所以還是要檢查每個(gè)網(wǎng)站在同一個(gè)IP下,沒(méi)有網(wǎng)站在同一個(gè)IP下會(huì )被懲罰。那么,這個(gè)因素就可以排除了。
  3、查看每個(gè)頁(yè)面是否正常
  如果我們在站長(cháng)平臺上沒(méi)有得到任何重要的新聞提醒,那么檢查我們網(wǎng)站的首頁(yè)、欄目頁(yè)、內容頁(yè)是否正常,主要是檢查頁(yè)面中的代碼是否被黑鏈接、被攻擊、等等
  4、查看網(wǎng)站近期是否有重大改版改版
  
  網(wǎng)站大改版意味著(zhù)關(guān)鍵詞的排名和采集
會(huì )有很大的波動(dòng)。當然,這種波動(dòng)可能會(huì )讓網(wǎng)站變得更貴,也可能會(huì )降低權威。網(wǎng)站的大改版會(huì )引起波動(dòng)。百度方面也明確表示,當然如果我們的修改是基于給用戶(hù)帶來(lái)更好的體驗,那么你們網(wǎng)站的降電是短期的事情,很快就會(huì )恢復??赡軙?huì )有更好的排名。
  如果一個(gè)網(wǎng)站改版處理不當,被降權的概率是非常高的。如果處理得當,不會(huì )造成降級。那個(gè)時(shí)候百度沒(méi)有什么改版工具,很多東西基本都是靠自己的經(jīng)驗?,F在百度推出了網(wǎng)站改版工具,當您需要網(wǎng)站改版的時(shí)候,可以好好利用網(wǎng)站改版工具,減少不必要的損失。
  5.是否有作弊
  作弊行為當然包括常見(jiàn)的購買(mǎi)鏈接、黑鏈接、群發(fā)垃圾鏈接等。這些行為都是搜索引擎明令禁止的作弊行為。很有可能這個(gè)站點(diǎn)已經(jīng)被百度發(fā)現是購買(mǎi)鏈接的行為,鏈接到它的鏈接很可能會(huì )受到聯(lián)合處罰。
  6、各大搜索引擎排名
  每個(gè)搜索引擎都會(huì )有自己的一套收錄和排名規則,但是搜索引擎也會(huì )有相同的規則,比如以用戶(hù)為導向,用戶(hù)體驗好的網(wǎng)站會(huì )得到好的排名,如果你的網(wǎng)站在各種情況下的話(huà)你在搜索引擎中被降級,你的網(wǎng)站肯定有很大的問(wèn)題,而且這些問(wèn)題絕對不是一天兩天的事情,有可能你自己已經(jīng)發(fā)現了,所以你得去找及時(shí)解決這些問(wèn)題并改正。
  7、檢查服務(wù)器是否正常
  服務(wù)器的穩定性是絕對影響排名和采集
的最重要因素之一。很多網(wǎng)站經(jīng)常因為服務(wù)器不穩定而降級。這種不穩定主要體現在網(wǎng)站經(jīng)常打不開(kāi),或者只能在某些區域打開(kāi),或者打開(kāi)速度很慢,尤其是百度,非常重視服務(wù)器的穩定性。
  凡德的服務(wù)器不穩定,導致無(wú)法訪(fǎng)問(wèn)。十有八九網(wǎng)站會(huì )降級,而且宕機時(shí)間長(cháng),很難恢復到以前的狀態(tài)。當然,搜索引擎這么看重這個(gè)服務(wù)器也是正常的。因為搜索引擎是相當“用戶(hù)”的,一個(gè)用戶(hù)往往打不開(kāi)你的網(wǎng)站,那么搜索引擎把你排名上去有什么意義呢?
  用戶(hù)點(diǎn)了你的網(wǎng)站也打不開(kāi),嚴重影響用戶(hù)體驗。這嚴重違背了搜索引擎所倡導的具有良好用戶(hù)體驗的網(wǎng)站。因此,被剝奪權利也是恰當的。這個(gè)時(shí)候,我應該盡快去做?;謴筒⒋_保服務(wù)器穩定性。
  8.查看網(wǎng)站日志
  一般網(wǎng)站的服務(wù)器都會(huì )存儲每天的網(wǎng)站日志。這些日志包括用戶(hù)和搜索引擎的一些行為軌跡。從這些網(wǎng)站日志中,我們可以查看降級前后的幾天里,哪些頁(yè)面被搜索引擎蜘蛛抓取過(guò)?爬取頁(yè)面返回的信息是什么?有問(wèn)題嗎?
  目前,網(wǎng)上有相當多的網(wǎng)站日志查看工具。相信大家都知道怎么查看這個(gè)網(wǎng)站的日志。
  9、分析網(wǎng)站的外部鏈接
  因為我優(yōu)化過(guò)的SEO網(wǎng)站是改版網(wǎng)站,域名之前也優(yōu)化過(guò),所以很有可能是之前做的外鏈有問(wèn)題,所以我用百度站長(cháng)工具里的外鏈分析工具檢測并分析了外鏈,不出所料,發(fā)現了大量黃色和賭博外鏈。同時(shí)制作了大量黃色和賭博的錨文本。此類(lèi)外部鏈接有 2,000 多個(gè)。再說(shuō)說(shuō)網(wǎng)站被這種垃圾外鏈包圍會(huì )不會(huì )降級。答案將是不言而喻的,所以我將一一拒絕此類(lèi)外部鏈接。我花了將近兩天的時(shí)間。
  
  2.制定網(wǎng)站SEO策略,解決權重恢復問(wèn)題
  網(wǎng)站降級的原因找到并處理好之后,接下來(lái)就是解決恢復網(wǎng)站權重和排名的問(wèn)題了,那么一個(gè)被降級的網(wǎng)站如何恢復權重呢?這是很多站長(cháng),尤其是新手站長(cháng)每天都在站長(cháng)群里問(wèn)的問(wèn)題,也是他們最苦惱的問(wèn)題。接下來(lái),馬海翔再次以?xún)?yōu)化后的SEO網(wǎng)站為例,說(shuō)說(shuō)我是如何讓被降級的網(wǎng)站重振旗鼓的。
  1、定期定量更新網(wǎng)站原有價(jià)值內容
  網(wǎng)站內容建設的重要性已經(jīng)是老生常談了。百度官方多次強調內容質(zhì)量,并明確表示將優(yōu)先提供更優(yōu)質(zhì)、有利于用戶(hù)體驗的內容頁(yè)面。因此,我會(huì )堅持每天寫(xiě)幾篇SEO行業(yè)相關(guān)的原創(chuàng )文章,上午寫(xiě),下午發(fā)表。堅持了一段時(shí)間后,發(fā)現百度已經(jīng)開(kāi)始重新收錄了。一些長(cháng)尾關(guān)鍵詞也有排名,這是很好的體重恢復表現。
  2.優(yōu)質(zhì)外鏈建設
  與往年相比,外鏈不是很有效,但指的是一些低質(zhì)量的外鏈和一些被稱(chēng)為垃圾的外鏈。百度搜索引擎仍然更加重視高質(zhì)量的外部鏈接。權重高,那么什么是高質(zhì)量的外鏈呢?官方的標準是用戶(hù)主動(dòng)自愿給的鏈接才叫優(yōu)質(zhì)外鏈
  當時(shí)在優(yōu)化網(wǎng)站的時(shí)候,為了建設高質(zhì)量的外鏈,除了做一些相關(guān)行業(yè)的友情鏈接,馬海翔還堅持寫(xiě)了一篇跟SEO相關(guān)的文章,也跟站長(cháng)、SEO或者互聯(lián)網(wǎng)相關(guān)每天向A5站長(cháng)投稿到知名門(mén)戶(hù)網(wǎng)站如、站長(cháng)之家等,文章審核通過(guò)后將被大量轉發(fā),源源不斷帶來(lái)大量高- 優(yōu)化網(wǎng)站的優(yōu)質(zhì)外部鏈接。
  這樣不僅可以引導蜘蛛抓取網(wǎng)站,還可以增加整個(gè)網(wǎng)站的權重,提高網(wǎng)站的關(guān)鍵詞排名,對恢復權重也起到至關(guān)重要的作用。
  3、恢復網(wǎng)站權重一定要有毅力,執行力要強
  一個(gè)被剝奪權利的網(wǎng)站要想恢復,不僅要改變一些不當的優(yōu)化方式,還需要不斷重復以上兩點(diǎn):
  (1)定期、定量更新網(wǎng)站原有價(jià)值內容。
  (2) 建立高質(zhì)量的外部鏈接
  很多站長(cháng)失敗的原因就是不夠堅持。有的站長(cháng)堅持更新半個(gè)月,看網(wǎng)站沒(méi)有任何變化就放棄了。其實(shí)網(wǎng)站優(yōu)化是一個(gè)日積月累的過(guò)程,從量變到質(zhì)變。在恢復SEO站點(diǎn)權重的時(shí)候,我堅持了5個(gè)月。在這5個(gè)月的時(shí)間里,我也想過(guò)放棄,但是想了想還是要堅持做下去,這樣才能考驗自己的判斷能力,所以一直堅持了5個(gè)月,終于把網(wǎng)站做完了百花齊放,很多關(guān)鍵詞排名都很好。
  注釋?zhuān)?br />   網(wǎng)站被降級并不可怕。在我看來(lái),這是鍛煉自己,提高自身能力的最好方式。和朋友聊天的時(shí)候經(jīng)常會(huì )說(shuō)這句話(huà)。如果一個(gè)SEOer工作者沒(méi)有經(jīng)歷過(guò)網(wǎng)站降級到恢復的過(guò)程,那么你就不是一個(gè)合格的SEOer。說(shuō)實(shí)話(huà),在優(yōu)化這個(gè)SEO網(wǎng)站的過(guò)程中,從降權到恢復,我學(xué)到了很多東西。同時(shí),自身的能力也有了質(zhì)的飛躍!

推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2022-11-26 20:59 ? 來(lái)自相關(guān)話(huà)題

  推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建
  折騰了一周的網(wǎng)站陸續上線(xiàn)了。地址在這里
  本站主要匯集了一些優(yōu)秀IT博客的文章索引。用戶(hù)在這里可以看到很多全網(wǎng)大牛和牛X團隊的技術(shù)博客,可以說(shuō)干貨滿(mǎn)滿(mǎn)。
  對于本站的實(shí)現過(guò)程,分8篇來(lái)講解:
  0.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-大綱
  1.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——需求分析
  2.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——技術(shù)選型
  3、手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  4.寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——數據采集
  5.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-數據展示
  6、寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——域名申請及服務(wù)器采購
  7.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-系統上線(xiàn)
  8.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——網(wǎng)站優(yōu)化
  本文是本系列文章的第二篇:手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  項目框架搭建的基本過(guò)程其實(shí)就是最基本的spring boot項目的啟動(dòng)過(guò)程。網(wǎng)上有很多資料。下面簡(jiǎn)單介紹一下項目建設的關(guān)鍵過(guò)程。
  新項目
  使用idea新建一個(gè)maven項目,在pom.xml中引入核心依賴(lài):
  

org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import


org.springframework.boot
spring-boot-starter-data-jpa
${spring.boot.jpa.version}


org.springframework
spring-context-support
${springframework.version}



org.xerial
sqlite-jdbc
3.20.0


org.apache.commons
commons-dbcp2
2.1.1


org.hibernate
hibernate-entitymanager
5.0.3.Final


com.enigmabridge
<p>
hibernate4-sqlite-dialect
0.1.2



org.ehcache
ehcache
${ehcache.version}


net.sf.ehcache
ehcache-core
${ehcache.core.version}



org.projectlombok
lombok
compile
${lombok.version}



org.jsoup
jsoup
1.8.1



com.baidu.aip
java-sdk
4.4.1


org.springframework.boot
spring-boot-starter-test
test
${spring.boot.version}

</p>
  在之前的技術(shù)選型中提到:
  核心配置
  server.port=8081
#模版熱部署
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
#數據庫配置
spring.jpa.show-sql=true
<p>
spring.jpa.database-platform=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.jpa.generate-ddl=true
sqlite.url=jdbc:sqlite:/data/website/blog.db
#百度自然語(yǔ)言處理api調用參數
api.baidu.nlp.app.id=myAppid
api.baidu.nlp.app.key=myAppkey
api.baidu.nlp.secret.key=myKey
</p>
  sqlite數據庫配置
  數據庫使用sqlite,需要配置其數據源
  @Configuration
public class DataSourceConfiguration
{
@Value("${sqlite.url}")
private String sqliteUrl;
@Bean(destroyMethod = "", name = "EmbeddeddataSource")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.sqlite.JDBC");
dataSourceBuilder.url(sqliteUrl);
dataSourceBuilder.type(SQLiteDataSource.class);
return dataSourceBuilder.build();
}
}
  定時(shí)采集任務(wù)配置
  @Component
public class ScheduledCollect {
private Logger logger = LoggerFactory.getLogger(ScheduledCollect.class);
@Autowired
CollectorRepository collectorRepository;
@Autowired
private ApplicationContext applicationContext;
/**
* 每天夜里23點(diǎn)采集數據
**/
@Scheduled(cron="0 0 23 * * ?")
public void collect() {
List collectors = collectorRepository.findAllByState(true);
for(Collector collector :collectors){
AbstractCollect collect = (AbstractCollect) applicationContext.getBean(collector.getClassName());
logger.info("采集:{}",collector.getAuthor());
collect.collect();
}
}
}
  使用百度自然語(yǔ)言處理API對文章進(jìn)行分類(lèi)標注
  雖然主要抓取IT博客,但不排除有些博客會(huì )發(fā)布一些非技術(shù)文章,可以使用上述API對這些非技術(shù)文章進(jìn)行分類(lèi)。這里推薦百度自然語(yǔ)言處理API。騰訊等其他大公司也有類(lèi)似的API。百度的這些API沒(méi)有調用限制,只有QPS限制(不超過(guò)5個(gè)),基本可以滿(mǎn)足我的需求。百度上有很全的文檔介紹如何使用,這里就不贅述了。
  以上就是項目主體的關(guān)鍵配置和代碼,剩下的就是實(shí)現各個(gè)模塊:數據庫層、采集層、頁(yè)面等,就不一一贅述了。
  推薦文章:網(wǎng)站如何不被收錄(網(wǎng)站最近不收錄了怎么辦)
  今天我將與您分享該網(wǎng)站如何不是
  收錄
在知識中,這也將解釋如果最近沒(méi)有收錄的網(wǎng)站怎么辦,如果你能碰巧解決你現在面臨的問(wèn)題,別忘了關(guān)注這個(gè)網(wǎng)站,現在就開(kāi)始吧!
  本文目錄:
  如何解決網(wǎng)站未收錄的問(wèn)題?
  如何解決網(wǎng)站未收錄的問(wèn)題?
  一、新網(wǎng)站,一個(gè)月沒(méi)收錄
  首先,您需要消除服務(wù)器訪(fǎng)問(wèn)和攻擊緩慢的情況,其次排除網(wǎng)站上的灰色和非法內容,然后在網(wǎng)站源代碼中排除DIV+CSS的問(wèn)題。
  以上都沒(méi)問(wèn)題,那就去發(fā)外鏈,最簡(jiǎn)單的,百度搜索“超級外鏈工具”,這個(gè)是免費的。
  如果你覺(jué)得免費還不夠,你可以購買(mǎi)付費的外部鏈接,幾十美元和幾百個(gè)酒吧。
  然后你可以去百度站長(cháng)平臺提交反饋,請百度工作人員幫忙排查原因,發(fā)布首頁(yè)收錄。一般
  情況下,新網(wǎng)站的首頁(yè)一般在兩周到一個(gè)月之間收錄,如果超過(guò)一個(gè)月沒(méi)有收錄,大概率就是有問(wèn)題,如果你的外部鏈接、好友鏈接都做過(guò)了,文章也是每天按時(shí)發(fā)布的,那么基本上你可以判斷網(wǎng)站服務(wù)器, 網(wǎng)站內容、源碼這三者,肯定有問(wèn)題,那么就需要進(jìn)一步深入調查了!
  二、
  企業(yè)站已經(jīng)建了一段時(shí)間,首頁(yè)已經(jīng)收錄,但新發(fā)布的文章沒(méi)有收錄
  首先排查原因:
  網(wǎng)站是否
  修改或更改首頁(yè)關(guān)鍵詞中途,這是影響百度收錄的一個(gè)很大因素,盡量不要對網(wǎng)站做太大改動(dòng),關(guān)鍵詞要在網(wǎng)站開(kāi)頭就確定。
  企業(yè)站,基本上有一個(gè)通病,就是內容一般不持續更新或者更新次數少,導致百度抓取次數相對較少,如果抓取不及時(shí),會(huì )導致收錄緩慢或者沒(méi)有收錄。
  而且企業(yè)網(wǎng)站存在內容同質(zhì)化問(wèn)題的嚴重問(wèn)題,很多網(wǎng)站采集
復制內容,文章原創(chuàng )性差。
  3. 網(wǎng)站降級或K,內容頁(yè)面未收錄怎么辦?
  如果網(wǎng)站是
  KED或降級,首先要找出降級的原因,期間要保證網(wǎng)站能夠正常訪(fǎng)問(wèn),保證網(wǎng)站正常更新,及時(shí)提交新鏈接。
  一個(gè)好的網(wǎng)站被K處罰了,那一定是自己的問(wèn)題,百度官方后臺是記錄每個(gè)網(wǎng)站是否被處罰,可以查具體程度。
  如果首頁(yè)是K,請繼續通過(guò)內容頁(yè)面進(jìn)行補救,需要很長(cháng)時(shí)間;如果欄目或
  頻道頁(yè)面為K,請打開(kāi)其他欄目或二級域名救濟,時(shí)間較長(cháng);
  優(yōu)化網(wǎng)站還是需要形式化的方法,否則成本非常大!
  網(wǎng)站被K或降級的恢復周期一般從1個(gè)月開(kāi)始,3-6個(gè)月是正常的!
  
  4.
  網(wǎng)站新添加的聚合頁(yè)面不包括或排名聚合頁(yè)面
  想要有索引和排名,最常見(jiàn)的是標簽實(shí)踐,它通過(guò)標簽的超鏈接增加聚合頁(yè)面的權重。
  在分析了許多客戶(hù)的網(wǎng)站后,標簽頁(yè)面的收錄和排名通常優(yōu)于文章頁(yè)面。
  如果您的聚合網(wǎng)頁(yè)未編入索引和排名,則問(wèn)題可能是:
  1.標題的寫(xiě)作方式有問(wèn)題
  例如,TDK沒(méi)有設置,標題只是一堆關(guān)鍵詞或幾個(gè)關(guān)鍵詞,并沒(méi)有擴展和延伸其他相關(guān)需求。
  2、聚合頁(yè)面內容相關(guān)性低,內容質(zhì)量小
  作為聚合頁(yè)面,
  它必須需要大量的文章內容來(lái)支持,建議每個(gè)聚合頁(yè)面至少有10條內容,并且盡可能沒(méi)有空白頁(yè)。
  3.網(wǎng)站本身權重低
  網(wǎng)站的首頁(yè)沒(méi)有權限,更別說(shuō)二次聚合頁(yè)面了,建議適當交換一些內部頁(yè)面友情鏈接,最好是相關(guān),10個(gè)左右,不要太多!
  5. 企業(yè)站分類(lèi)欄目排名的SEO優(yōu)化方法
  企業(yè)網(wǎng)站的重心一般會(huì )集中在產(chǎn)品列表頁(yè),但一般來(lái)說(shuō),產(chǎn)品列表頁(yè)很難獲得比較大的流量,所以可以直接將產(chǎn)品頁(yè)面設置為首頁(yè),因為首頁(yè)的收錄會(huì )比欄目頁(yè)面快很多, 并且通過(guò)主頁(yè)上的營(yíng)銷(xiāo)頁(yè)面,有助于更快地對產(chǎn)品關(guān)鍵詞進(jìn)行排名,但應該注意的是,主頁(yè)必須始終更新!
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果收錄
網(wǎng)站的主頁(yè),
  但是不包括網(wǎng)站的內部頁(yè)面,這對網(wǎng)站優(yōu)化也是極其不利的。因為對于一個(gè)網(wǎng)站來(lái)說(shuō),搜索引擎只是一個(gè)收錄
網(wǎng)站的空殼。鑒于網(wǎng)站上頁(yè)面未收錄的情況,本文將提出幾點(diǎn)。
  一、內頁(yè)處于審核期
  搜索引擎中內頁(yè)的顯示并不意味著(zhù)百度不包括在內。有時(shí)百度可能已經(jīng)收錄
了內頁(yè),但尚未發(fā)布。因為百度收錄的文章也需要審核時(shí)間,蜘蛛抓到成功的索引內容會(huì )被錄入數據庫,這也需要兩次審核是否判斷為SPAM,然后發(fā)布和參與排名,具體的發(fā)布時(shí)間和網(wǎng)站的權重有相對直接的關(guān)系, 而百度循環(huán)更新只發(fā)布收錄在新網(wǎng)站中更為常見(jiàn)。
  解決方案:如果希望內頁(yè)盡快發(fā)布,需要保證內容定時(shí)定量更新,并對網(wǎng)站日志進(jìn)行觀(guān)察和分析。只要蜘蛛正常爬行,那么就可以靜靜等待,百度會(huì )給你驚喜。
  二、機器人設置問(wèn)題
  機器人設置還可能導致網(wǎng)站內的頁(yè)面無(wú)法被搜索引擎索引。如果機器人、搜索引擎蜘蛛在設置網(wǎng)站機器人時(shí)受到太大限制,自然搜索引擎蜘蛛就不會(huì )抓取網(wǎng)站內部的頁(yè)面。
  解決方案:檢查語(yǔ)法錯誤是否阻止爬蟲(chóng)爬行,包括元機器人和nofollow標簽。
  三、內部鏈接有問(wèn)題
  不正確的網(wǎng)站內部鏈接也會(huì )給搜索引擎爬行帶來(lái)極大的困擾。例如,如果大量的不良鏈接,不良鏈接,蜘蛛爬行順暢,或者根本無(wú)法抓取,那么這些不良URL也會(huì )導致網(wǎng)站降級。
  解決方案:百度會(huì )檢查網(wǎng)站首頁(yè)、頻道等重要頁(yè)面的錯誤鏈接,會(huì )檢查留言板、評論區等網(wǎng)友可以互動(dòng)功能的不良鏈接,因此站長(cháng)需要盡量避免不良的網(wǎng)站鏈接。
  
  4. 在網(wǎng)站內部頁(yè)面作弊
  如果網(wǎng)站的頁(yè)面是設置的,則有很多作弊方法。例如,通過(guò)設置黑色鏈接,關(guān)鍵詞堆疊等作弊方法,自然搜索引擎蜘蛛也會(huì )減少此類(lèi)頁(yè)面的抓取。
  解決方案:不做關(guān)鍵詞堆,不分組發(fā)送,不做黑鏈等黑帽行為,網(wǎng)站保持穩定,網(wǎng)站優(yōu)化是一步一步進(jìn)行的,不進(jìn)行一些作弊,那么網(wǎng)站優(yōu)化會(huì )越來(lái)越好。
  4. 與文章原創(chuàng )性的相關(guān)性
  標題標簽的設置會(huì )導致類(lèi)似的重復頁(yè)面,或者當采集
的頁(yè)面太多時(shí),百度的數據庫中已經(jīng)有大量類(lèi)似的信息并且不包括你,如果是長(cháng)期操作,會(huì )導致百度降級。
  解決方法:保持文章原創(chuàng )性(高度偽原創(chuàng ))質(zhì)量比數量更重要,最好能夠每天定時(shí)定量更新,這樣百度也有守時(shí)的好習慣。
  5. 服務(wù)器訪(fǎng)問(wèn)
  如果網(wǎng)站服務(wù)器出現問(wèn)題,例如無(wú)法訪(fǎng)問(wèn),速度慢,掛起等。當百度蜘蛛來(lái)索引內容時(shí),反復識別出網(wǎng)站有大量服務(wù)器無(wú)法訪(fǎng)問(wèn)的亂碼或遭遇,那么該網(wǎng)站也會(huì )被列入觀(guān)察名單。
  解決方案:做好網(wǎng)站代碼優(yōu)化,提高頁(yè)面閱讀速度,選擇安全空間服務(wù)商,成熟網(wǎng)站程序編碼,定期更新補丁,定期跟蹤修改文件的痕跡。
  ;
  如何防止您的網(wǎng)站被納入百度
  百度嚴格遵循搜索引擎機器人協(xié)議。用戶(hù)可以設置漫游器文件,以限制您網(wǎng)站的所有頁(yè)面或目錄中的某些頁(yè)面收錄
在百度中。
  如果系統在將“漫游器”文件設置為在以下時(shí)間后被屏蔽之前未抓取您的網(wǎng)站
  被百度編入索引后,新的 Robots 文件通常會(huì )在 48 小時(shí)內生效,生效日期后新頁(yè)面將不再編入索引。需要注意的是,機器人.txt禁止收錄
以前來(lái)自百度的內容,并且可能需要幾個(gè)月的時(shí)間才能將其從搜索結果中刪除。
  如果你拒絕收錄的需求非常緊急,可以在反饋中心反饋,百度會(huì )盡快處理。
  新手應該如何學(xué)習SEO技術(shù)? 新手快速學(xué)習SEO的———方法。
  現在很多朋友都喜歡在網(wǎng)上找視頻資料來(lái)學(xué)習SEO,但是只是看視頻而沒(méi)有人指導你,你學(xué)不到SEO技術(shù),一個(gè)人能自己學(xué)的只是皮。而且很多視頻已經(jīng)過(guò)時(shí)且無(wú)用!
  如果你想成為SEO技術(shù)大師,學(xué)習真正的SEO干貨,可以來(lái)這條裙子,前面是192,中間是586,最后是795!這里有最新的網(wǎng)站優(yōu)化課程免費學(xué)習也有很多人指導你進(jìn)步,不需要你付出任何代價(jià),只要你真的想學(xué),隨便看就不要加,加也是浪費大家的時(shí)間。
  如何將網(wǎng)站設置為禁止抓取工具收錄
  1.網(wǎng)站建好了,當然我們希望搜索引擎收錄的網(wǎng)頁(yè)越多越好,但有時(shí)候我們也會(huì )遇到網(wǎng)站不需要被搜索引擎收錄的情況。要啟用新域名作為鏡像網(wǎng)站,主要用于PPC推廣,此時(shí),我們必須找到一種方法來(lái)防止搜索引擎蜘蛛抓取和索引我們鏡像網(wǎng)站的所有頁(yè)面。因為如果鏡像網(wǎng)站也收錄
在搜索引擎中,很可能會(huì )影響官方網(wǎng)站在搜索引擎中的權威性。
  2.阻止主流搜索引擎爬蟲(chóng)(蜘蛛)抓取/索引/索引網(wǎng)頁(yè)的幾種想法。這是一個(gè)全站范圍的封鎖,是盡可能屏蔽主流搜索引擎的所有爬蟲(chóng)。
  3、通過(guò)機器人.txt
  文件篩選,可以說(shuō)機器人.txt文件是最重要的渠道(可以與搜索引擎建立直接對話(huà))。要阻止元標記,請將以下語(yǔ)句添加到頁(yè)面的所有頭文件中:meta name=“robots” content=“noindex, nofollow”。直接通過(guò)服務(wù)器(例如 Linux/nginx)配置文件設置過(guò)濾蜘蛛/機器人的 IP 范圍。
  這是
  最后介紹網(wǎng)站如何不包括,如果網(wǎng)站最近沒(méi)有收錄怎么辦,不知道你是否從中找到你需要的信息?如果您仍然想了解更多信息,請記住關(guān)注此網(wǎng)站。 查看全部

  推薦文章:手把手寫(xiě)個(gè)爬取it博客的網(wǎng)站-框架搭建
  折騰了一周的網(wǎng)站陸續上線(xiàn)了。地址在這里
  本站主要匯集了一些優(yōu)秀IT博客的文章索引。用戶(hù)在這里可以看到很多全網(wǎng)大牛和牛X團隊的技術(shù)博客,可以說(shuō)干貨滿(mǎn)滿(mǎn)。
  對于本站的實(shí)現過(guò)程,分8篇來(lái)講解:
  0.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-大綱
  1.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——需求分析
  2.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——技術(shù)選型
  3、手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  4.寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——數據采集
  5.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-數據展示
  6、寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——域名申請及服務(wù)器采購
  7.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站-系統上線(xiàn)
  8.手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——網(wǎng)站優(yōu)化
  本文是本系列文章的第二篇:手寫(xiě)一個(gè)爬取IT博客的網(wǎng)站——框架搭建
  項目框架搭建的基本過(guò)程其實(shí)就是最基本的spring boot項目的啟動(dòng)過(guò)程。網(wǎng)上有很多資料。下面簡(jiǎn)單介紹一下項目建設的關(guān)鍵過(guò)程。
  新項目
  使用idea新建一個(gè)maven項目,在pom.xml中引入核心依賴(lài):
  

org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import


org.springframework.boot
spring-boot-starter-data-jpa
${spring.boot.jpa.version}


org.springframework
spring-context-support
${springframework.version}



org.xerial
sqlite-jdbc
3.20.0


org.apache.commons
commons-dbcp2
2.1.1


org.hibernate
hibernate-entitymanager
5.0.3.Final


com.enigmabridge
<p>
hibernate4-sqlite-dialect
0.1.2



org.ehcache
ehcache
${ehcache.version}


net.sf.ehcache
ehcache-core
${ehcache.core.version}



org.projectlombok
lombok
compile
${lombok.version}



org.jsoup
jsoup
1.8.1



com.baidu.aip
java-sdk
4.4.1


org.springframework.boot
spring-boot-starter-test
test
${spring.boot.version}

</p>
  在之前的技術(shù)選型中提到:
  核心配置
  server.port=8081
#模版熱部署
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
#數據庫配置
spring.jpa.show-sql=true
<p>
spring.jpa.database-platform=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.jpa.generate-ddl=true
sqlite.url=jdbc:sqlite:/data/website/blog.db
#百度自然語(yǔ)言處理api調用參數
api.baidu.nlp.app.id=myAppid
api.baidu.nlp.app.key=myAppkey
api.baidu.nlp.secret.key=myKey
</p>
  sqlite數據庫配置
  數據庫使用sqlite,需要配置其數據源
  @Configuration
public class DataSourceConfiguration
{
@Value("${sqlite.url}")
private String sqliteUrl;
@Bean(destroyMethod = "", name = "EmbeddeddataSource")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.sqlite.JDBC");
dataSourceBuilder.url(sqliteUrl);
dataSourceBuilder.type(SQLiteDataSource.class);
return dataSourceBuilder.build();
}
}
  定時(shí)采集任務(wù)配置
  @Component
public class ScheduledCollect {
private Logger logger = LoggerFactory.getLogger(ScheduledCollect.class);
@Autowired
CollectorRepository collectorRepository;
@Autowired
private ApplicationContext applicationContext;
/**
* 每天夜里23點(diǎn)采集數據
**/
@Scheduled(cron="0 0 23 * * ?")
public void collect() {
List collectors = collectorRepository.findAllByState(true);
for(Collector collector :collectors){
AbstractCollect collect = (AbstractCollect) applicationContext.getBean(collector.getClassName());
logger.info("采集:{}",collector.getAuthor());
collect.collect();
}
}
}
  使用百度自然語(yǔ)言處理API對文章進(jìn)行分類(lèi)標注
  雖然主要抓取IT博客,但不排除有些博客會(huì )發(fā)布一些非技術(shù)文章,可以使用上述API對這些非技術(shù)文章進(jìn)行分類(lèi)。這里推薦百度自然語(yǔ)言處理API。騰訊等其他大公司也有類(lèi)似的API。百度的這些API沒(méi)有調用限制,只有QPS限制(不超過(guò)5個(gè)),基本可以滿(mǎn)足我的需求。百度上有很全的文檔介紹如何使用,這里就不贅述了。
  以上就是項目主體的關(guān)鍵配置和代碼,剩下的就是實(shí)現各個(gè)模塊:數據庫層、采集層、頁(yè)面等,就不一一贅述了。
  推薦文章:網(wǎng)站如何不被收錄(網(wǎng)站最近不收錄了怎么辦)
  今天我將與您分享該網(wǎng)站如何不是
  收錄
在知識中,這也將解釋如果最近沒(méi)有收錄的網(wǎng)站怎么辦,如果你能碰巧解決你現在面臨的問(wèn)題,別忘了關(guān)注這個(gè)網(wǎng)站,現在就開(kāi)始吧!
  本文目錄:
  如何解決網(wǎng)站未收錄的問(wèn)題?
  如何解決網(wǎng)站未收錄的問(wèn)題?
  一、新網(wǎng)站,一個(gè)月沒(méi)收錄
  首先,您需要消除服務(wù)器訪(fǎng)問(wèn)和攻擊緩慢的情況,其次排除網(wǎng)站上的灰色和非法內容,然后在網(wǎng)站源代碼中排除DIV+CSS的問(wèn)題。
  以上都沒(méi)問(wèn)題,那就去發(fā)外鏈,最簡(jiǎn)單的,百度搜索“超級外鏈工具”,這個(gè)是免費的。
  如果你覺(jué)得免費還不夠,你可以購買(mǎi)付費的外部鏈接,幾十美元和幾百個(gè)酒吧。
  然后你可以去百度站長(cháng)平臺提交反饋,請百度工作人員幫忙排查原因,發(fā)布首頁(yè)收錄。一般
  情況下,新網(wǎng)站的首頁(yè)一般在兩周到一個(gè)月之間收錄,如果超過(guò)一個(gè)月沒(méi)有收錄,大概率就是有問(wèn)題,如果你的外部鏈接、好友鏈接都做過(guò)了,文章也是每天按時(shí)發(fā)布的,那么基本上你可以判斷網(wǎng)站服務(wù)器, 網(wǎng)站內容、源碼這三者,肯定有問(wèn)題,那么就需要進(jìn)一步深入調查了!
  二、
  企業(yè)站已經(jīng)建了一段時(shí)間,首頁(yè)已經(jīng)收錄,但新發(fā)布的文章沒(méi)有收錄
  首先排查原因:
  網(wǎng)站是否
  修改或更改首頁(yè)關(guān)鍵詞中途,這是影響百度收錄的一個(gè)很大因素,盡量不要對網(wǎng)站做太大改動(dòng),關(guān)鍵詞要在網(wǎng)站開(kāi)頭就確定。
  企業(yè)站,基本上有一個(gè)通病,就是內容一般不持續更新或者更新次數少,導致百度抓取次數相對較少,如果抓取不及時(shí),會(huì )導致收錄緩慢或者沒(méi)有收錄。
  而且企業(yè)網(wǎng)站存在內容同質(zhì)化問(wèn)題的嚴重問(wèn)題,很多網(wǎng)站采集
復制內容,文章原創(chuàng )性差。
  3. 網(wǎng)站降級或K,內容頁(yè)面未收錄怎么辦?
  如果網(wǎng)站是
  KED或降級,首先要找出降級的原因,期間要保證網(wǎng)站能夠正常訪(fǎng)問(wèn),保證網(wǎng)站正常更新,及時(shí)提交新鏈接。
  一個(gè)好的網(wǎng)站被K處罰了,那一定是自己的問(wèn)題,百度官方后臺是記錄每個(gè)網(wǎng)站是否被處罰,可以查具體程度。
  如果首頁(yè)是K,請繼續通過(guò)內容頁(yè)面進(jìn)行補救,需要很長(cháng)時(shí)間;如果欄目或
  頻道頁(yè)面為K,請打開(kāi)其他欄目或二級域名救濟,時(shí)間較長(cháng);
  優(yōu)化網(wǎng)站還是需要形式化的方法,否則成本非常大!
  網(wǎng)站被K或降級的恢復周期一般從1個(gè)月開(kāi)始,3-6個(gè)月是正常的!
  
  4.
  網(wǎng)站新添加的聚合頁(yè)面不包括或排名聚合頁(yè)面
  想要有索引和排名,最常見(jiàn)的是標簽實(shí)踐,它通過(guò)標簽的超鏈接增加聚合頁(yè)面的權重。
  在分析了許多客戶(hù)的網(wǎng)站后,標簽頁(yè)面的收錄和排名通常優(yōu)于文章頁(yè)面。
  如果您的聚合網(wǎng)頁(yè)未編入索引和排名,則問(wèn)題可能是:
  1.標題的寫(xiě)作方式有問(wèn)題
  例如,TDK沒(méi)有設置,標題只是一堆關(guān)鍵詞或幾個(gè)關(guān)鍵詞,并沒(méi)有擴展和延伸其他相關(guān)需求。
  2、聚合頁(yè)面內容相關(guān)性低,內容質(zhì)量小
  作為聚合頁(yè)面,
  它必須需要大量的文章內容來(lái)支持,建議每個(gè)聚合頁(yè)面至少有10條內容,并且盡可能沒(méi)有空白頁(yè)。
  3.網(wǎng)站本身權重低
  網(wǎng)站的首頁(yè)沒(méi)有權限,更別說(shuō)二次聚合頁(yè)面了,建議適當交換一些內部頁(yè)面友情鏈接,最好是相關(guān),10個(gè)左右,不要太多!
  5. 企業(yè)站分類(lèi)欄目排名的SEO優(yōu)化方法
  企業(yè)網(wǎng)站的重心一般會(huì )集中在產(chǎn)品列表頁(yè),但一般來(lái)說(shuō),產(chǎn)品列表頁(yè)很難獲得比較大的流量,所以可以直接將產(chǎn)品頁(yè)面設置為首頁(yè),因為首頁(yè)的收錄會(huì )比欄目頁(yè)面快很多, 并且通過(guò)主頁(yè)上的營(yíng)銷(xiāo)頁(yè)面,有助于更快地對產(chǎn)品關(guān)鍵詞進(jìn)行排名,但應該注意的是,主頁(yè)必須始終更新!
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果網(wǎng)站頁(yè)面未收錄
在內,我該怎么辦?
  如果收錄
網(wǎng)站的主頁(yè),
  但是不包括網(wǎng)站的內部頁(yè)面,這對網(wǎng)站優(yōu)化也是極其不利的。因為對于一個(gè)網(wǎng)站來(lái)說(shuō),搜索引擎只是一個(gè)收錄
網(wǎng)站的空殼。鑒于網(wǎng)站上頁(yè)面未收錄的情況,本文將提出幾點(diǎn)。
  一、內頁(yè)處于審核期
  搜索引擎中內頁(yè)的顯示并不意味著(zhù)百度不包括在內。有時(shí)百度可能已經(jīng)收錄
了內頁(yè),但尚未發(fā)布。因為百度收錄的文章也需要審核時(shí)間,蜘蛛抓到成功的索引內容會(huì )被錄入數據庫,這也需要兩次審核是否判斷為SPAM,然后發(fā)布和參與排名,具體的發(fā)布時(shí)間和網(wǎng)站的權重有相對直接的關(guān)系, 而百度循環(huán)更新只發(fā)布收錄在新網(wǎng)站中更為常見(jiàn)。
  解決方案:如果希望內頁(yè)盡快發(fā)布,需要保證內容定時(shí)定量更新,并對網(wǎng)站日志進(jìn)行觀(guān)察和分析。只要蜘蛛正常爬行,那么就可以靜靜等待,百度會(huì )給你驚喜。
  二、機器人設置問(wèn)題
  機器人設置還可能導致網(wǎng)站內的頁(yè)面無(wú)法被搜索引擎索引。如果機器人、搜索引擎蜘蛛在設置網(wǎng)站機器人時(shí)受到太大限制,自然搜索引擎蜘蛛就不會(huì )抓取網(wǎng)站內部的頁(yè)面。
  解決方案:檢查語(yǔ)法錯誤是否阻止爬蟲(chóng)爬行,包括元機器人和nofollow標簽。
  三、內部鏈接有問(wèn)題
  不正確的網(wǎng)站內部鏈接也會(huì )給搜索引擎爬行帶來(lái)極大的困擾。例如,如果大量的不良鏈接,不良鏈接,蜘蛛爬行順暢,或者根本無(wú)法抓取,那么這些不良URL也會(huì )導致網(wǎng)站降級。
  解決方案:百度會(huì )檢查網(wǎng)站首頁(yè)、頻道等重要頁(yè)面的錯誤鏈接,會(huì )檢查留言板、評論區等網(wǎng)友可以互動(dòng)功能的不良鏈接,因此站長(cháng)需要盡量避免不良的網(wǎng)站鏈接。
  
  4. 在網(wǎng)站內部頁(yè)面作弊
  如果網(wǎng)站的頁(yè)面是設置的,則有很多作弊方法。例如,通過(guò)設置黑色鏈接,關(guān)鍵詞堆疊等作弊方法,自然搜索引擎蜘蛛也會(huì )減少此類(lèi)頁(yè)面的抓取。
  解決方案:不做關(guān)鍵詞堆,不分組發(fā)送,不做黑鏈等黑帽行為,網(wǎng)站保持穩定,網(wǎng)站優(yōu)化是一步一步進(jìn)行的,不進(jìn)行一些作弊,那么網(wǎng)站優(yōu)化會(huì )越來(lái)越好。
  4. 與文章原創(chuàng )性的相關(guān)性
  標題標簽的設置會(huì )導致類(lèi)似的重復頁(yè)面,或者當采集
的頁(yè)面太多時(shí),百度的數據庫中已經(jīng)有大量類(lèi)似的信息并且不包括你,如果是長(cháng)期操作,會(huì )導致百度降級。
  解決方法:保持文章原創(chuàng )性(高度偽原創(chuàng ))質(zhì)量比數量更重要,最好能夠每天定時(shí)定量更新,這樣百度也有守時(shí)的好習慣。
  5. 服務(wù)器訪(fǎng)問(wèn)
  如果網(wǎng)站服務(wù)器出現問(wèn)題,例如無(wú)法訪(fǎng)問(wèn),速度慢,掛起等。當百度蜘蛛來(lái)索引內容時(shí),反復識別出網(wǎng)站有大量服務(wù)器無(wú)法訪(fǎng)問(wèn)的亂碼或遭遇,那么該網(wǎng)站也會(huì )被列入觀(guān)察名單。
  解決方案:做好網(wǎng)站代碼優(yōu)化,提高頁(yè)面閱讀速度,選擇安全空間服務(wù)商,成熟網(wǎng)站程序編碼,定期更新補丁,定期跟蹤修改文件的痕跡。
  ;
  如何防止您的網(wǎng)站被納入百度
  百度嚴格遵循搜索引擎機器人協(xié)議。用戶(hù)可以設置漫游器文件,以限制您網(wǎng)站的所有頁(yè)面或目錄中的某些頁(yè)面收錄
在百度中。
  如果系統在將“漫游器”文件設置為在以下時(shí)間后被屏蔽之前未抓取您的網(wǎng)站
  被百度編入索引后,新的 Robots 文件通常會(huì )在 48 小時(shí)內生效,生效日期后新頁(yè)面將不再編入索引。需要注意的是,機器人.txt禁止收錄
以前來(lái)自百度的內容,并且可能需要幾個(gè)月的時(shí)間才能將其從搜索結果中刪除。
  如果你拒絕收錄的需求非常緊急,可以在反饋中心反饋,百度會(huì )盡快處理。
  新手應該如何學(xué)習SEO技術(shù)? 新手快速學(xué)習SEO的———方法。
  現在很多朋友都喜歡在網(wǎng)上找視頻資料來(lái)學(xué)習SEO,但是只是看視頻而沒(méi)有人指導你,你學(xué)不到SEO技術(shù),一個(gè)人能自己學(xué)的只是皮。而且很多視頻已經(jīng)過(guò)時(shí)且無(wú)用!
  如果你想成為SEO技術(shù)大師,學(xué)習真正的SEO干貨,可以來(lái)這條裙子,前面是192,中間是586,最后是795!這里有最新的網(wǎng)站優(yōu)化課程免費學(xué)習也有很多人指導你進(jìn)步,不需要你付出任何代價(jià),只要你真的想學(xué),隨便看就不要加,加也是浪費大家的時(shí)間。
  如何將網(wǎng)站設置為禁止抓取工具收錄
  1.網(wǎng)站建好了,當然我們希望搜索引擎收錄的網(wǎng)頁(yè)越多越好,但有時(shí)候我們也會(huì )遇到網(wǎng)站不需要被搜索引擎收錄的情況。要啟用新域名作為鏡像網(wǎng)站,主要用于PPC推廣,此時(shí),我們必須找到一種方法來(lái)防止搜索引擎蜘蛛抓取和索引我們鏡像網(wǎng)站的所有頁(yè)面。因為如果鏡像網(wǎng)站也收錄
在搜索引擎中,很可能會(huì )影響官方網(wǎng)站在搜索引擎中的權威性。
  2.阻止主流搜索引擎爬蟲(chóng)(蜘蛛)抓取/索引/索引網(wǎng)頁(yè)的幾種想法。這是一個(gè)全站范圍的封鎖,是盡可能屏蔽主流搜索引擎的所有爬蟲(chóng)。
  3、通過(guò)機器人.txt
  文件篩選,可以說(shuō)機器人.txt文件是最重要的渠道(可以與搜索引擎建立直接對話(huà))。要阻止元標記,請將以下語(yǔ)句添加到頁(yè)面的所有頭文件中:meta name=“robots” content=“noindex, nofollow”。直接通過(guò)服務(wù)器(例如 Linux/nginx)配置文件設置過(guò)濾蜘蛛/機器人的 IP 范圍。
  這是
  最后介紹網(wǎng)站如何不包括,如果網(wǎng)站最近沒(méi)有收錄怎么辦,不知道你是否從中找到你需要的信息?如果您仍然想了解更多信息,請記住關(guān)注此網(wǎng)站。

教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 139 次瀏覽 ? 2022-11-26 12:39 ? 來(lái)自相關(guān)話(huà)題

  教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法
  大家好,我是三分鐘學(xué)院公眾號郭麗媛~
  本期我們就來(lái)聊一聊button post的寫(xiě)法。我們希望通過(guò)對這個(gè)問(wèn)題的研究,可以寫(xiě)出常見(jiàn)的投稿。
  下面開(kāi)始解釋?zhuān)?br />   1.使用的命令:url.httppost
  之所以選擇這條命令,是因為它的參數比較齊全。
  2、post請求的參數有哪些(可能會(huì )用到,不是全部)
 ?、賣(mài)rl 提交請求的URL
 ?、谡埱髷祿簆ost的核心參數就是向服務(wù)器發(fā)送什么數據
 ?、踙eader 協(xié)議頭,協(xié)議頭中的參數:
  Content-Type:內容類(lèi)型
  字符集:編碼
  
  User-Agent:設備信息,用戶(hù)代理,用來(lái)偽裝成瀏覽器或其他
 ?、躢ookie:我理解為緩存,在本地存儲一些數據,就像我們登錄一個(gè)網(wǎng)站,第一次登錄后,第二次打開(kāi)網(wǎng)站發(fā)現自動(dòng)登錄了,這個(gè)跟餅干。
  這些是常用的參數。當我寫(xiě)post請求時(shí),我不會(huì )寫(xiě)所有的。根據不同的項目,我省略了能省略的。
  3.不同類(lèi)型的腳本執行貼
 ?、?連接到指定的api。這種post請求是按照api文檔的要求寫(xiě)的。寫(xiě)任何你需要的參數。通常,這種類(lèi)型的一些參數可以省略。
 ?、趨f(xié)議抓包,通過(guò)抓包工具獲取的post數據,此類(lèi)post請求需要填寫(xiě)所有參數。
  4.寫(xiě)post請求的腳本注意事項
  請求數據的類(lèi)型,常見(jiàn)的有3種腳本類(lèi)型
  提交字符串,提交表單,提交json
  具體的提交類(lèi)型取決于Content-Type,例如
  Content-Type application/json
  這個(gè)就是提交json格式的,這個(gè)很重要。如果選擇錯誤的類(lèi)型,即使數據正確,也不會(huì )提交成功。
  
  投稿種類(lèi)較多,請注意不要填錯。
  五、post請求碼顯示
  Dim uri = "網(wǎng)址"
Dim data = "" //參數格式根據Content-Type來(lái)定
Dim header ={"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 ", "Content-Type":"application/json"}
Dim cookie=""
Dim ret = Url.HttpPost({"url":uri,"data":data,"code":"UTF-8", "cookie":cookie, "header":header})
TracePrint ret
  這個(gè)模板可以直接套用,大部分post請求都可以完成。
  為了防止腳本的post請求因為寫(xiě)錯而不能正常運行,我們還可以使用在線(xiàn)post測試工具來(lái)測試我們提交的數據是否正確。
  所有這些網(wǎng)站都很好。測試順利完成后,就可以放心編寫(xiě)腳本了。
  關(guān)鍵詞 文章采集 教程:dedeCMS插件-dedeCMS插件大全
  什么是dedeCMS插件,
  顧名思義,dedeCMS插件是搜索引擎優(yōu)化過(guò)程中使用的輔助插件。而很多SEO朋友不知道如何使用dedeCMS插件?今天,博主將教您借助免費的dedeCMS插件快速提高網(wǎng)站包容性和關(guān)鍵詞排名。其實(shí)網(wǎng)站SEO優(yōu)化并不是很難做到的,只要你理清思路,掌握正確的優(yōu)化方法和技巧,不斷探索和研究,你一定能做好網(wǎng)站SEO優(yōu)化。
  使用免費的dedeCMS創(chuàng )建大量?jì)热?br />   1. 通過(guò)dedeCMS生成行業(yè)關(guān)鍵詞,從下拉詞、相關(guān)搜索詞和長(cháng)尾詞關(guān)鍵詞。您可以設置自動(dòng)移除不相關(guān)的字詞。根據文章的關(guān)鍵詞集合,可以創(chuàng )建不同的網(wǎng)站欄目來(lái)采集
不同的關(guān)鍵詞文章,并支持不同的域名集合。
  2.自動(dòng)過(guò)濾和采集
文章中其他網(wǎng)站的信息
  3.支持多平臺源采集(覆蓋全網(wǎng)行業(yè)新聞源,海量?jì)热輲?,采集最新內容)?br />   4.支持在其他平臺上進(jìn)行圖像本地化或存儲
  5.自動(dòng)掛機采集
!它可以在本地采集
,也可以通過(guò)軟件設置自動(dòng)更新到網(wǎng)站,每更新的文章都會(huì )自動(dòng)推送到搜索引擎。促進(jìn)網(wǎng)站包容性
  
  詳細說(shuō)明:如果一個(gè)網(wǎng)站想要大量的流量,它需要大量的關(guān)鍵詞排名。網(wǎng)站頁(yè)面上有限的關(guān)鍵詞需要大量的關(guān)鍵詞頁(yè)面,大量的關(guān)鍵詞需要大量的關(guān)鍵詞文章。
  二、dedeCMS插件-SEO優(yōu)化功能提供頁(yè)面原創(chuàng )性
  1.標題后綴設置(實(shí)現標題差異化和更好的收錄)。
  2.內容關(guān)鍵詞插入(增加關(guān)鍵詞密度以提高關(guān)鍵詞排名)。
  3.自動(dòng)圖片匹配(當文章沒(méi)有被工具圖片時(shí)實(shí)現自動(dòng)圖片匹配)。
  4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送到搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄)。
  5.隨機點(diǎn)贊-隨機閱讀-隨機作者(提高頁(yè)面原創(chuàng )性,增強用戶(hù)體驗)。6.內容與標題
  一致(使內容與標題100%相關(guān),提高排名)。
  7.自動(dòng)內部鏈接(文章內容自動(dòng)生成內部鏈接的功能,有助于引導頁(yè)面蜘蛛抓取,提高頁(yè)面權限)。
  8.定期發(fā)布(定期發(fā)布網(wǎng)站內容可以讓搜索引擎養成定期抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄率)。
  詳細說(shuō)明:通過(guò)上述SEO優(yōu)化功能提高網(wǎng)站頁(yè)面的原創(chuàng )性,以及增加網(wǎng)頁(yè)關(guān)鍵詞密度,吸引蜘蛛抓取更多頁(yè)面,并給予關(guān)鍵詞更高的排名。
  C. 免費 dedeCMS - 批量管理網(wǎng)站
  
  1.批量監控不同的CMS網(wǎng)站數據(無(wú)論您的網(wǎng)站是帝國、易游、ZBLOG、dedeCMS、WP、小旋風(fēng)、站群、PB、蘋(píng)果、索威等各大CMS,都可以同時(shí)批量監控管理和發(fā)布工具)。
  2.設置批量發(fā)布次數(可以設置發(fā)布時(shí)間/單日發(fā)布總數)。
  3.可以設置不同關(guān)鍵詞的文章發(fā)布不同的欄目
  4.偽原創(chuàng )保留字(將文章原創(chuàng )時(shí)的核心詞設置為不偽原創(chuàng ))。
  5.軟件直接監控發(fā)布,待發(fā)布,是否是偽原創(chuàng ),發(fā)布狀態(tài),URL,程序,發(fā)布時(shí)間等
  6.通過(guò)軟件,可以直接查看每日蜘蛛,索引和網(wǎng)站權限!
  詳細說(shuō)明:批量監控管理網(wǎng)站,省去了每個(gè)網(wǎng)站登錄后查看數據的需要,讓數據在插件工具中一目了然。
  要使網(wǎng)站
  注重方法和效率,還要不斷優(yōu)化問(wèn)題的細節,通過(guò)免費的dedeCMS插件工具可以節省很多時(shí)間把問(wèn)題的其他細節做得更好,只有這樣網(wǎng)站的排名流量才會(huì )上升得更快!看完這篇文章,如果你覺(jué)得不錯,不妨采集
或者發(fā)給需要的朋友和同事,每天關(guān)注博主帶你了解各種SEO經(jīng)驗,打通你的仁都兩條脈絡(luò )! 查看全部

  教程:「按鍵精靈安卓版」「基礎知識」按鍵post基本寫(xiě)法
  大家好,我是三分鐘學(xué)院公眾號郭麗媛~
  本期我們就來(lái)聊一聊button post的寫(xiě)法。我們希望通過(guò)對這個(gè)問(wèn)題的研究,可以寫(xiě)出常見(jiàn)的投稿。
  下面開(kāi)始解釋?zhuān)?br />   1.使用的命令:url.httppost
  之所以選擇這條命令,是因為它的參數比較齊全。
  2、post請求的參數有哪些(可能會(huì )用到,不是全部)
 ?、賣(mài)rl 提交請求的URL
 ?、谡埱髷祿簆ost的核心參數就是向服務(wù)器發(fā)送什么數據
 ?、踙eader 協(xié)議頭,協(xié)議頭中的參數:
  Content-Type:內容類(lèi)型
  字符集:編碼
  
  User-Agent:設備信息,用戶(hù)代理,用來(lái)偽裝成瀏覽器或其他
 ?、躢ookie:我理解為緩存,在本地存儲一些數據,就像我們登錄一個(gè)網(wǎng)站,第一次登錄后,第二次打開(kāi)網(wǎng)站發(fā)現自動(dòng)登錄了,這個(gè)跟餅干。
  這些是常用的參數。當我寫(xiě)post請求時(shí),我不會(huì )寫(xiě)所有的。根據不同的項目,我省略了能省略的。
  3.不同類(lèi)型的腳本執行貼
 ?、?連接到指定的api。這種post請求是按照api文檔的要求寫(xiě)的。寫(xiě)任何你需要的參數。通常,這種類(lèi)型的一些參數可以省略。
 ?、趨f(xié)議抓包,通過(guò)抓包工具獲取的post數據,此類(lèi)post請求需要填寫(xiě)所有參數。
  4.寫(xiě)post請求的腳本注意事項
  請求數據的類(lèi)型,常見(jiàn)的有3種腳本類(lèi)型
  提交字符串,提交表單,提交json
  具體的提交類(lèi)型取決于Content-Type,例如
  Content-Type application/json
  這個(gè)就是提交json格式的,這個(gè)很重要。如果選擇錯誤的類(lèi)型,即使數據正確,也不會(huì )提交成功。
  
  投稿種類(lèi)較多,請注意不要填錯。
  五、post請求碼顯示
  Dim uri = "網(wǎng)址"
Dim data = "" //參數格式根據Content-Type來(lái)定
Dim header ={"User-Agent":"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 ", "Content-Type":"application/json"}
Dim cookie=""
Dim ret = Url.HttpPost({"url":uri,"data":data,"code":"UTF-8", "cookie":cookie, "header":header})
TracePrint ret
  這個(gè)模板可以直接套用,大部分post請求都可以完成。
  為了防止腳本的post請求因為寫(xiě)錯而不能正常運行,我們還可以使用在線(xiàn)post測試工具來(lái)測試我們提交的數據是否正確。
  所有這些網(wǎng)站都很好。測試順利完成后,就可以放心編寫(xiě)腳本了。
  關(guān)鍵詞 文章采集 教程:dedeCMS插件-dedeCMS插件大全
  什么是dedeCMS插件,
  顧名思義,dedeCMS插件是搜索引擎優(yōu)化過(guò)程中使用的輔助插件。而很多SEO朋友不知道如何使用dedeCMS插件?今天,博主將教您借助免費的dedeCMS插件快速提高網(wǎng)站包容性和關(guān)鍵詞排名。其實(shí)網(wǎng)站SEO優(yōu)化并不是很難做到的,只要你理清思路,掌握正確的優(yōu)化方法和技巧,不斷探索和研究,你一定能做好網(wǎng)站SEO優(yōu)化。
  使用免費的dedeCMS創(chuàng )建大量?jì)热?br />   1. 通過(guò)dedeCMS生成行業(yè)關(guān)鍵詞,從下拉詞、相關(guān)搜索詞和長(cháng)尾詞關(guān)鍵詞。您可以設置自動(dòng)移除不相關(guān)的字詞。根據文章的關(guān)鍵詞集合,可以創(chuàng )建不同的網(wǎng)站欄目來(lái)采集
不同的關(guān)鍵詞文章,并支持不同的域名集合。
  2.自動(dòng)過(guò)濾和采集
文章中其他網(wǎng)站的信息
  3.支持多平臺源采集(覆蓋全網(wǎng)行業(yè)新聞源,海量?jì)热輲?,采集最新內容)?br />   4.支持在其他平臺上進(jìn)行圖像本地化或存儲
  5.自動(dòng)掛機采集
!它可以在本地采集
,也可以通過(guò)軟件設置自動(dòng)更新到網(wǎng)站,每更新的文章都會(huì )自動(dòng)推送到搜索引擎。促進(jìn)網(wǎng)站包容性
  
  詳細說(shuō)明:如果一個(gè)網(wǎng)站想要大量的流量,它需要大量的關(guān)鍵詞排名。網(wǎng)站頁(yè)面上有限的關(guān)鍵詞需要大量的關(guān)鍵詞頁(yè)面,大量的關(guān)鍵詞需要大量的關(guān)鍵詞文章。
  二、dedeCMS插件-SEO優(yōu)化功能提供頁(yè)面原創(chuàng )性
  1.標題后綴設置(實(shí)現標題差異化和更好的收錄)。
  2.內容關(guān)鍵詞插入(增加關(guān)鍵詞密度以提高關(guān)鍵詞排名)。
  3.自動(dòng)圖片匹配(當文章沒(méi)有被工具圖片時(shí)實(shí)現自動(dòng)圖片匹配)。
  4、搜索引擎推送(文章發(fā)布成功后,主動(dòng)將文章推送到搜索引擎,保證新鏈接能及時(shí)被搜索引擎收錄)。
  5.隨機點(diǎn)贊-隨機閱讀-隨機作者(提高頁(yè)面原創(chuàng )性,增強用戶(hù)體驗)。6.內容與標題
  一致(使內容與標題100%相關(guān),提高排名)。
  7.自動(dòng)內部鏈接(文章內容自動(dòng)生成內部鏈接的功能,有助于引導頁(yè)面蜘蛛抓取,提高頁(yè)面權限)。
  8.定期發(fā)布(定期發(fā)布網(wǎng)站內容可以讓搜索引擎養成定期抓取網(wǎng)頁(yè)的習慣,從而提高網(wǎng)站的收錄率)。
  詳細說(shuō)明:通過(guò)上述SEO優(yōu)化功能提高網(wǎng)站頁(yè)面的原創(chuàng )性,以及增加網(wǎng)頁(yè)關(guān)鍵詞密度,吸引蜘蛛抓取更多頁(yè)面,并給予關(guān)鍵詞更高的排名。
  C. 免費 dedeCMS - 批量管理網(wǎng)站
  
  1.批量監控不同的CMS網(wǎng)站數據(無(wú)論您的網(wǎng)站是帝國、易游、ZBLOG、dedeCMS、WP、小旋風(fēng)、站群、PB、蘋(píng)果、索威等各大CMS,都可以同時(shí)批量監控管理和發(fā)布工具)。
  2.設置批量發(fā)布次數(可以設置發(fā)布時(shí)間/單日發(fā)布總數)。
  3.可以設置不同關(guān)鍵詞的文章發(fā)布不同的欄目
  4.偽原創(chuàng )保留字(將文章原創(chuàng )時(shí)的核心詞設置為不偽原創(chuàng ))。
  5.軟件直接監控發(fā)布,待發(fā)布,是否是偽原創(chuàng ),發(fā)布狀態(tài),URL,程序,發(fā)布時(shí)間等
  6.通過(guò)軟件,可以直接查看每日蜘蛛,索引和網(wǎng)站權限!
  詳細說(shuō)明:批量監控管理網(wǎng)站,省去了每個(gè)網(wǎng)站登錄后查看數據的需要,讓數據在插件工具中一目了然。
  要使網(wǎng)站
  注重方法和效率,還要不斷優(yōu)化問(wèn)題的細節,通過(guò)免費的dedeCMS插件工具可以節省很多時(shí)間把問(wèn)題的其他細節做得更好,只有這樣網(wǎng)站的排名流量才會(huì )上升得更快!看完這篇文章,如果你覺(jué)得不錯,不妨采集
或者發(fā)給需要的朋友和同事,每天關(guān)注博主帶你了解各種SEO經(jīng)驗,打通你的仁都兩條脈絡(luò )!

推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2022-11-24 21:39 ? 來(lái)自相關(guān)話(huà)題

  推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅
  請參考源碼,文字為第一思路,未作進(jìn)一步改動(dòng)。要更新的源代碼
  前期準備:requests庫:使用pip install requests進(jìn)行安裝。
  pymongo 庫:使用 pip install pymongo 安裝。
  先分析目標url:
  這個(gè)url的規律很好找。通過(guò)改變索引后面的數字,我們可以翻頁(yè),遍歷所有頁(yè)面。
  然后我們查看網(wǎng)頁(yè)源代碼,發(fā)現html頁(yè)面中保存鏈接和新聞標題的部分,還有時(shí)間。
  發(fā)現li標簽下保存了我們需要的所有信息,這里我們可以使用正則表達式獲取我們需要的所有信息(title, link, date)
<p>pattern = re.compile(r&#39; 查看全部

  推薦文章:【API爬蟲(chóng)】30分鐘百萬(wàn)條新浪新聞信息爬取。python得極速之旅
  請參考源碼,文字為第一思路,未作進(jìn)一步改動(dòng)。要更新的源代碼
  前期準備:requests庫:使用pip install requests進(jìn)行安裝。
  pymongo 庫:使用 pip install pymongo 安裝。
  先分析目標url:
  這個(gè)url的規律很好找。通過(guò)改變索引后面的數字,我們可以翻頁(yè),遍歷所有頁(yè)面。
  然后我們查看網(wǎng)頁(yè)源代碼,發(fā)現html頁(yè)面中保存鏈接和新聞標題的部分,還有時(shí)間。
  發(fā)現li標簽下保存了我們需要的所有信息,這里我們可以使用正則表達式獲取我們需要的所有信息(title, link, date)
<p>pattern = re.compile(r&#39;

解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云 采集器發(fā)布模塊

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 120 次瀏覽 ? 2022-11-24 17:50 ? 來(lái)自相關(guān)話(huà)題

  解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云
采集器發(fā)布模塊
  新版Z-Blog1.7已經(jīng)發(fā)布有一段時(shí)間了。新版本自帶api接口,可以用來(lái)開(kāi)發(fā)小程序和發(fā)布文章。今天教大家如何使用優(yōu)采云
調用這個(gè)api來(lái)發(fā)布文章。首先需要啟用API協(xié)議,加入后臺,點(diǎn)擊網(wǎng)站設置---API設置,如下圖:
  要使用此 API,您需要獲取身份驗證令牌。獲取方法非常簡(jiǎn)單。將以下代碼保存為cs.php,上傳到服務(wù)器瀏覽器打開(kāi)生成token。令牌是一個(gè)長(cháng)字符串。請注意,代碼中有三個(gè)地方需要更改為您的。
  下載我提供的release模塊(Z-Blog1.7使用官方api release module 3.12),在寫(xiě)采集規則的時(shí)候添加免登錄密碼字段(或者直接新建采集規則導入release模塊)并填寫(xiě)上面剛才生成的免登錄密碼字段的值。
  優(yōu)采云
采集
器釋放模塊標簽說(shuō)明,
  參考資料: 新版Z-Blog1.7使用api發(fā)布文章示例PHP版
  注:沒(méi)有標題重復檢測,只是使用官方API接口發(fā)布文章。這兒存在一個(gè)問(wèn)題。如果token錯誤,會(huì )提示非法操作。每次采集都要重新獲取token很麻煩,所以推薦使用《Z-Blog免登錄采集發(fā)布評論教程+插件3.2下載+支持最新的Z-Blog1.7》 .
  Z-Blog免登錄采集
發(fā)布評論教程+插件3.2下載+支持最新Z-Blog1.7
  解讀:悲了!文章采集免費現在還存在這般的解析角度!
  看到本文內容不要驚訝,因為本文由考拉SEO平臺批量編輯,僅用于SEO引流。使用Kaola SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
  我很抱歉!現在您進(jìn)入當前文章時(shí),您可能獲得的文章不收錄
文章采集
的免費回復。這是因為這篇文章是我們工具站自動(dòng)編寫(xiě)的流量落地頁(yè)。如果你對這個(gè)AI寫(xiě)的文章內容有好感,那就先放棄免費收文這件事,我來(lái)教你如何通過(guò)軟件一天寫(xiě)一萬(wàn)篇引流好文章!大部分朋友看了我們的廣告都以為這是偽原創(chuàng )劇本,大錯特錯!其實(shí)本站是一個(gè)原創(chuàng )工具,內容和范文都是大家自己創(chuàng )作的。很難在網(wǎng)上看到與導出文章相同程度的相似度。工作。我們究竟是如何創(chuàng )建它的?下面,本站就為您解析!
  
  想要結識免費收文的客戶(hù),其實(shí)大家關(guān)心的也是上面討論的話(huà)題。其實(shí)創(chuàng )造幾篇好的搜索文章很簡(jiǎn)單,但是一篇文章能創(chuàng )造的流量實(shí)在是微不足道。期待用新聞版面來(lái)達到引流的目的,最重要的策略就是自動(dòng)化!如果 1 一篇 SEO 文章可以產(chǎn)生一個(gè)訪(fǎng)問(wèn)者(每 24 小時(shí))。如果我們能寫(xiě)10000篇文章,平均每天可以增加10000個(gè)用戶(hù)。但是簡(jiǎn)單來(lái)說(shuō),其實(shí)我寫(xiě)的時(shí)候24小時(shí)只能出30篇左右,再厲害也只能出70篇左右。如果應用到偽原創(chuàng )工具上,也就只有百篇文章的樣子了!看完這篇,
  什么是seo認可的原創(chuàng )性?原創(chuàng )文案不僅僅等于關(guān)鍵詞一一原創(chuàng )輸出!在各種搜索引擎的程序定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的段落。按道理來(lái)說(shuō),如果你的文章和其他網(wǎng)頁(yè)的內容不一樣,那么被抓取的幾率就會(huì )大大增加。一篇高質(zhì)量的文案,內容吸睛十足,保持相同的目標詞,只要沒(méi)有雷同的段落,就意味著(zhù)這篇文章被搜索引擎抓取的概率很高,甚至成為一擊。就像小編的文章,你大概是免費搜索神馬的文章,然后點(diǎn)擊查看,告訴大家:
  
  本系統的自動(dòng)化原創(chuàng )軟件,準確的說(shuō)應該是一款原創(chuàng )文章工具,可以實(shí)現一天上千篇優(yōu)質(zhì)網(wǎng)站網(wǎng)頁(yè)文章的撰寫(xiě)。我們的網(wǎng)站權重通常足夠高,索引率可以高達80%。一般的使用,在用戶(hù)中心都有視頻介紹和新手指南,大家不妨多試一試!非常抱歉沒(méi)有免費為大家帶來(lái)文章合集的詳細內容。但是如果你對這款產(chǎn)品感興趣,不妨點(diǎn)擊一下導航欄,這樣我們的優(yōu)化結果每天都會(huì )增加幾萬(wàn)個(gè)UV,是不是很美味呢? 查看全部

  解決方案:Z-Blog1.7使用api發(fā)布文章,Z-Blog1.7優(yōu)采云
采集器發(fā)布模塊
  新版Z-Blog1.7已經(jīng)發(fā)布有一段時(shí)間了。新版本自帶api接口,可以用來(lái)開(kāi)發(fā)小程序和發(fā)布文章。今天教大家如何使用優(yōu)采云
調用這個(gè)api來(lái)發(fā)布文章。首先需要啟用API協(xié)議,加入后臺,點(diǎn)擊網(wǎng)站設置---API設置,如下圖:
  要使用此 API,您需要獲取身份驗證令牌。獲取方法非常簡(jiǎn)單。將以下代碼保存為cs.php,上傳到服務(wù)器瀏覽器打開(kāi)生成token。令牌是一個(gè)長(cháng)字符串。請注意,代碼中有三個(gè)地方需要更改為您的。
  下載我提供的release模塊(Z-Blog1.7使用官方api release module 3.12),在寫(xiě)采集規則的時(shí)候添加免登錄密碼字段(或者直接新建采集規則導入release模塊)并填寫(xiě)上面剛才生成的免登錄密碼字段的值。
  優(yōu)采云
采集
器釋放模塊標簽說(shuō)明,
  參考資料: 新版Z-Blog1.7使用api發(fā)布文章示例PHP版
  注:沒(méi)有標題重復檢測,只是使用官方API接口發(fā)布文章。這兒存在一個(gè)問(wèn)題。如果token錯誤,會(huì )提示非法操作。每次采集都要重新獲取token很麻煩,所以推薦使用《Z-Blog免登錄采集發(fā)布評論教程+插件3.2下載+支持最新的Z-Blog1.7》 .
  Z-Blog免登錄采集
發(fā)布評論教程+插件3.2下載+支持最新Z-Blog1.7
  解讀:悲了!文章采集免費現在還存在這般的解析角度!
  看到本文內容不要驚訝,因為本文由考拉SEO平臺批量編輯,僅用于SEO引流。使用Kaola SEO,輕輕松松一天產(chǎn)出幾萬(wàn)篇優(yōu)質(zhì)SEO文章!如果您還需要批量編輯SEO文章,可以進(jìn)入平臺用戶(hù)中心試用!
  我很抱歉!現在您進(jìn)入當前文章時(shí),您可能獲得的文章不收錄
文章采集
的免費回復。這是因為這篇文章是我們工具站自動(dòng)編寫(xiě)的流量落地頁(yè)。如果你對這個(gè)AI寫(xiě)的文章內容有好感,那就先放棄免費收文這件事,我來(lái)教你如何通過(guò)軟件一天寫(xiě)一萬(wàn)篇引流好文章!大部分朋友看了我們的廣告都以為這是偽原創(chuàng )劇本,大錯特錯!其實(shí)本站是一個(gè)原創(chuàng )工具,內容和范文都是大家自己創(chuàng )作的。很難在網(wǎng)上看到與導出文章相同程度的相似度。工作。我們究竟是如何創(chuàng )建它的?下面,本站就為您解析!
  
  想要結識免費收文的客戶(hù),其實(shí)大家關(guān)心的也是上面討論的話(huà)題。其實(shí)創(chuàng )造幾篇好的搜索文章很簡(jiǎn)單,但是一篇文章能創(chuàng )造的流量實(shí)在是微不足道。期待用新聞版面來(lái)達到引流的目的,最重要的策略就是自動(dòng)化!如果 1 一篇 SEO 文章可以產(chǎn)生一個(gè)訪(fǎng)問(wèn)者(每 24 小時(shí))。如果我們能寫(xiě)10000篇文章,平均每天可以增加10000個(gè)用戶(hù)。但是簡(jiǎn)單來(lái)說(shuō),其實(shí)我寫(xiě)的時(shí)候24小時(shí)只能出30篇左右,再厲害也只能出70篇左右。如果應用到偽原創(chuàng )工具上,也就只有百篇文章的樣子了!看完這篇,
  什么是seo認可的原創(chuàng )性?原創(chuàng )文案不僅僅等于關(guān)鍵詞一一原創(chuàng )輸出!在各種搜索引擎的程序定義中,原創(chuàng )并不意味著(zhù)沒(méi)有重復的段落。按道理來(lái)說(shuō),如果你的文章和其他網(wǎng)頁(yè)的內容不一樣,那么被抓取的幾率就會(huì )大大增加。一篇高質(zhì)量的文案,內容吸睛十足,保持相同的目標詞,只要沒(méi)有雷同的段落,就意味著(zhù)這篇文章被搜索引擎抓取的概率很高,甚至成為一擊。就像小編的文章,你大概是免費搜索神馬的文章,然后點(diǎn)擊查看,告訴大家:
  
  本系統的自動(dòng)化原創(chuàng )軟件,準確的說(shuō)應該是一款原創(chuàng )文章工具,可以實(shí)現一天上千篇優(yōu)質(zhì)網(wǎng)站網(wǎng)頁(yè)文章的撰寫(xiě)。我們的網(wǎng)站權重通常足夠高,索引率可以高達80%。一般的使用,在用戶(hù)中心都有視頻介紹和新手指南,大家不妨多試一試!非常抱歉沒(méi)有免費為大家帶來(lái)文章合集的詳細內容。但是如果你對這款產(chǎn)品感興趣,不妨點(diǎn)擊一下導航欄,這樣我們的優(yōu)化結果每天都會(huì )增加幾萬(wàn)個(gè)UV,是不是很美味呢?

解決方案:埋點(diǎn)數據采集和應用生命周期

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 113 次瀏覽 ? 2022-11-24 02:24 ? 來(lái)自相關(guān)話(huà)題

  解決方案:埋點(diǎn)數據采集和應用生命周期
  埋地數據采集
和應用程序生命周期
  作者介紹
  @hrd-0.618 (徐凡)
  新網(wǎng)銀行數據分析師。
  專(zhuān)注于數據分析、埋點(diǎn)采集和用戶(hù)行為分析、BI數據可視化。
  “數據人類(lèi)創(chuàng )造者聯(lián)盟”成員。
  1 背景介紹
  產(chǎn)品的精細化運營(yíng)、千人個(gè)性化推薦等各類(lèi)業(yè)務(wù),都依賴(lài)于標準化、高質(zhì)量的嵌入式數據。但埋點(diǎn)數據的上傳、解析、存儲、分析整個(gè)過(guò)程耗時(shí)長(cháng),需要多團隊協(xié)作。為了讓有興趣的讀者有一個(gè)整體的了解,本節將結合工作實(shí)踐和應用生命周期重點(diǎn)介紹H5埋點(diǎn)數據采集。
  2 埋點(diǎn)采集內容
  3 埋點(diǎn)數據流
  3.1 向日志采集服務(wù)發(fā)送數據
  前端+后端--&gt;日志采集服務(wù)
  前后端數據以類(lèi)json格式實(shí)時(shí)異步發(fā)送到日志采集服務(wù)進(jìn)行分析。
  3.1.1 用戶(hù)事件:user
  {data:[{userid: 用戶(hù)唯一ID, equipment: {//header, 包括瀏覽器、設備、網(wǎng)絡(luò )等 equipment_os: 操作系統, equipment_os_version: 操作系統版本, equipment_brand: 品牌...}, location: {gps :{gps_lon: 經(jīng)度, gps_lat: 緯度, gps_country: gps 國家, gps_province: gps 省, gps_city: gps 城市, gps_district: gps 區}, ip:{...}}}] , time: 時(shí)間, cookie: 序列號, event_type :user ,from:{ channel:channel,product:product} }
  3.1.2 頁(yè)面事件:page
  {data:[{ page_id: 頁(yè)面ID, page_name: 頁(yè)面名稱(chēng), page_url: 頁(yè)面url, src_page_url: 源頁(yè)面url }] , time: 時(shí)間, cookie: 序列號, event_type: page , from: { channel: 頻道, product:產(chǎn)品} }
  3.1.4 接口事件:interface
  {data:[{ interface_id: 接口ID, interface_name: 接口名稱(chēng), result: 接口調用結果, result_remarks: 接口調用描述, response_time: 接口響應時(shí)長(cháng)}], start_time: 接口調用開(kāi)始時(shí)間, end_time: 接口調用結束時(shí)間, cookie : 序列號, event_type: interface, from: { channel: channel, product: product} }
  3.2 實(shí)時(shí)數倉建模
  日志采集服務(wù)--&gt;實(shí)時(shí)數倉(kafka)
  
  3.2.1 基本字段處理
  一個(gè)。分析日志采集服務(wù)采集到的四個(gè)事件的json數據,得到四個(gè)事件的基本字段,實(shí)時(shí)寫(xiě)入到kafka消息隊列的四個(gè)主題中。
  b. 通過(guò)Flink/StreamSQL,實(shí)時(shí)或微批量消費4條topic數據,存儲在4張HBase表中。
  3.2.2 將用戶(hù)事件鏈接到行為事件
  消費用戶(hù)事件主題,根據序列碼cookie將用戶(hù)信息與行為信息相關(guān)聯(lián),構建實(shí)時(shí)用戶(hù)行為寬表。
  3.3 離線(xiàn)數據倉庫建模
  3.3.1 粘貼源層
  通過(guò) ETL 提取 4 個(gè)事件 HBase 表。
  3.3.2 模型層
  根據源層4個(gè)事件的序列碼cookie,將用戶(hù)信息與行為信息相關(guān)聯(lián),構建離線(xiàn)用戶(hù)行為寬表。
  4 埋點(diǎn)數據應用
  4.1.1 用戶(hù)行為
  根據實(shí)時(shí)用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)到實(shí)時(shí)的用戶(hù)行為記錄。
  根據線(xiàn)下用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)線(xiàn)下用戶(hù)行為記錄。
  4.1.2 用戶(hù)行為統計
  根據四大事件主題數據,結合用戶(hù)行為指標體系,通過(guò)聚合統計分析方法,得到不同維度的用戶(hù)行為指標。
  頁(yè)面級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  維度類(lèi)型:頁(yè)面/段/頻道
  可視字段:頻道名稱(chēng)、鏈接、頁(yè)面名稱(chēng)、PV、UV、訪(fǎng)問(wèn)用戶(hù)數、平均停留時(shí)間、頁(yè)面跳出次數、頁(yè)面跳出率
  
  按鈕級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  4.1.3 用戶(hù)留存分析
  方面:
  數據日期:2021-08-02
  頻道名稱(chēng):如“xxx”,無(wú)摘要
  用戶(hù)類(lèi)別:摘要,新用戶(hù)
  數據類(lèi)型:留存數、留存率
  產(chǎn)品層級,以及留存人數的選擇
  選擇保留的產(chǎn)品級別
  功能層面:比如美團APP對使用“單車(chē)”功能的用戶(hù)進(jìn)行留存分析。
  4.1.4 用戶(hù)行為標簽及客戶(hù)群體篩選
  構建用戶(hù)行為標簽,篩選目標客戶(hù)群。
  根據客戶(hù)的實(shí)時(shí)/線(xiàn)下業(yè)務(wù)狀態(tài),當滿(mǎn)足一定的行為特征時(shí),為業(yè)務(wù)人員篩選出不同的目標客戶(hù)群,通過(guò)營(yíng)銷(xiāo)平臺以不同的方式觸達。
  針對產(chǎn)品品類(lèi)較少的企業(yè),將不同場(chǎng)景的客群實(shí)時(shí)推送給業(yè)務(wù)人員,并與營(yíng)銷(xiāo)平臺聯(lián)動(dòng),精準營(yíng)銷(xiāo)。
  當然,對于產(chǎn)品品類(lèi)較多的企業(yè),比如電商相關(guān)場(chǎng)景,基于用戶(hù)行為構建實(shí)時(shí)推薦系統是行業(yè)主流。
  4.1.5 基于用戶(hù)行為斷點(diǎn)
  可以結合實(shí)時(shí)和線(xiàn)下的用戶(hù)行為和業(yè)務(wù)狀態(tài),為有行為斷點(diǎn)的用戶(hù)進(jìn)行外呼或其他方式。
  5 結論
  本文主要結合實(shí)際工作中的一些經(jīng)驗做一個(gè)簡(jiǎn)單的概述。埋點(diǎn)采集主要是代碼埋點(diǎn),人工維護成本比較高。未來(lái)可以結合實(shí)際場(chǎng)景更好的采集
行業(yè)內的數據;用戶(hù)行為分析也需要逐步完善。,歡迎大家批評指正,有興趣的朋友可以聯(lián)系我一起討論。
  解決方案:大規模分布式鏈路分析計算在字節跳動(dòng)的實(shí)踐
  一、概述
  微服務(wù)架構的快速發(fā)展使得分布式鏈路跟蹤系統成為觀(guān)測系統中越來(lái)越重要的組成部分。經(jīng)過(guò)幾年的發(fā)展,字節跳動(dòng)的分布式鏈路追蹤系統已經(jīng)覆蓋了字節跳動(dòng)的大部分在線(xiàn)業(yè)務(wù),完成了數萬(wàn)個(gè)微服務(wù)和數百萬(wàn)微服務(wù)實(shí)例的在線(xiàn)鏈路追蹤。在經(jīng)典的指標觀(guān)察分析和單請求鏈路跟蹤的基礎上,如何從浩瀚的分布式鏈路數據中進(jìn)一步挖掘更高層次的信息,為業(yè)務(wù)架構優(yōu)化、服務(wù)治理、成本等場(chǎng)景提供服務(wù)優(yōu)化。提供更高效的數據支持,成為下一步亟待解決的問(wèn)題。
  本次分享主要介紹了我們構建海量鏈路數據分析計算系統的實(shí)踐經(jīng)驗,以及一些具體的落地場(chǎng)景。
  2. 可觀(guān)察性和鏈接追蹤
  2.1 基本概念
  為了方便讀者更好地理解“鏈接分析”,我們先來(lái)說(shuō)說(shuō)什么是“可觀(guān)察性”和“鏈接跟蹤”。已經(jīng)熟悉“可觀(guān)察性”和“鏈接追蹤”概念的讀者可以跳過(guò)本章。
  隨著(zhù)微服務(wù)架構的快速發(fā)展,軟件系統正在從單一的應用發(fā)展為由大量微服務(wù)節點(diǎn)組成的復雜應用。為了更好地管理和控制復雜的軟件系統,“可觀(guān)察性”工具變得越來(lái)越重要??捎^(guān)察性工具建立在可觀(guān)察性數據的基礎上,一般包括以下幾個(gè)部分:Link Tracking Trace、Logging、Timing Metrics、Code-level Profiling、Event Event和與元數據相關(guān)的CMDB等。
  為了幫助大家對可觀(guān)察性工具有更直觀(guān)的體驗,這里舉例說(shuō)明如何基于可觀(guān)察性工具解決工作中的實(shí)際問(wèn)題:某服務(wù)告警通知值班人員的故障率在增加,點(diǎn)擊Correlate到error indicator對應的Trace,在Trace中定位到錯誤的來(lái)源,查看源頭的關(guān)鍵異常日志和代碼棧,發(fā)現源頭的報錯服務(wù)正在執行變更操作,所以基本定位到這個(gè)變化很可能是導致這個(gè)失敗的原因。有了高質(zhì)量的可觀(guān)測性數據和工具,一個(gè)對系統不是很熟悉的值班人員也可以快速完成對本次故障的排查和止損。
  分布式鏈路追蹤(Trace)是可觀(guān)測系統的組成部分之一。Trace從狹義上講是對單個(gè)請求的詳細跟蹤,記錄請求在每個(gè)環(huán)節的調用關(guān)系,耗時(shí),以及各種詳細的標簽和事件。同時(shí)Trace也起到了鏈接各種可觀(guān)察性數據的作用,即同一個(gè)Request Context的數據載體。分布式請求上的各類(lèi)信息(Metrics/Logs..)通過(guò)Trace可靠關(guān)聯(lián),進(jìn)而可以構建各種可觀(guān)察性數據的上下滾動(dòng)鉆取的跳轉功能。
  2.2 字節鏈接跟蹤系統
  經(jīng)過(guò)幾年的發(fā)展,字節鏈接跟蹤系統現已覆蓋公司大部分在線(xiàn)業(yè)務(wù)。整體開(kāi)發(fā)流程如下:
  2019年:Trace 1.0完成Trace組件能力建設。
  2020年:Trace 2.0實(shí)現Metrics/Trace/Log的融合,升級數據協(xié)議和技術(shù)架構,開(kāi)始打造一站式觀(guān)測平臺Argos。
  2021年:實(shí)現與字節跳動(dòng)大部分主流框架組件的默認集成,微服務(wù)在公司所有業(yè)務(wù)線(xiàn)的覆蓋率&gt;80%。
  2022:構建和探索場(chǎng)景化、智能化的場(chǎng)景,比如本次分享聊天中的“鏈接分析”。
  Byte Link Tracker 當前狀態(tài)數據(2022 年 10 月):
  覆蓋范圍:50,000 多個(gè)微服務(wù)/FAAS,300 萬(wàn)多個(gè)容器實(shí)例。
  使用:每日UV 6,000+,每日PV 40,000+。
  吞吐量:跨度數 2000 萬(wàn)+/s(默認 0.1% 采樣)。
  資源配比:100+ CPU核心支持100萬(wàn)Span/s。
  SDK性能:?jiǎn)尉€(xiàn)程40w Span/s。
  查詢(xún)性能:TraceID 枚舉 P50 &lt; 100 ms,P99 &lt; 500 ms。
  數據生成到可檢索延遲:AVG &lt; 1 分鐘,P99 &lt; 2 分鐘。
  存儲資源:10 PB(3 個(gè)副本 TTL 15 天)。
  字節鏈追蹤系統從數據接入端、消費存儲端、查詢(xún)平臺端的整體架構如下圖所示。更多詳情請閱讀之前的分享。上次的分享比較詳細地介紹了如何從零到一搭建分布式鏈路跟蹤系統。本文主要講鏈路跟蹤系統中的鏈路聚合計算和分析部分。
  3.鏈接分析技術(shù)實(shí)踐
  3.1 需求場(chǎng)景
  經(jīng)常使用Trace的同學(xué)可能對Trace的印象是通過(guò)TraceID或者一些Tags可以檢索到一個(gè)或者一些Traces,然后從Trace數據中仔細查看詳細的調用traces和各種Tags來(lái)分析一些具體的問(wèn)題,比如為什么一個(gè)請求很慢,或者請求出錯的原因。
  但是我們也面臨著(zhù)一些更高層次的問(wèn)題,比如面對一個(gè)不斷變化的復雜微服務(wù)系統:
  
  這些問(wèn)題的答案很難通過(guò)人工一條一條地查看跡線(xiàn)來(lái)獲得可靠的結果。但是,它可以從大量的Trace數據中自動(dòng)計算出來(lái),為最終的決策提供可靠的數據支持。我們稱(chēng)這種大量蹤跡鏈接分析的聚合計算。
  3.2 基本原則
  鏈路分析的基本原理是聚合計算大量的跡線(xiàn)。一般遵循MapReduce計算模型。在這個(gè)過(guò)程中,可能會(huì )結合一些訂閱規則和其他數據,得到計算結果,然后應用到具體的場(chǎng)景應用中。
  3.3 技術(shù)架構
  適用于大量鏈路數據的聚合計算的可選模式主要有三種,即基于在線(xiàn)數據流的流式計算、基于離線(xiàn)數據流從在線(xiàn)存儲中查詢(xún)有限蹤跡后的即興(抽樣)計算。bins的離線(xiàn)計算。這三種計算方式的特點(diǎn)分析如下表所示。
  在分析了三種聚合計算模式的特點(diǎn)之后,分析了鏈路分析場(chǎng)景所面臨的技術(shù)需求。
  基于以上分析,我們認為沒(méi)有一種計算模型可以解決所有問(wèn)題,所以我們最終選擇的技術(shù)方案是流式、即興、離線(xiàn)一體化的技術(shù)方案:基于統一的基礎數據模型和邏輯算子,支持三種不同的計算引擎,滿(mǎn)足不同的場(chǎng)景需求。
  在實(shí)施該方案的過(guò)程中,我們總結了一些有益的實(shí)踐經(jīng)驗:
  Trace本身的數據結構比較復雜,其分析計算邏輯往往具有一定的復雜性。算子和引擎的分離,便于將同一個(gè)邏輯算子應用到不同的計算引擎上,可以更好的提高研發(fā)效率和代碼可維護性。例如,性能瓶頸分析相關(guān)的算法既可以用于即興計算,也可以用于離線(xiàn)計算。
  Trace數據往往存在一些數據不規則性,比如超高維的接口名稱(chēng),導致聚合后的數據維度遠超預期,影響計算任務(wù)的穩定性。自動(dòng)化的異常數據發(fā)現和封禁或降級機制可以起到更好的保護作用。
  盡量保留聚合分析結果對應的具有代表性的原創(chuàng )
(極端)Trace樣本,可以提高分析結果的可解釋性和用戶(hù)信任度。
  大數據計算成本高,非基礎功能可采用按需訂閱模式提高ROI;構建任務(wù)靈活降級能力,資源緊張時(shí)優(yōu)先保證高頻基礎功能的高可用。
  4.鏈路分析實(shí)現場(chǎng)景
  介紹完鏈接分析的底層技術(shù)架構,我們再介紹一些具體的實(shí)現場(chǎng)景。
  4.1 精確鏈路拓撲計算
  鏈路分析中使用頻率最高、使用場(chǎng)景最廣的就是鏈路拓撲的計算。這里所說(shuō)的“鏈路拓撲”是指進(jìn)入任意一個(gè)服務(wù)節點(diǎn),獲取所有流經(jīng)該節點(diǎn)的trace的聚合路徑,從而清楚地知道該服務(wù)節點(diǎn)的上下游依賴(lài)拓撲。
  由于字節微服務(wù)數量眾多,中端和基礎服務(wù)種類(lèi)繁多,調用關(guān)系相對復雜,因此我們進(jìn)行拓撲計算的目標是:
  舉例說(shuō)明什么是精度要求:如下圖,“抖音.X”和“火山.Y”都調用“中臺.Z”,但對于“抖音.X”的流量,“中臺. Z" "會(huì )用到"Redis.Volcano",而"中臺.Z"會(huì )用到"Redis.Volcano"給"Volcano.Y"的流量,所以實(shí)際上沒(méi)有"抖音.X"和"Redis.Volcano" ”直接依賴(lài)。那么當我們搜索“Douyin.X”時(shí),想要的拓撲是[“Douyin.X”,“Zhongtai.Z”,“Redis.Douyin”]而不是“Redis.Volcano”。
  舉例說(shuō)明什么是靈活性需求:如下圖,不僅可以根據入口檢索拓撲,還可以根據中間節點(diǎn)“Zhongtai.Z”或存儲組件檢索拓撲節點(diǎn)“Redis.抖音”;不僅可以按照服務(wù)+接口的粒度檢索拓撲,還可以按照服務(wù)粒度、服務(wù)+集群粒度、服務(wù)+機房粒度等其他粒度進(jìn)行檢索。
  面對這樣的技術(shù)需求,我們研究了業(yè)界現有的一些拓撲計算方案:
  結合字節場(chǎng)景的實(shí)際需求,權衡準確率、成本和檢索速度,我們最終設計了新的方案。
  精確的鏈路拓撲具有廣泛的應用場(chǎng)景。下面是一些具體的例子:
  4.2 全鏈路流量估算
  全鏈路流量預估主要回答的問(wèn)題是:
  
  全鏈路流量估計是在精確拓撲計算的基礎上實(shí)現的,因此也采用流計算來(lái)估計每條路徑上的蹤跡數以及蹤跡對應的采樣率數據。計算結果的格式如下圖所示。每個(gè)拓撲中的每個(gè)邊都對應于一個(gè)估計的流量和流量比?;谶@樣的數據,我們可以針對任何微服務(wù)接口給出上述兩個(gè)問(wèn)題的答案。
  全鏈路流量預估的主要應用場(chǎng)景如下:
  4.3 強弱依賴(lài)分析
  強弱依賴(lài)信息是服務(wù)穩定性治理場(chǎng)景的重要數據支撐,也可以通過(guò)在線(xiàn)Trace數據自動(dòng)計算。
  強依賴(lài):當異常發(fā)生時(shí),影響核心業(yè)務(wù)流程和系統可用性的依賴(lài)稱(chēng)為強依賴(lài)。
  弱依賴(lài):當異常發(fā)生時(shí),不影響核心業(yè)務(wù)流程,不影響系統可用性的依賴(lài)稱(chēng)為弱依賴(lài)。
  如下圖所示,當A調用B失敗時(shí),如果A仍能成功響應其Client,則B為A的弱依賴(lài);當A調用B失敗時(shí),如果A不能成功響應它的Client,那么B就是A依賴(lài)的強依賴(lài)。
  強弱依賴(lài)計算的技術(shù)目標包括:
  為了盡可能滿(mǎn)足數據的完整性和時(shí)效性要求,我們選擇了流式計算方式,從數據流中選擇Trace with Error來(lái)計算強弱依賴(lài)。需要注意的是,短期的實(shí)時(shí)數據樣本往往是不夠的,需要結合歷史積累的數據進(jìn)行聯(lián)合判斷才能下結論。
  強弱依賴(lài)分析的主要挑戰:
  強弱依賴(lài)分析的主要應用場(chǎng)景包括:
  4.4 全鏈路性能反模式分析
  在實(shí)踐中,我們觀(guān)察到有一些非常典型的性能反模式問(wèn)題,可以從Trace數據中自動(dòng)發(fā)現。常見(jiàn)的性能反模式包括:
  性能反模式問(wèn)題的發(fā)現也有以下兩個(gè)要求:
  因此,性能反模式分析任務(wù)需要自動(dòng)發(fā)現最嚴重的反模式問(wèn)題,給出極值樣本,并關(guān)聯(lián)這些問(wèn)題所在路徑的流量和入口優(yōu)先級,幫助業(yè)務(wù)優(yōu)化延遲和服務(wù)成本。盡早解決與它們相關(guān)的潛在穩定性風(fēng)險。
  4.5 全鏈路性能瓶頸分析
  單個(gè)請求的分布式跟蹤視圖清晰直接,但局限性在于觀(guān)察者無(wú)法確定單個(gè)請求呈現的跟蹤模式是普遍現象還是特殊現象。因此,從大量Trace數據中分析鏈路性能瓶頸,找出整體性能模式和worst case樣本,也是鏈路分析的需求場(chǎng)景。
  鏈路性能模式是從批量跟蹤中聚合和計算的,滿(mǎn)足臨時(shí)模式和離線(xiàn)模式的要求。在即興模式下,可滿(mǎn)足篩選任意時(shí)間段、靈活條件(多種標簽、耗時(shí)區間)的批次痕跡,快速獲得分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整地分析全量Trace數據的整體性能模式,觀(guān)察長(cháng)期趨勢的需求。因此,我們將在即興和離線(xiàn)計算模式下重用鏈路性能分析聚合算子。
  分析結果示例:
  4.6 誤差傳播鏈分析
  單個(gè)Error Trace可以觀(guān)察到一條錯誤傳播路徑,但觀(guān)察者無(wú)法確認一條錯誤傳播路徑是否一定代表了一個(gè)普遍問(wèn)題,也無(wú)法回答錯誤傳播的影響。因此聚合大量的Error Trace來(lái)分析整體的錯誤來(lái)源、傳播路徑、影響面也是鏈路分析的需求場(chǎng)景。
  與鏈路性能分析類(lèi)似,錯誤傳播路徑是從批量跟蹤中聚合和計算的,這在臨時(shí)模式和離線(xiàn)模式下都是必需的。我們還將錯誤傳播鏈分析算子應用于臨時(shí)和離線(xiàn)計算模式。Ad hoc模式可以滿(mǎn)足任意時(shí)間段、靈活條件(各種標簽)批量過(guò)濾Error Trace的需求,快速得到聚合分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整的全量Error Trace數據聚合分析需求,觀(guān)察長(cháng)期趨勢,助力業(yè)務(wù)長(cháng)期穩定優(yōu)化。
  分析結果示例:
  五、總結與展望
  本文主要介紹在從零到一建立鏈路追蹤基礎能力后,如何聚合分析海量鏈路數據,回答更高層次的場(chǎng)景化問(wèn)題。我們分享了我們具體的技術(shù)選型過(guò)程和實(shí)施技術(shù)架構,以及一些成功的實(shí)施案例。 查看全部

  解決方案:埋點(diǎn)數據采集和應用生命周期
  埋地數據采集
和應用程序生命周期
  作者介紹
  @hrd-0.618 (徐凡)
  新網(wǎng)銀行數據分析師。
  專(zhuān)注于數據分析、埋點(diǎn)采集和用戶(hù)行為分析、BI數據可視化。
  “數據人類(lèi)創(chuàng )造者聯(lián)盟”成員。
  1 背景介紹
  產(chǎn)品的精細化運營(yíng)、千人個(gè)性化推薦等各類(lèi)業(yè)務(wù),都依賴(lài)于標準化、高質(zhì)量的嵌入式數據。但埋點(diǎn)數據的上傳、解析、存儲、分析整個(gè)過(guò)程耗時(shí)長(cháng),需要多團隊協(xié)作。為了讓有興趣的讀者有一個(gè)整體的了解,本節將結合工作實(shí)踐和應用生命周期重點(diǎn)介紹H5埋點(diǎn)數據采集。
  2 埋點(diǎn)采集內容
  3 埋點(diǎn)數據流
  3.1 向日志采集服務(wù)發(fā)送數據
  前端+后端--&gt;日志采集服務(wù)
  前后端數據以類(lèi)json格式實(shí)時(shí)異步發(fā)送到日志采集服務(wù)進(jìn)行分析。
  3.1.1 用戶(hù)事件:user
  {data:[{userid: 用戶(hù)唯一ID, equipment: {//header, 包括瀏覽器、設備、網(wǎng)絡(luò )等 equipment_os: 操作系統, equipment_os_version: 操作系統版本, equipment_brand: 品牌...}, location: {gps :{gps_lon: 經(jīng)度, gps_lat: 緯度, gps_country: gps 國家, gps_province: gps 省, gps_city: gps 城市, gps_district: gps 區}, ip:{...}}}] , time: 時(shí)間, cookie: 序列號, event_type :user ,from:{ channel:channel,product:product} }
  3.1.2 頁(yè)面事件:page
  {data:[{ page_id: 頁(yè)面ID, page_name: 頁(yè)面名稱(chēng), page_url: 頁(yè)面url, src_page_url: 源頁(yè)面url }] , time: 時(shí)間, cookie: 序列號, event_type: page , from: { channel: 頻道, product:產(chǎn)品} }
  3.1.4 接口事件:interface
  {data:[{ interface_id: 接口ID, interface_name: 接口名稱(chēng), result: 接口調用結果, result_remarks: 接口調用描述, response_time: 接口響應時(shí)長(cháng)}], start_time: 接口調用開(kāi)始時(shí)間, end_time: 接口調用結束時(shí)間, cookie : 序列號, event_type: interface, from: { channel: channel, product: product} }
  3.2 實(shí)時(shí)數倉建模
  日志采集服務(wù)--&gt;實(shí)時(shí)數倉(kafka)
  
  3.2.1 基本字段處理
  一個(gè)。分析日志采集服務(wù)采集到的四個(gè)事件的json數據,得到四個(gè)事件的基本字段,實(shí)時(shí)寫(xiě)入到kafka消息隊列的四個(gè)主題中。
  b. 通過(guò)Flink/StreamSQL,實(shí)時(shí)或微批量消費4條topic數據,存儲在4張HBase表中。
  3.2.2 將用戶(hù)事件鏈接到行為事件
  消費用戶(hù)事件主題,根據序列碼cookie將用戶(hù)信息與行為信息相關(guān)聯(lián),構建實(shí)時(shí)用戶(hù)行為寬表。
  3.3 離線(xiàn)數據倉庫建模
  3.3.1 粘貼源層
  通過(guò) ETL 提取 4 個(gè)事件 HBase 表。
  3.3.2 模型層
  根據源層4個(gè)事件的序列碼cookie,將用戶(hù)信息與行為信息相關(guān)聯(lián),構建離線(xiàn)用戶(hù)行為寬表。
  4 埋點(diǎn)數據應用
  4.1.1 用戶(hù)行為
  根據實(shí)時(shí)用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)到實(shí)時(shí)的用戶(hù)行為記錄。
  根據線(xiàn)下用戶(hù)寬表,將數據寫(xiě)入Elasticsearch,或者將數據寫(xiě)入外部接口,可以查詢(xún)線(xiàn)下用戶(hù)行為記錄。
  4.1.2 用戶(hù)行為統計
  根據四大事件主題數據,結合用戶(hù)行為指標體系,通過(guò)聚合統計分析方法,得到不同維度的用戶(hù)行為指標。
  頁(yè)面級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  維度類(lèi)型:頁(yè)面/段/頻道
  可視字段:頻道名稱(chēng)、鏈接、頁(yè)面名稱(chēng)、PV、UV、訪(fǎng)問(wèn)用戶(hù)數、平均停留時(shí)間、頁(yè)面跳出次數、頁(yè)面跳出率
  
  按鈕級別:
  數據日期
  頻道名稱(chēng)
  操作系統
  日期類(lèi)型:日、7日、30日、總計
  4.1.3 用戶(hù)留存分析
  方面:
  數據日期:2021-08-02
  頻道名稱(chēng):如“xxx”,無(wú)摘要
  用戶(hù)類(lèi)別:摘要,新用戶(hù)
  數據類(lèi)型:留存數、留存率
  產(chǎn)品層級,以及留存人數的選擇
  選擇保留的產(chǎn)品級別
  功能層面:比如美團APP對使用“單車(chē)”功能的用戶(hù)進(jìn)行留存分析。
  4.1.4 用戶(hù)行為標簽及客戶(hù)群體篩選
  構建用戶(hù)行為標簽,篩選目標客戶(hù)群。
  根據客戶(hù)的實(shí)時(shí)/線(xiàn)下業(yè)務(wù)狀態(tài),當滿(mǎn)足一定的行為特征時(shí),為業(yè)務(wù)人員篩選出不同的目標客戶(hù)群,通過(guò)營(yíng)銷(xiāo)平臺以不同的方式觸達。
  針對產(chǎn)品品類(lèi)較少的企業(yè),將不同場(chǎng)景的客群實(shí)時(shí)推送給業(yè)務(wù)人員,并與營(yíng)銷(xiāo)平臺聯(lián)動(dòng),精準營(yíng)銷(xiāo)。
  當然,對于產(chǎn)品品類(lèi)較多的企業(yè),比如電商相關(guān)場(chǎng)景,基于用戶(hù)行為構建實(shí)時(shí)推薦系統是行業(yè)主流。
  4.1.5 基于用戶(hù)行為斷點(diǎn)
  可以結合實(shí)時(shí)和線(xiàn)下的用戶(hù)行為和業(yè)務(wù)狀態(tài),為有行為斷點(diǎn)的用戶(hù)進(jìn)行外呼或其他方式。
  5 結論
  本文主要結合實(shí)際工作中的一些經(jīng)驗做一個(gè)簡(jiǎn)單的概述。埋點(diǎn)采集主要是代碼埋點(diǎn),人工維護成本比較高。未來(lái)可以結合實(shí)際場(chǎng)景更好的采集
行業(yè)內的數據;用戶(hù)行為分析也需要逐步完善。,歡迎大家批評指正,有興趣的朋友可以聯(lián)系我一起討論。
  解決方案:大規模分布式鏈路分析計算在字節跳動(dòng)的實(shí)踐
  一、概述
  微服務(wù)架構的快速發(fā)展使得分布式鏈路跟蹤系統成為觀(guān)測系統中越來(lái)越重要的組成部分。經(jīng)過(guò)幾年的發(fā)展,字節跳動(dòng)的分布式鏈路追蹤系統已經(jīng)覆蓋了字節跳動(dòng)的大部分在線(xiàn)業(yè)務(wù),完成了數萬(wàn)個(gè)微服務(wù)和數百萬(wàn)微服務(wù)實(shí)例的在線(xiàn)鏈路追蹤。在經(jīng)典的指標觀(guān)察分析和單請求鏈路跟蹤的基礎上,如何從浩瀚的分布式鏈路數據中進(jìn)一步挖掘更高層次的信息,為業(yè)務(wù)架構優(yōu)化、服務(wù)治理、成本等場(chǎng)景提供服務(wù)優(yōu)化。提供更高效的數據支持,成為下一步亟待解決的問(wèn)題。
  本次分享主要介紹了我們構建海量鏈路數據分析計算系統的實(shí)踐經(jīng)驗,以及一些具體的落地場(chǎng)景。
  2. 可觀(guān)察性和鏈接追蹤
  2.1 基本概念
  為了方便讀者更好地理解“鏈接分析”,我們先來(lái)說(shuō)說(shuō)什么是“可觀(guān)察性”和“鏈接跟蹤”。已經(jīng)熟悉“可觀(guān)察性”和“鏈接追蹤”概念的讀者可以跳過(guò)本章。
  隨著(zhù)微服務(wù)架構的快速發(fā)展,軟件系統正在從單一的應用發(fā)展為由大量微服務(wù)節點(diǎn)組成的復雜應用。為了更好地管理和控制復雜的軟件系統,“可觀(guān)察性”工具變得越來(lái)越重要??捎^(guān)察性工具建立在可觀(guān)察性數據的基礎上,一般包括以下幾個(gè)部分:Link Tracking Trace、Logging、Timing Metrics、Code-level Profiling、Event Event和與元數據相關(guān)的CMDB等。
  為了幫助大家對可觀(guān)察性工具有更直觀(guān)的體驗,這里舉例說(shuō)明如何基于可觀(guān)察性工具解決工作中的實(shí)際問(wèn)題:某服務(wù)告警通知值班人員的故障率在增加,點(diǎn)擊Correlate到error indicator對應的Trace,在Trace中定位到錯誤的來(lái)源,查看源頭的關(guān)鍵異常日志和代碼棧,發(fā)現源頭的報錯服務(wù)正在執行變更操作,所以基本定位到這個(gè)變化很可能是導致這個(gè)失敗的原因。有了高質(zhì)量的可觀(guān)測性數據和工具,一個(gè)對系統不是很熟悉的值班人員也可以快速完成對本次故障的排查和止損。
  分布式鏈路追蹤(Trace)是可觀(guān)測系統的組成部分之一。Trace從狹義上講是對單個(gè)請求的詳細跟蹤,記錄請求在每個(gè)環(huán)節的調用關(guān)系,耗時(shí),以及各種詳細的標簽和事件。同時(shí)Trace也起到了鏈接各種可觀(guān)察性數據的作用,即同一個(gè)Request Context的數據載體。分布式請求上的各類(lèi)信息(Metrics/Logs..)通過(guò)Trace可靠關(guān)聯(lián),進(jìn)而可以構建各種可觀(guān)察性數據的上下滾動(dòng)鉆取的跳轉功能。
  2.2 字節鏈接跟蹤系統
  經(jīng)過(guò)幾年的發(fā)展,字節鏈接跟蹤系統現已覆蓋公司大部分在線(xiàn)業(yè)務(wù)。整體開(kāi)發(fā)流程如下:
  2019年:Trace 1.0完成Trace組件能力建設。
  2020年:Trace 2.0實(shí)現Metrics/Trace/Log的融合,升級數據協(xié)議和技術(shù)架構,開(kāi)始打造一站式觀(guān)測平臺Argos。
  2021年:實(shí)現與字節跳動(dòng)大部分主流框架組件的默認集成,微服務(wù)在公司所有業(yè)務(wù)線(xiàn)的覆蓋率&gt;80%。
  2022:構建和探索場(chǎng)景化、智能化的場(chǎng)景,比如本次分享聊天中的“鏈接分析”。
  Byte Link Tracker 當前狀態(tài)數據(2022 年 10 月):
  覆蓋范圍:50,000 多個(gè)微服務(wù)/FAAS,300 萬(wàn)多個(gè)容器實(shí)例。
  使用:每日UV 6,000+,每日PV 40,000+。
  吞吐量:跨度數 2000 萬(wàn)+/s(默認 0.1% 采樣)。
  資源配比:100+ CPU核心支持100萬(wàn)Span/s。
  SDK性能:?jiǎn)尉€(xiàn)程40w Span/s。
  查詢(xún)性能:TraceID 枚舉 P50 &lt; 100 ms,P99 &lt; 500 ms。
  數據生成到可檢索延遲:AVG &lt; 1 分鐘,P99 &lt; 2 分鐘。
  存儲資源:10 PB(3 個(gè)副本 TTL 15 天)。
  字節鏈追蹤系統從數據接入端、消費存儲端、查詢(xún)平臺端的整體架構如下圖所示。更多詳情請閱讀之前的分享。上次的分享比較詳細地介紹了如何從零到一搭建分布式鏈路跟蹤系統。本文主要講鏈路跟蹤系統中的鏈路聚合計算和分析部分。
  3.鏈接分析技術(shù)實(shí)踐
  3.1 需求場(chǎng)景
  經(jīng)常使用Trace的同學(xué)可能對Trace的印象是通過(guò)TraceID或者一些Tags可以檢索到一個(gè)或者一些Traces,然后從Trace數據中仔細查看詳細的調用traces和各種Tags來(lái)分析一些具體的問(wèn)題,比如為什么一個(gè)請求很慢,或者請求出錯的原因。
  但是我們也面臨著(zhù)一些更高層次的問(wèn)題,比如面對一個(gè)不斷變化的復雜微服務(wù)系統:
  
  這些問(wèn)題的答案很難通過(guò)人工一條一條地查看跡線(xiàn)來(lái)獲得可靠的結果。但是,它可以從大量的Trace數據中自動(dòng)計算出來(lái),為最終的決策提供可靠的數據支持。我們稱(chēng)這種大量蹤跡鏈接分析的聚合計算。
  3.2 基本原則
  鏈路分析的基本原理是聚合計算大量的跡線(xiàn)。一般遵循MapReduce計算模型。在這個(gè)過(guò)程中,可能會(huì )結合一些訂閱規則和其他數據,得到計算結果,然后應用到具體的場(chǎng)景應用中。
  3.3 技術(shù)架構
  適用于大量鏈路數據的聚合計算的可選模式主要有三種,即基于在線(xiàn)數據流的流式計算、基于離線(xiàn)數據流從在線(xiàn)存儲中查詢(xún)有限蹤跡后的即興(抽樣)計算。bins的離線(xiàn)計算。這三種計算方式的特點(diǎn)分析如下表所示。
  在分析了三種聚合計算模式的特點(diǎn)之后,分析了鏈路分析場(chǎng)景所面臨的技術(shù)需求。
  基于以上分析,我們認為沒(méi)有一種計算模型可以解決所有問(wèn)題,所以我們最終選擇的技術(shù)方案是流式、即興、離線(xiàn)一體化的技術(shù)方案:基于統一的基礎數據模型和邏輯算子,支持三種不同的計算引擎,滿(mǎn)足不同的場(chǎng)景需求。
  在實(shí)施該方案的過(guò)程中,我們總結了一些有益的實(shí)踐經(jīng)驗:
  Trace本身的數據結構比較復雜,其分析計算邏輯往往具有一定的復雜性。算子和引擎的分離,便于將同一個(gè)邏輯算子應用到不同的計算引擎上,可以更好的提高研發(fā)效率和代碼可維護性。例如,性能瓶頸分析相關(guān)的算法既可以用于即興計算,也可以用于離線(xiàn)計算。
  Trace數據往往存在一些數據不規則性,比如超高維的接口名稱(chēng),導致聚合后的數據維度遠超預期,影響計算任務(wù)的穩定性。自動(dòng)化的異常數據發(fā)現和封禁或降級機制可以起到更好的保護作用。
  盡量保留聚合分析結果對應的具有代表性的原創(chuàng )
(極端)Trace樣本,可以提高分析結果的可解釋性和用戶(hù)信任度。
  大數據計算成本高,非基礎功能可采用按需訂閱模式提高ROI;構建任務(wù)靈活降級能力,資源緊張時(shí)優(yōu)先保證高頻基礎功能的高可用。
  4.鏈路分析實(shí)現場(chǎng)景
  介紹完鏈接分析的底層技術(shù)架構,我們再介紹一些具體的實(shí)現場(chǎng)景。
  4.1 精確鏈路拓撲計算
  鏈路分析中使用頻率最高、使用場(chǎng)景最廣的就是鏈路拓撲的計算。這里所說(shuō)的“鏈路拓撲”是指進(jìn)入任意一個(gè)服務(wù)節點(diǎn),獲取所有流經(jīng)該節點(diǎn)的trace的聚合路徑,從而清楚地知道該服務(wù)節點(diǎn)的上下游依賴(lài)拓撲。
  由于字節微服務(wù)數量眾多,中端和基礎服務(wù)種類(lèi)繁多,調用關(guān)系相對復雜,因此我們進(jìn)行拓撲計算的目標是:
  舉例說(shuō)明什么是精度要求:如下圖,“抖音.X”和“火山.Y”都調用“中臺.Z”,但對于“抖音.X”的流量,“中臺. Z" "會(huì )用到"Redis.Volcano",而"中臺.Z"會(huì )用到"Redis.Volcano"給"Volcano.Y"的流量,所以實(shí)際上沒(méi)有"抖音.X"和"Redis.Volcano" ”直接依賴(lài)。那么當我們搜索“Douyin.X”時(shí),想要的拓撲是[“Douyin.X”,“Zhongtai.Z”,“Redis.Douyin”]而不是“Redis.Volcano”。
  舉例說(shuō)明什么是靈活性需求:如下圖,不僅可以根據入口檢索拓撲,還可以根據中間節點(diǎn)“Zhongtai.Z”或存儲組件檢索拓撲節點(diǎn)“Redis.抖音”;不僅可以按照服務(wù)+接口的粒度檢索拓撲,還可以按照服務(wù)粒度、服務(wù)+集群粒度、服務(wù)+機房粒度等其他粒度進(jìn)行檢索。
  面對這樣的技術(shù)需求,我們研究了業(yè)界現有的一些拓撲計算方案:
  結合字節場(chǎng)景的實(shí)際需求,權衡準確率、成本和檢索速度,我們最終設計了新的方案。
  精確的鏈路拓撲具有廣泛的應用場(chǎng)景。下面是一些具體的例子:
  4.2 全鏈路流量估算
  全鏈路流量預估主要回答的問(wèn)題是:
  
  全鏈路流量估計是在精確拓撲計算的基礎上實(shí)現的,因此也采用流計算來(lái)估計每條路徑上的蹤跡數以及蹤跡對應的采樣率數據。計算結果的格式如下圖所示。每個(gè)拓撲中的每個(gè)邊都對應于一個(gè)估計的流量和流量比?;谶@樣的數據,我們可以針對任何微服務(wù)接口給出上述兩個(gè)問(wèn)題的答案。
  全鏈路流量預估的主要應用場(chǎng)景如下:
  4.3 強弱依賴(lài)分析
  強弱依賴(lài)信息是服務(wù)穩定性治理場(chǎng)景的重要數據支撐,也可以通過(guò)在線(xiàn)Trace數據自動(dòng)計算。
  強依賴(lài):當異常發(fā)生時(shí),影響核心業(yè)務(wù)流程和系統可用性的依賴(lài)稱(chēng)為強依賴(lài)。
  弱依賴(lài):當異常發(fā)生時(shí),不影響核心業(yè)務(wù)流程,不影響系統可用性的依賴(lài)稱(chēng)為弱依賴(lài)。
  如下圖所示,當A調用B失敗時(shí),如果A仍能成功響應其Client,則B為A的弱依賴(lài);當A調用B失敗時(shí),如果A不能成功響應它的Client,那么B就是A依賴(lài)的強依賴(lài)。
  強弱依賴(lài)計算的技術(shù)目標包括:
  為了盡可能滿(mǎn)足數據的完整性和時(shí)效性要求,我們選擇了流式計算方式,從數據流中選擇Trace with Error來(lái)計算強弱依賴(lài)。需要注意的是,短期的實(shí)時(shí)數據樣本往往是不夠的,需要結合歷史積累的數據進(jìn)行聯(lián)合判斷才能下結論。
  強弱依賴(lài)分析的主要挑戰:
  強弱依賴(lài)分析的主要應用場(chǎng)景包括:
  4.4 全鏈路性能反模式分析
  在實(shí)踐中,我們觀(guān)察到有一些非常典型的性能反模式問(wèn)題,可以從Trace數據中自動(dòng)發(fā)現。常見(jiàn)的性能反模式包括:
  性能反模式問(wèn)題的發(fā)現也有以下兩個(gè)要求:
  因此,性能反模式分析任務(wù)需要自動(dòng)發(fā)現最嚴重的反模式問(wèn)題,給出極值樣本,并關(guān)聯(lián)這些問(wèn)題所在路徑的流量和入口優(yōu)先級,幫助業(yè)務(wù)優(yōu)化延遲和服務(wù)成本。盡早解決與它們相關(guān)的潛在穩定性風(fēng)險。
  4.5 全鏈路性能瓶頸分析
  單個(gè)請求的分布式跟蹤視圖清晰直接,但局限性在于觀(guān)察者無(wú)法確定單個(gè)請求呈現的跟蹤模式是普遍現象還是特殊現象。因此,從大量Trace數據中分析鏈路性能瓶頸,找出整體性能模式和worst case樣本,也是鏈路分析的需求場(chǎng)景。
  鏈路性能模式是從批量跟蹤中聚合和計算的,滿(mǎn)足臨時(shí)模式和離線(xiàn)模式的要求。在即興模式下,可滿(mǎn)足篩選任意時(shí)間段、靈活條件(多種標簽、耗時(shí)區間)的批次痕跡,快速獲得分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整地分析全量Trace數據的整體性能模式,觀(guān)察長(cháng)期趨勢的需求。因此,我們將在即興和離線(xiàn)計算模式下重用鏈路性能分析聚合算子。
  分析結果示例:
  4.6 誤差傳播鏈分析
  單個(gè)Error Trace可以觀(guān)察到一條錯誤傳播路徑,但觀(guān)察者無(wú)法確認一條錯誤傳播路徑是否一定代表了一個(gè)普遍問(wèn)題,也無(wú)法回答錯誤傳播的影響。因此聚合大量的Error Trace來(lái)分析整體的錯誤來(lái)源、傳播路徑、影響面也是鏈路分析的需求場(chǎng)景。
  與鏈路性能分析類(lèi)似,錯誤傳播路徑是從批量跟蹤中聚合和計算的,這在臨時(shí)模式和離線(xiàn)模式下都是必需的。我們還將錯誤傳播鏈分析算子應用于臨時(shí)和離線(xiàn)計算模式。Ad hoc模式可以滿(mǎn)足任意時(shí)間段、靈活條件(各種標簽)批量過(guò)濾Error Trace的需求,快速得到聚合分析結果。離線(xiàn)訂閱模式可以滿(mǎn)足更完整的全量Error Trace數據聚合分析需求,觀(guān)察長(cháng)期趨勢,助力業(yè)務(wù)長(cháng)期穩定優(yōu)化。
  分析結果示例:
  五、總結與展望
  本文主要介紹在從零到一建立鏈路追蹤基礎能力后,如何聚合分析海量鏈路數據,回答更高層次的場(chǎng)景化問(wèn)題。我們分享了我們具體的技術(shù)選型過(guò)程和實(shí)施技術(shù)架構,以及一些成功的實(shí)施案例。

文章采集api 解決方案:API是什么?為什么它很重要?

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2022-11-22 14:20 ? 來(lái)自相關(guān)話(huà)題

  文章采集api 解決方案:API是什么?為什么它很重要?
  要想全面了解科技新聞,就必須或多或少地了解一些技術(shù)術(shù)語(yǔ)。API這個(gè)詞很常見(jiàn)。
  iOS 7 正式版
  已經(jīng)上線(xiàn)了,更新了很多老的API,也增加了很多新的API。如果你自己的工作用到了API,那你肯定已經(jīng)很清楚它的重要性了。但是其他一些讀者可能會(huì )問(wèn):什么是 API,為什么我們如此重視它?
  下面就帶你了解一下。
  API:編程之窗
  API這個(gè)詞,全稱(chēng)是Application Programming Interfaces(應用程序編程接口)。簡(jiǎn)單地說(shuō),它是一組用于管理應用程序之間通信的需求。API 并不是什么新鮮事物,它們允許您在使用 PC 或筆記本電腦時(shí)在程序之間傳輸數據。例如,剪切 LibreOffice 文檔的一段并將其傳輸到 Excel 電子表格。系統級 API 允許 LibreOffice 等程序在 Windows 等操作系統上運行。
  在 Internet 上,API 允許其他應用程序使用一些大型服務(wù),例如 Google Maps 和 Facebook。例如 Yelp,它在谷歌地圖上顯示附近的餐館;以及允許用戶(hù)通過(guò) Facebook 與其他玩家聊天、分享分數等的游戲。
  
  API是通過(guò)對外開(kāi)放程序的一些內部功能來(lái)實(shí)現的,允許應用程序根據自己的興趣共享數據,不需要開(kāi)發(fā)者公開(kāi)所有的軟件代碼。開(kāi)源項目也是如此。您可以將其視為門(mén)、窗或杠桿。無(wú)論您使用什么比喻,程序與外部軟件世界之間的通信都是由 API 定義的。
  API 是如何工作的?
  API 現在非常重要,因為它們決定了開(kāi)發(fā)人員如何將他們新開(kāi)發(fā)的應用程序連接到大規模 Web 服務(wù)。例如,一個(gè)游戲應用的開(kāi)發(fā)者可以使用Dropbox的API讓用戶(hù)將游戲數據存儲在Dropbox的云端,而無(wú)需開(kāi)發(fā)自己的云存儲服務(wù)。
  API也可以節省時(shí)間。比如你在國外用Facebook賬號,在國內用QQ賬號,就可以直接登錄很多應用和網(wǎng)站,免去注冊的麻煩。這也是通過(guò)API實(shí)現的。
  從更廣泛的角度來(lái)看,API 支持各種“混搭”網(wǎng)絡(luò )服務(wù),開(kāi)發(fā)人員可以混合和匹配來(lái)自 Google、Facebook 或 Twitter 的 API,以創(chuàng )建全新的應用程序和服務(wù)。在許多方面,可以說(shuō)主流服務(wù) API 的廣泛可用性使現代 Web 體驗成為可能。
  叫喊
  安卓
  
  例如,當您搜索附近的餐館時(shí),位置信息將顯示在 Google 地圖上。Yelp 還沒(méi)有開(kāi)發(fā)自己的地圖。Yelp 應用程序通過(guò) Google Maps 的 API 將自己的信息——餐廳地址、用戶(hù)評論等——發(fā)送到內部的 Google Maps 功能,最終得到一張帶有周?chē)蛷d位置的地圖顯示給用戶(hù),這顯示在應用程序內的 Yelp 上。
  這類(lèi)API很常見(jiàn),比如雷鋒網(wǎng)文章下分享到新浪微博和QQ空間的圖標。點(diǎn)擊后,這些鏈接會(huì )向相關(guān)服務(wù)的API發(fā)送請求,允許用戶(hù)在不離開(kāi)當前頁(yè)面的情況下分享文章內容。.
  API出現問(wèn)題時(shí)
  API 現在可用并不意味著(zhù)它將來(lái)也可用。以推特為例,
  一年前因限制第三方應用程序使用其 API 而臭名昭著(zhù)
  ,這種做法殺死了所有第三方推特客戶(hù)端,讓用戶(hù)只能使用推特自己的網(wǎng)站和應用,推特靠展示廣告賺錢(qián)。推特表示,堅持這樣做是為了保持統一的推特用戶(hù)體驗。
  一些公司可能會(huì )關(guān)閉服務(wù)和 API。例如,谷歌總是關(guān)閉一些看不到利潤的服務(wù)。最近的例子是谷歌閱讀器。如果您的應用程序依賴(lài)于這些 API 來(lái)運行,那么問(wèn)題就會(huì )接踵而至。
  API 的世界雖然并不完美,但依然擋不住開(kāi)發(fā)者對它的熱情,擋不住它所催生的各種應用和服務(wù)。
  免費的:免費文章采集工具(免費文章采集工具)
  目錄:
  1.免費文章采集軟件
  2.文章收錄網(wǎng)站
  一個(gè)簡(jiǎn)單易用的文章采集器,不需要我們輸入采集規則,就可以全網(wǎng)采集我們感興趣的文章。文章采集器有關(guān)鍵詞文章采集和指定網(wǎng)站文章采集可視化。實(shí)用性體現在我們不需要輸入太多的指令,只需要用鼠標點(diǎn)擊一下,就可以完成文章的采集工作。
  3.熱門(mén)文章采集
  4.萬(wàn)能文章采集器安卓版
  關(guān)鍵詞采集需要我們進(jìn)入我們的核心關(guān)鍵詞,選擇我們需要采集的自媒體和其他相關(guān)平臺,然后我們就可以完成采集任務(wù)設置,關(guān)鍵詞采集器會(huì )自動(dòng)通過(guò)關(guān)鍵詞匹配大量實(shí)時(shí)熱門(mén)文章,為我們創(chuàng )作提供大量文章素材。
  
  5.文章資源采集
  可視化指定采集
,如果您對我們的網(wǎng)頁(yè)感興趣,可以通過(guò)點(diǎn)擊鼠標完成指定采集
設置。支持英文等外文網(wǎng)站的采集
,并內置翻譯功能。在本地導出或發(fā)布到我們的 CMS 時(shí),它是一鍵式翻譯。支持段落標簽被保留。
  6.萬(wàn)能文章采集
神器
  通過(guò)指定采集的監控頁(yè)面功能,我們可以監控采集固定頁(yè)面,適合采集實(shí)時(shí)更新的網(wǎng)站內容,也可以采集論壇評論,讓我們實(shí)時(shí)關(guān)注輿情動(dòng)向,及時(shí)掌握我論壇的節奏。
  7、網(wǎng)站文章自動(dòng)采集發(fā)布
  網(wǎng)站優(yōu)化離不開(kāi)我們的原創(chuàng )美和搜索引擎優(yōu)化(SEO)。什么是原創(chuàng )內容?如果我們想讓我們的 SEO 策略發(fā)揮作用,讓我們的觀(guān)眾信任我們,那么用戶(hù)體驗也是一類(lèi)原創(chuàng ),而且它也很容易實(shí)現。
  8.文章批量采集
  繼續閱讀以發(fā)現在為任何在線(xiàn)渠道創(chuàng )建新文章時(shí)應該實(shí)施的一些最佳實(shí)踐
  
  9.文章采集
及原創(chuàng )軟件生成
  仔細檢查和校對我們的內容,在點(diǎn)擊“發(fā)布”新內容之前采取的第一個(gè)行動(dòng)當然是審查它記住,原創(chuàng )性也包括自我原創(chuàng )性——(經(jīng)常)不小心復制和發(fā)布自己以前的作品,但聲稱(chēng)它是原創(chuàng )的
  10.免費文章站點(diǎn)集合
  因此,請確保我們投入足夠的時(shí)間來(lái)執行所有必要的檢查,以保護我們的內容免受任何復制或自我復制問(wèn)題。檢查內容的可讀性、語(yǔ)法、結構和關(guān)鍵字。如果有任何內容聽(tīng)起來(lái)像是重復的或非原創(chuàng )的,請標記它并確保在公開(kāi)之前閱讀我們文章的底部。
  如何始終創(chuàng )建我們的原創(chuàng )內容,如果我們正在為在線(xiàn)商店編寫(xiě)產(chǎn)品描述,這可能會(huì )特別棘手。在這些情況下,很容易對僅顏色或尺寸不同的項目使用完全相同的內容。然而,嘗試在每一個(gè)描述中保持原創(chuàng )是至關(guān)重要的。
  發(fā)揮創(chuàng )意并為每件作品添加一些獨特的東西,無(wú)論是談?wù)撎囟伾赡苓m合的心情,還是我們如何穿著(zhù)該物品
  文章采集器
的分享到此結束。什么樣的文章采集器好用?當然,它是基于用戶(hù)體驗,降低了用戶(hù)學(xué)習成本,擁有強大的采集器。如果你喜歡這篇文章,不妨采集
一下,點(diǎn)贊,一鍵三連。
  圖片 查看全部

  文章采集api 解決方案:API是什么?為什么它很重要?
  要想全面了解科技新聞,就必須或多或少地了解一些技術(shù)術(shù)語(yǔ)。API這個(gè)詞很常見(jiàn)。
  iOS 7 正式版
  已經(jīng)上線(xiàn)了,更新了很多老的API,也增加了很多新的API。如果你自己的工作用到了API,那你肯定已經(jīng)很清楚它的重要性了。但是其他一些讀者可能會(huì )問(wèn):什么是 API,為什么我們如此重視它?
  下面就帶你了解一下。
  API:編程之窗
  API這個(gè)詞,全稱(chēng)是Application Programming Interfaces(應用程序編程接口)。簡(jiǎn)單地說(shuō),它是一組用于管理應用程序之間通信的需求。API 并不是什么新鮮事物,它們允許您在使用 PC 或筆記本電腦時(shí)在程序之間傳輸數據。例如,剪切 LibreOffice 文檔的一段并將其傳輸到 Excel 電子表格。系統級 API 允許 LibreOffice 等程序在 Windows 等操作系統上運行。
  在 Internet 上,API 允許其他應用程序使用一些大型服務(wù),例如 Google Maps 和 Facebook。例如 Yelp,它在谷歌地圖上顯示附近的餐館;以及允許用戶(hù)通過(guò) Facebook 與其他玩家聊天、分享分數等的游戲。
  
  API是通過(guò)對外開(kāi)放程序的一些內部功能來(lái)實(shí)現的,允許應用程序根據自己的興趣共享數據,不需要開(kāi)發(fā)者公開(kāi)所有的軟件代碼。開(kāi)源項目也是如此。您可以將其視為門(mén)、窗或杠桿。無(wú)論您使用什么比喻,程序與外部軟件世界之間的通信都是由 API 定義的。
  API 是如何工作的?
  API 現在非常重要,因為它們決定了開(kāi)發(fā)人員如何將他們新開(kāi)發(fā)的應用程序連接到大規模 Web 服務(wù)。例如,一個(gè)游戲應用的開(kāi)發(fā)者可以使用Dropbox的API讓用戶(hù)將游戲數據存儲在Dropbox的云端,而無(wú)需開(kāi)發(fā)自己的云存儲服務(wù)。
  API也可以節省時(shí)間。比如你在國外用Facebook賬號,在國內用QQ賬號,就可以直接登錄很多應用和網(wǎng)站,免去注冊的麻煩。這也是通過(guò)API實(shí)現的。
  從更廣泛的角度來(lái)看,API 支持各種“混搭”網(wǎng)絡(luò )服務(wù),開(kāi)發(fā)人員可以混合和匹配來(lái)自 Google、Facebook 或 Twitter 的 API,以創(chuàng )建全新的應用程序和服務(wù)。在許多方面,可以說(shuō)主流服務(wù) API 的廣泛可用性使現代 Web 體驗成為可能。
  叫喊
  安卓
  
  例如,當您搜索附近的餐館時(shí),位置信息將顯示在 Google 地圖上。Yelp 還沒(méi)有開(kāi)發(fā)自己的地圖。Yelp 應用程序通過(guò) Google Maps 的 API 將自己的信息——餐廳地址、用戶(hù)評論等——發(fā)送到內部的 Google Maps 功能,最終得到一張帶有周?chē)蛷d位置的地圖顯示給用戶(hù),這顯示在應用程序內的 Yelp 上。
  這類(lèi)API很常見(jiàn),比如雷鋒網(wǎng)文章下分享到新浪微博和QQ空間的圖標。點(diǎn)擊后,這些鏈接會(huì )向相關(guān)服務(wù)的API發(fā)送請求,允許用戶(hù)在不離開(kāi)當前頁(yè)面的情況下分享文章內容。.
  API出現問(wèn)題時(shí)
  API 現在可用并不意味著(zhù)它將來(lái)也可用。以推特為例,
  一年前因限制第三方應用程序使用其 API 而臭名昭著(zhù)
  ,這種做法殺死了所有第三方推特客戶(hù)端,讓用戶(hù)只能使用推特自己的網(wǎng)站和應用,推特靠展示廣告賺錢(qián)。推特表示,堅持這樣做是為了保持統一的推特用戶(hù)體驗。
  一些公司可能會(huì )關(guān)閉服務(wù)和 API。例如,谷歌總是關(guān)閉一些看不到利潤的服務(wù)。最近的例子是谷歌閱讀器。如果您的應用程序依賴(lài)于這些 API 來(lái)運行,那么問(wèn)題就會(huì )接踵而至。
  API 的世界雖然并不完美,但依然擋不住開(kāi)發(fā)者對它的熱情,擋不住它所催生的各種應用和服務(wù)。
  免費的:免費文章采集工具(免費文章采集工具)
  目錄:
  1.免費文章采集軟件
  2.文章收錄網(wǎng)站
  一個(gè)簡(jiǎn)單易用的文章采集器,不需要我們輸入采集規則,就可以全網(wǎng)采集我們感興趣的文章。文章采集器有關(guān)鍵詞文章采集和指定網(wǎng)站文章采集可視化。實(shí)用性體現在我們不需要輸入太多的指令,只需要用鼠標點(diǎn)擊一下,就可以完成文章的采集工作。
  3.熱門(mén)文章采集
  4.萬(wàn)能文章采集器安卓版
  關(guān)鍵詞采集需要我們進(jìn)入我們的核心關(guān)鍵詞,選擇我們需要采集的自媒體和其他相關(guān)平臺,然后我們就可以完成采集任務(wù)設置,關(guān)鍵詞采集器會(huì )自動(dòng)通過(guò)關(guān)鍵詞匹配大量實(shí)時(shí)熱門(mén)文章,為我們創(chuàng )作提供大量文章素材。
  
  5.文章資源采集
  可視化指定采集
,如果您對我們的網(wǎng)頁(yè)感興趣,可以通過(guò)點(diǎn)擊鼠標完成指定采集
設置。支持英文等外文網(wǎng)站的采集
,并內置翻譯功能。在本地導出或發(fā)布到我們的 CMS 時(shí),它是一鍵式翻譯。支持段落標簽被保留。
  6.萬(wàn)能文章采集
神器
  通過(guò)指定采集的監控頁(yè)面功能,我們可以監控采集固定頁(yè)面,適合采集實(shí)時(shí)更新的網(wǎng)站內容,也可以采集論壇評論,讓我們實(shí)時(shí)關(guān)注輿情動(dòng)向,及時(shí)掌握我論壇的節奏。
  7、網(wǎng)站文章自動(dòng)采集發(fā)布
  網(wǎng)站優(yōu)化離不開(kāi)我們的原創(chuàng )美和搜索引擎優(yōu)化(SEO)。什么是原創(chuàng )內容?如果我們想讓我們的 SEO 策略發(fā)揮作用,讓我們的觀(guān)眾信任我們,那么用戶(hù)體驗也是一類(lèi)原創(chuàng ),而且它也很容易實(shí)現。
  8.文章批量采集
  繼續閱讀以發(fā)現在為任何在線(xiàn)渠道創(chuàng )建新文章時(shí)應該實(shí)施的一些最佳實(shí)踐
  
  9.文章采集
及原創(chuàng )軟件生成
  仔細檢查和校對我們的內容,在點(diǎn)擊“發(fā)布”新內容之前采取的第一個(gè)行動(dòng)當然是審查它記住,原創(chuàng )性也包括自我原創(chuàng )性——(經(jīng)常)不小心復制和發(fā)布自己以前的作品,但聲稱(chēng)它是原創(chuàng )的
  10.免費文章站點(diǎn)集合
  因此,請確保我們投入足夠的時(shí)間來(lái)執行所有必要的檢查,以保護我們的內容免受任何復制或自我復制問(wèn)題。檢查內容的可讀性、語(yǔ)法、結構和關(guān)鍵字。如果有任何內容聽(tīng)起來(lái)像是重復的或非原創(chuàng )的,請標記它并確保在公開(kāi)之前閱讀我們文章的底部。
  如何始終創(chuàng )建我們的原創(chuàng )內容,如果我們正在為在線(xiàn)商店編寫(xiě)產(chǎn)品描述,這可能會(huì )特別棘手。在這些情況下,很容易對僅顏色或尺寸不同的項目使用完全相同的內容。然而,嘗試在每一個(gè)描述中保持原創(chuàng )是至關(guān)重要的。
  發(fā)揮創(chuàng )意并為每件作品添加一些獨特的東西,無(wú)論是談?wù)撎囟伾赡苓m合的心情,還是我們如何穿著(zhù)該物品
  文章采集器
的分享到此結束。什么樣的文章采集器好用?當然,它是基于用戶(hù)體驗,降低了用戶(hù)學(xué)習成本,擁有強大的采集器。如果你喜歡這篇文章,不妨采集
一下,點(diǎn)贊,一鍵三連。
  圖片

解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 215 次瀏覽 ? 2022-11-22 04:20 ? 來(lái)自相關(guān)話(huà)題

  解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)
  在日常的項目開(kāi)發(fā)過(guò)程中,接口文檔是必不可少的。后端工程師和前端工程師之間需要接口文檔來(lái)定義數據傳輸協(xié)議,系統暴露的接口需要文檔來(lái)解釋?zhuān)到y相互調用需要文檔來(lái)記錄接口協(xié)議等等。對于一個(gè)完整的項目,接口文檔是至關(guān)重要的。那么我們如何編寫(xiě)接口文檔呢?今天就來(lái)說(shuō)說(shuō)接口文檔的幾個(gè)重要元素。
  應用程序接口
  一、界面概述
  接口概覽主要對本接口文檔涉及的業(yè)務(wù)功能點(diǎn)、面向的閱讀對象、接口文檔中主要包括哪些業(yè)務(wù)接口進(jìn)行說(shuō)明,讓讀者有一個(gè)直觀(guān)的認識。例如:本文檔定義了面向外部接入方的中臺系統數據協(xié)議接口,主要包括:用戶(hù)注冊接口、用戶(hù)同步、授權認證等接口。適合的閱讀對象是接入中臺開(kāi)發(fā)者或外部合作伙伴……這樣的描述可以讓讀者對整個(gè)接口文檔有一個(gè)大概的了解。
  界面概覽
  2.權限說(shuō)明
  部分接口調用需要授權鑒權,這部分需要說(shuō)明。如果接口僅根據分配的令牌進(jìn)行身份驗證,則文檔需要說(shuō)明令牌的獲取方式。如果接口需要簽名認證,這里需要說(shuō)明簽名的具體方法。
  api權限說(shuō)明
  
  sign參數的生成規則要詳細說(shuō)明,最好有例子,比如:
  簽名方式
  這樣接入方就可以驗證自己的簽名方式是否正確。
  三、編碼方式
  接口請求過(guò)程中,出現亂碼可能是編碼造成的。因此,接口必須就編碼方式達成一致。參考下面的寫(xiě)法:
  編碼
  4.請求說(shuō)明
  接口文檔的請求說(shuō)明主要說(shuō)明接口請求的域名和請求的數據格式:
  
  要求澄清
  5.接口列表
  接口列表是接口文檔的主要內容。這部分需要列出所有的接口名稱(chēng)、接口地址、接口請求方法、接口請求參數、響應格式。在接口的請求參數中,需要說(shuō)明每個(gè)參數的含義、類(lèi)型、是否需要屬性。對于接口響應結果,如果有業(yè)務(wù)字段,也需要說(shuō)明。這是一個(gè)更完整的例子:
  接口示例
  六、狀態(tài)碼說(shuō)明
  接口的響應體一般都有響應狀態(tài)碼,比如成功、失敗等,狀態(tài)碼幫助接入方判斷接口調用的狀態(tài)。喜歡:
  狀態(tài)碼
  如果接口文檔能夠體現以上要素,就可以認為是一個(gè)完整的接口文檔,可以很好地被訪(fǎng)問(wèn)方閱讀和理解。
  解決方案:網(wǎng)站建設怎樣保證采集網(wǎng)站內容的質(zhì)量?
  網(wǎng)站建設需要在自己的網(wǎng)站上加入優(yōu)質(zhì)的網(wǎng)站內容。由于采集
了一些網(wǎng)站的部分內容,因此網(wǎng)站內容的質(zhì)量難免會(huì )存在一些問(wèn)題。由于網(wǎng)站收錄的文章非原創(chuàng ),會(huì )影響網(wǎng)站的權重和流量。那么,我們應該如何保證所采集到的網(wǎng)站內容的質(zhì)量才會(huì )來(lái)呢?
  1、修改標題吸引用戶(hù)注意力,讓用戶(hù)進(jìn)入網(wǎng)站,滿(mǎn)足用戶(hù)對熱點(diǎn)內容的好奇心,搜索引擎會(huì )以一定的方式對熱點(diǎn)內容進(jìn)行優(yōu)先排序。對于關(guān)鍵詞標簽和描述,這些頭條黨也會(huì )更加關(guān)注搜索引擎抓取和用戶(hù)點(diǎn)擊的好奇心。所以,我們在采集內容的時(shí)候,要盡可能的借鑒標題黨的一些方法,對標題、描述、關(guān)鍵詞標簽進(jìn)行一些修改,這樣才能擁有區分的三大要素頁(yè)面的原創(chuàng )
內容。
  
  其次,要想與原創(chuàng )內容網(wǎng)站區分開(kāi)來(lái),就必須做出與之不同的排版方式。比如做分頁(yè),我們可以把內容組織在一起,這樣搜索引擎就可以很容易的抓取全部?jì)热?,用?hù)不需要翻頁(yè)就可以查看??梢哉f(shuō),這種方法在排版上有所不同,也提高了用戶(hù)體驗。,排版要不同;
  3、文章標題清楚,讀者就知道這篇文章講的是什么。如果這篇文章的主題不明確,會(huì )使讀者失去閱讀興趣。因此,站長(cháng)在收錄文章內容的時(shí)候,需要適當區分段落,加上一些小標題,讓讀者很容易知道這篇文章講的是什么。
  第四,采集內容盡量不要超過(guò)一定的時(shí)間。在一定時(shí)期內,搜索引擎很難抓取到相同的內容。我們可以利用這一點(diǎn),搜索引擎對新文章的偏好,在收錄內容的時(shí)候,盡量收錄一天之內的內容。永遠不要抓取已經(jīng)存在很長(cháng)時(shí)間的內容。
  
  5、對于一些沒(méi)有圖片的文章,我們可以添加一些圖片來(lái)增加視覺(jué)感。因為我們采集
的是別人的內容,所以不能原樣復制粘貼,我們必須做一些修改,這樣搜索引擎才不會(huì )覺(jué)得有抄襲的嫌疑。所以,在采集
別人的文章時(shí),最好修改一下自己的文章,或者加點(diǎn)圖片。
  最后,想要自己網(wǎng)站采集的內容有一定的質(zhì)量,就不要無(wú)意義的復制粘貼。只有對網(wǎng)站上的文章內容進(jìn)行一定的改動(dòng),才會(huì )產(chǎn)生一定的效果,才能體現出為網(wǎng)站增加內容的作用。
  如果您想與我們合作,請致電: 更多精彩推薦:***.*****.***/ 查看全部

  解決方案:api接口怎么寫(xiě)?(寫(xiě)api接口的6個(gè)方法)
  在日常的項目開(kāi)發(fā)過(guò)程中,接口文檔是必不可少的。后端工程師和前端工程師之間需要接口文檔來(lái)定義數據傳輸協(xié)議,系統暴露的接口需要文檔來(lái)解釋?zhuān)到y相互調用需要文檔來(lái)記錄接口協(xié)議等等。對于一個(gè)完整的項目,接口文檔是至關(guān)重要的。那么我們如何編寫(xiě)接口文檔呢?今天就來(lái)說(shuō)說(shuō)接口文檔的幾個(gè)重要元素。
  應用程序接口
  一、界面概述
  接口概覽主要對本接口文檔涉及的業(yè)務(wù)功能點(diǎn)、面向的閱讀對象、接口文檔中主要包括哪些業(yè)務(wù)接口進(jìn)行說(shuō)明,讓讀者有一個(gè)直觀(guān)的認識。例如:本文檔定義了面向外部接入方的中臺系統數據協(xié)議接口,主要包括:用戶(hù)注冊接口、用戶(hù)同步、授權認證等接口。適合的閱讀對象是接入中臺開(kāi)發(fā)者或外部合作伙伴……這樣的描述可以讓讀者對整個(gè)接口文檔有一個(gè)大概的了解。
  界面概覽
  2.權限說(shuō)明
  部分接口調用需要授權鑒權,這部分需要說(shuō)明。如果接口僅根據分配的令牌進(jìn)行身份驗證,則文檔需要說(shuō)明令牌的獲取方式。如果接口需要簽名認證,這里需要說(shuō)明簽名的具體方法。
  api權限說(shuō)明
  
  sign參數的生成規則要詳細說(shuō)明,最好有例子,比如:
  簽名方式
  這樣接入方就可以驗證自己的簽名方式是否正確。
  三、編碼方式
  接口請求過(guò)程中,出現亂碼可能是編碼造成的。因此,接口必須就編碼方式達成一致。參考下面的寫(xiě)法:
  編碼
  4.請求說(shuō)明
  接口文檔的請求說(shuō)明主要說(shuō)明接口請求的域名和請求的數據格式:
  
  要求澄清
  5.接口列表
  接口列表是接口文檔的主要內容。這部分需要列出所有的接口名稱(chēng)、接口地址、接口請求方法、接口請求參數、響應格式。在接口的請求參數中,需要說(shuō)明每個(gè)參數的含義、類(lèi)型、是否需要屬性。對于接口響應結果,如果有業(yè)務(wù)字段,也需要說(shuō)明。這是一個(gè)更完整的例子:
  接口示例
  六、狀態(tài)碼說(shuō)明
  接口的響應體一般都有響應狀態(tài)碼,比如成功、失敗等,狀態(tài)碼幫助接入方判斷接口調用的狀態(tài)。喜歡:
  狀態(tài)碼
  如果接口文檔能夠體現以上要素,就可以認為是一個(gè)完整的接口文檔,可以很好地被訪(fǎng)問(wèn)方閱讀和理解。
  解決方案:網(wǎng)站建設怎樣保證采集網(wǎng)站內容的質(zhì)量?
  網(wǎng)站建設需要在自己的網(wǎng)站上加入優(yōu)質(zhì)的網(wǎng)站內容。由于采集
了一些網(wǎng)站的部分內容,因此網(wǎng)站內容的質(zhì)量難免會(huì )存在一些問(wèn)題。由于網(wǎng)站收錄的文章非原創(chuàng ),會(huì )影響網(wǎng)站的權重和流量。那么,我們應該如何保證所采集到的網(wǎng)站內容的質(zhì)量才會(huì )來(lái)呢?
  1、修改標題吸引用戶(hù)注意力,讓用戶(hù)進(jìn)入網(wǎng)站,滿(mǎn)足用戶(hù)對熱點(diǎn)內容的好奇心,搜索引擎會(huì )以一定的方式對熱點(diǎn)內容進(jìn)行優(yōu)先排序。對于關(guān)鍵詞標簽和描述,這些頭條黨也會(huì )更加關(guān)注搜索引擎抓取和用戶(hù)點(diǎn)擊的好奇心。所以,我們在采集內容的時(shí)候,要盡可能的借鑒標題黨的一些方法,對標題、描述、關(guān)鍵詞標簽進(jìn)行一些修改,這樣才能擁有區分的三大要素頁(yè)面的原創(chuàng )
內容。
  
  其次,要想與原創(chuàng )內容網(wǎng)站區分開(kāi)來(lái),就必須做出與之不同的排版方式。比如做分頁(yè),我們可以把內容組織在一起,這樣搜索引擎就可以很容易的抓取全部?jì)热?,用?hù)不需要翻頁(yè)就可以查看??梢哉f(shuō),這種方法在排版上有所不同,也提高了用戶(hù)體驗。,排版要不同;
  3、文章標題清楚,讀者就知道這篇文章講的是什么。如果這篇文章的主題不明確,會(huì )使讀者失去閱讀興趣。因此,站長(cháng)在收錄文章內容的時(shí)候,需要適當區分段落,加上一些小標題,讓讀者很容易知道這篇文章講的是什么。
  第四,采集內容盡量不要超過(guò)一定的時(shí)間。在一定時(shí)期內,搜索引擎很難抓取到相同的內容。我們可以利用這一點(diǎn),搜索引擎對新文章的偏好,在收錄內容的時(shí)候,盡量收錄一天之內的內容。永遠不要抓取已經(jīng)存在很長(cháng)時(shí)間的內容。
  
  5、對于一些沒(méi)有圖片的文章,我們可以添加一些圖片來(lái)增加視覺(jué)感。因為我們采集
的是別人的內容,所以不能原樣復制粘貼,我們必須做一些修改,這樣搜索引擎才不會(huì )覺(jué)得有抄襲的嫌疑。所以,在采集
別人的文章時(shí),最好修改一下自己的文章,或者加點(diǎn)圖片。
  最后,想要自己網(wǎng)站采集的內容有一定的質(zhì)量,就不要無(wú)意義的復制粘貼。只有對網(wǎng)站上的文章內容進(jìn)行一定的改動(dòng),才會(huì )產(chǎn)生一定的效果,才能體現出為網(wǎng)站增加內容的作用。
  如果您想與我們合作,請致電: 更多精彩推薦:***.*****.***/

最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 52 次瀏覽 ? 2022-11-21 23:16 ? 來(lái)自相關(guān)話(huà)題

  最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄
  點(diǎn)擊上面java那些東西,選擇star公眾號
  都幾歲了,還在用傳統密碼?10月12日,谷歌宣布在A(yíng)ndroid和Chrome中正式實(shí)施密鑰登錄“PassKey”,逐步取代長(cháng)期密碼登錄“PassWord”。
  推出的一鍵登錄可以認為是“生物密碼”和“授權登錄”的結合。用戶(hù)可以在安卓手機上創(chuàng )建基于公鑰加密的密鑰憑證。創(chuàng )建密鑰時(shí),他們需要進(jìn)行生物特征識別,例如“指紋”或“面部識別”。
  
  創(chuàng )建后,此密鑰憑據可用于解鎖所有在線(xiàn)帳戶(hù)——包括您的 Android 手機和附近所有設備上的帳戶(hù)。是的,這個(gè)FIDO密鑰登錄功能是微軟/蘋(píng)果/谷歌聯(lián)合出品的,是行業(yè)標準。所以它是跨平臺的,包括 Windows、macOS 和 iOS 以及 ChromeOS。換句話(huà)說(shuō),您可以使用 Android 手機的密鑰憑據解鎖上述所有系統上的帳戶(hù)和網(wǎng)站。
  在谷歌看來(lái),密碼登錄的舊認證方式容易受到網(wǎng)絡(luò )釣魚(yú)或黑客攻擊等手段的影響,安全性不高。密鑰登錄則大不相同,不能重復使用,不會(huì )暴露服務(wù)器漏洞,還能保護用戶(hù)免受釣魚(yú)攻擊和忘記密碼。即使手機丟失,也可以從云端備份FIDO密鑰,安全同步到新手機。
  不過(guò)這個(gè)一鍵登錄功能現在還不完善,只是一個(gè)重要的里程碑,實(shí)現了兩個(gè)關(guān)鍵功能:
  
  用戶(hù)可以在他們的 Android 設備上創(chuàng )建和使用密鑰,并且密鑰通過(guò) Google 密碼管理器同步。開(kāi)發(fā)人員可以使用 Chrome 通過(guò) WebAuthn API、Android 和其他受支持的平臺為網(wǎng)站上的用戶(hù)構建關(guān)鍵支持。
  要向網(wǎng)站添加基于密鑰的登錄功能,開(kāi)發(fā)人員需要注冊 Google Play 服務(wù)測試版并使用 Chrome Canary 版本。
  關(guān)鍵登錄功能的下一個(gè)里程碑是原生 Android 應用程序 API。本機 API 將為應用程序提供多種登錄方法。用戶(hù)可以選擇使用密鑰登錄或使用保存的密碼。
  
  最新版:2022 TG營(yíng)銷(xiāo)助手破解版 多功能
  軟件介紹
  Telegram營(yíng)銷(xiāo)助手/TG營(yíng)銷(xiāo)助手是一款集閱讀量采集、用戶(hù)群租用、批量拉人、自動(dòng)回復、自動(dòng)聊天(炒群)等功能于一體的軟件。需要的話(huà)可以用 試試研究下,難怪最近被tg私信騷擾,原來(lái)有這么個(gè)軟件,處理私信騷擾最簡(jiǎn)單粗暴的方法就是取消用戶(hù)名設置。
  1:滑動(dòng)頻道閱讀量(增加頻道閱讀量增加人氣)
  2:用戶(hù)精準采集(采集同行群中的客戶(hù),拉入自己的群實(shí)現交易)
  3:精準群采集(輸入關(guān)鍵詞采集相關(guān)群鏈接,直達自動(dòng)群營(yíng)銷(xiāo))
  4:批量拉人(軟件后臺自動(dòng)批量拉人,可將提前采集
的精準客戶(hù)批量拉到指定群)
  5:自動(dòng)群發(fā)/回復(可自行編輯群發(fā)內容和群)
  6:自動(dòng)進(jìn)群聊天,營(yíng)造活躍的群內氣氛(導入小號,編輯話(huà)術(shù)即可)
  7:群內精準客戶(hù)自動(dòng)私信
  軟件截圖
  教程
  軟件必須先設置好api_id和api_hash這兩個(gè)參數才可以使用??!
  1.設置
  設置代理ip接口地址 接口地址必須以文本格式返回ip+端口號的形式,此處設置的代理ip用于批量注冊
  
  批量修改賬號信息,可以修改賬號名稱(chēng)和頭像。名稱(chēng)分別是 config/first_name.txt 和 config/last_name.txt 中的第一行。
  2. 手動(dòng)登錄/注冊
  填寫(xiě)區號+手機號,點(diǎn)擊獲取驗證碼。收到驗證碼后,輸入驗證碼,賬戶(hù)會(huì )自動(dòng)登錄。session文件存放在sessions目錄下
  3.批量注冊
  當前軟件對接的打碼平臺可以找一個(gè)聯(lián)系人獲取登錄頁(yè)面
  設置好賬號信息、注冊次數、間隔時(shí)間后,就可以開(kāi)始批量注冊了
  first_name.txt和last_name.txt放置注冊時(shí)指定的用戶(hù)昵稱(chēng)(名字),如果文件不存在或文件內容為空,軟件會(huì )隨機生成一個(gè)英文名字
  Avatars 文件夾收錄
注冊時(shí)使用的頭像,軟件會(huì )隨機選擇其中一個(gè)。目前僅支持 .png 和 .jpg 格式。
  所有登錄、注冊、保存的本地賬號都在sessions文件夾下,都是.session文件
  4.采集
用戶(hù)
  給定一個(gè)或多個(gè)公共群的群鏈接,選擇要采集
的信息,ID和用戶(hù)名就不多說(shuō)了,昵稱(chēng)就是用戶(hù)名,時(shí)間就是上次登錄時(shí)間
  在線(xiàn)范圍是采集
指定時(shí)間內登錄的用戶(hù)。這里我采集
了一天之內登錄的用戶(hù)。
  所有運行軟件都會(huì )自動(dòng)讀取sessions文件夾下的賬號登錄
  所有采集
的用戶(hù)名都保存在 CollectData 文件夾中的 users.txt 中
  五、征集組
  
  直接填寫(xiě)關(guān)鍵詞,軟件會(huì )自動(dòng)采集
相關(guān)組別
  所有采集
的數據都在 CollectData 文件夾中的 groups.txt 中
  下面是序號、頻道或群名、群鏈接
  軟件中所有按鈕點(diǎn)擊一次即可,確認所有操作完成后繼續點(diǎn)擊
  6.分批拉人
  軟件可以根據用戶(hù)名拉人,拉入群鏈接填寫(xiě)自己的群,可以是公群也可以是私群,但必須是完整的群鏈接
  我們先從其他組采集點(diǎn)數據進(jìn)來(lái)。這里我們只需要選擇采集
用戶(hù)名,然后篩選群組管理員即可。后面的數據中只會(huì )采集
用戶(hù)名,方便使用。這里我們會(huì )主動(dòng)過(guò)濾機器人和現有用戶(hù)。經(jīng)銷(xiāo)商編號
  把所有數據放在users.txt里面,拉人讀取這個(gè)文件的數據
  每次拉取是每個(gè)賬號拉取的總人數
  總次數為每個(gè)線(xiàn)程登錄的賬號總數
  多線(xiàn)程數是指多少個(gè)賬號會(huì )同時(shí)拉人
  所以總拉人數=每次拉進(jìn)來(lái)的多線(xiàn)程總數
  每個(gè)拉入軟件都有限制,每天最多50個(gè)
  多線(xiàn)程數最好在10以下,太多可能導致batch ban
  最好用老號拉人,新號容易被封,我這里用的都是老號 查看全部

  最新版本:谷歌正式推出 “密鑰登錄”,逐步取代傳統密碼登錄
  點(diǎn)擊上面java那些東西,選擇star公眾號
  都幾歲了,還在用傳統密碼?10月12日,谷歌宣布在A(yíng)ndroid和Chrome中正式實(shí)施密鑰登錄“PassKey”,逐步取代長(cháng)期密碼登錄“PassWord”。
  推出的一鍵登錄可以認為是“生物密碼”和“授權登錄”的結合。用戶(hù)可以在安卓手機上創(chuàng )建基于公鑰加密的密鑰憑證。創(chuàng )建密鑰時(shí),他們需要進(jìn)行生物特征識別,例如“指紋”或“面部識別”。
  
  創(chuàng )建后,此密鑰憑據可用于解鎖所有在線(xiàn)帳戶(hù)——包括您的 Android 手機和附近所有設備上的帳戶(hù)。是的,這個(gè)FIDO密鑰登錄功能是微軟/蘋(píng)果/谷歌聯(lián)合出品的,是行業(yè)標準。所以它是跨平臺的,包括 Windows、macOS 和 iOS 以及 ChromeOS。換句話(huà)說(shuō),您可以使用 Android 手機的密鑰憑據解鎖上述所有系統上的帳戶(hù)和網(wǎng)站。
  在谷歌看來(lái),密碼登錄的舊認證方式容易受到網(wǎng)絡(luò )釣魚(yú)或黑客攻擊等手段的影響,安全性不高。密鑰登錄則大不相同,不能重復使用,不會(huì )暴露服務(wù)器漏洞,還能保護用戶(hù)免受釣魚(yú)攻擊和忘記密碼。即使手機丟失,也可以從云端備份FIDO密鑰,安全同步到新手機。
  不過(guò)這個(gè)一鍵登錄功能現在還不完善,只是一個(gè)重要的里程碑,實(shí)現了兩個(gè)關(guān)鍵功能:
  
  用戶(hù)可以在他們的 Android 設備上創(chuàng )建和使用密鑰,并且密鑰通過(guò) Google 密碼管理器同步。開(kāi)發(fā)人員可以使用 Chrome 通過(guò) WebAuthn API、Android 和其他受支持的平臺為網(wǎng)站上的用戶(hù)構建關(guān)鍵支持。
  要向網(wǎng)站添加基于密鑰的登錄功能,開(kāi)發(fā)人員需要注冊 Google Play 服務(wù)測試版并使用 Chrome Canary 版本。
  關(guān)鍵登錄功能的下一個(gè)里程碑是原生 Android 應用程序 API。本機 API 將為應用程序提供多種登錄方法。用戶(hù)可以選擇使用密鑰登錄或使用保存的密碼。
  
  最新版:2022 TG營(yíng)銷(xiāo)助手破解版 多功能
  軟件介紹
  Telegram營(yíng)銷(xiāo)助手/TG營(yíng)銷(xiāo)助手是一款集閱讀量采集、用戶(hù)群租用、批量拉人、自動(dòng)回復、自動(dòng)聊天(炒群)等功能于一體的軟件。需要的話(huà)可以用 試試研究下,難怪最近被tg私信騷擾,原來(lái)有這么個(gè)軟件,處理私信騷擾最簡(jiǎn)單粗暴的方法就是取消用戶(hù)名設置。
  1:滑動(dòng)頻道閱讀量(增加頻道閱讀量增加人氣)
  2:用戶(hù)精準采集(采集同行群中的客戶(hù),拉入自己的群實(shí)現交易)
  3:精準群采集(輸入關(guān)鍵詞采集相關(guān)群鏈接,直達自動(dòng)群營(yíng)銷(xiāo))
  4:批量拉人(軟件后臺自動(dòng)批量拉人,可將提前采集
的精準客戶(hù)批量拉到指定群)
  5:自動(dòng)群發(fā)/回復(可自行編輯群發(fā)內容和群)
  6:自動(dòng)進(jìn)群聊天,營(yíng)造活躍的群內氣氛(導入小號,編輯話(huà)術(shù)即可)
  7:群內精準客戶(hù)自動(dòng)私信
  軟件截圖
  教程
  軟件必須先設置好api_id和api_hash這兩個(gè)參數才可以使用??!
  1.設置
  設置代理ip接口地址 接口地址必須以文本格式返回ip+端口號的形式,此處設置的代理ip用于批量注冊
  
  批量修改賬號信息,可以修改賬號名稱(chēng)和頭像。名稱(chēng)分別是 config/first_name.txt 和 config/last_name.txt 中的第一行。
  2. 手動(dòng)登錄/注冊
  填寫(xiě)區號+手機號,點(diǎn)擊獲取驗證碼。收到驗證碼后,輸入驗證碼,賬戶(hù)會(huì )自動(dòng)登錄。session文件存放在sessions目錄下
  3.批量注冊
  當前軟件對接的打碼平臺可以找一個(gè)聯(lián)系人獲取登錄頁(yè)面
  設置好賬號信息、注冊次數、間隔時(shí)間后,就可以開(kāi)始批量注冊了
  first_name.txt和last_name.txt放置注冊時(shí)指定的用戶(hù)昵稱(chēng)(名字),如果文件不存在或文件內容為空,軟件會(huì )隨機生成一個(gè)英文名字
  Avatars 文件夾收錄
注冊時(shí)使用的頭像,軟件會(huì )隨機選擇其中一個(gè)。目前僅支持 .png 和 .jpg 格式。
  所有登錄、注冊、保存的本地賬號都在sessions文件夾下,都是.session文件
  4.采集
用戶(hù)
  給定一個(gè)或多個(gè)公共群的群鏈接,選擇要采集
的信息,ID和用戶(hù)名就不多說(shuō)了,昵稱(chēng)就是用戶(hù)名,時(shí)間就是上次登錄時(shí)間
  在線(xiàn)范圍是采集
指定時(shí)間內登錄的用戶(hù)。這里我采集
了一天之內登錄的用戶(hù)。
  所有運行軟件都會(huì )自動(dòng)讀取sessions文件夾下的賬號登錄
  所有采集
的用戶(hù)名都保存在 CollectData 文件夾中的 users.txt 中
  五、征集組
  
  直接填寫(xiě)關(guān)鍵詞,軟件會(huì )自動(dòng)采集
相關(guān)組別
  所有采集
的數據都在 CollectData 文件夾中的 groups.txt 中
  下面是序號、頻道或群名、群鏈接
  軟件中所有按鈕點(diǎn)擊一次即可,確認所有操作完成后繼續點(diǎn)擊
  6.分批拉人
  軟件可以根據用戶(hù)名拉人,拉入群鏈接填寫(xiě)自己的群,可以是公群也可以是私群,但必須是完整的群鏈接
  我們先從其他組采集點(diǎn)數據進(jìn)來(lái)。這里我們只需要選擇采集
用戶(hù)名,然后篩選群組管理員即可。后面的數據中只會(huì )采集
用戶(hù)名,方便使用。這里我們會(huì )主動(dòng)過(guò)濾機器人和現有用戶(hù)。經(jīng)銷(xiāo)商編號
  把所有數據放在users.txt里面,拉人讀取這個(gè)文件的數據
  每次拉取是每個(gè)賬號拉取的總人數
  總次數為每個(gè)線(xiàn)程登錄的賬號總數
  多線(xiàn)程數是指多少個(gè)賬號會(huì )同時(shí)拉人
  所以總拉人數=每次拉進(jìn)來(lái)的多線(xiàn)程總數
  每個(gè)拉入軟件都有限制,每天最多50個(gè)
  多線(xiàn)程數最好在10以下,太多可能導致batch ban
  最好用老號拉人,新號容易被封,我這里用的都是老號

內容分享:用戶(hù)日志采集

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2022-11-21 20:18 ? 來(lái)自相關(guān)話(huà)題

  內容分享:用戶(hù)日志采集
  大數據日志采集
  
  細細品味,細細品味,今天我們就來(lái)看看日漸流行的日志服務(wù)在數據中的作用。1、為什么要采集
日志?談到大數據,第一步總是數據采集
。只有有了原創(chuàng )
數據,才能進(jìn)行后續的存儲、處理、分析、應用和展示。數據采集
有兩個(gè)難點(diǎn),一是如何采集
數據(技術(shù)問(wèn)題),二是如何獲取非公司數據(政策問(wèn)題)。政策問(wèn)題更多的是依靠雙方的平等交流來(lái)為數據提供者帶來(lái)利益。與技術(shù)問(wèn)題相比,這個(gè)問(wèn)題更難得到有效和永久的解決。今天我們重點(diǎn)討論如何采集
數據的技術(shù)問(wèn)題。?二、如何采集
日志數據?一般來(lái)說(shuō),采集
數據有兩種技術(shù)方法。一種是直接從數據庫中提取已經(jīng)存儲在數據庫中的數據,另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。
  
  276
  干貨教程:神技能-不用Python,采集98%網(wǎng)頁(yè)公開(kāi)數據(教程)
  滿(mǎn)足福利:
 ?。ü娞柣貜?09可獲得以下三本書(shū))
  《白手起家》簡(jiǎn)介
  《從零開(kāi)始運營(yíng)》進(jìn)階篇
  第39次《中國互聯(lián)網(wǎng)絡(luò )發(fā)展狀況統計報告》
  用于數據分析喵
  十年生死
  數據人,忙
  好日子的美景增添了我的凄涼
  早晚不安
  研究緊迫
  報告瘋子
  思緒在夜里閃過(guò)
  尋找筆記
  怕忘記
  多變的需求
  所以呢
  預計半夜加班
  聽(tīng)家人的話(huà)
  打鼾聲
  以上是一個(gè)資深數據分析師寫(xiě)的自嘲段子,卻是很多分析師的真實(shí)寫(xiě)照。在耀眼的職業(yè)光環(huán)下,數據分析師的成長(cháng)幾乎伴隨著(zhù)孤獨,他們是在高級雜務(wù)中鍛造的。
  很多做生意的小伙伴
  感覺(jué)吉吉也是假數據分析師,
  因為需要參考各種資料,
  支持決策,
  數據的嚴謹性,
  決定決策的成敗。
 ?。ㄒ矝Q定了老板會(huì )不會(huì )放你走)
  因此,運營(yíng)商往往需要借助爬蟲(chóng)來(lái)抓取自己想要的數據。比如他們想獲取一個(gè)電商網(wǎng)站的評論數據,往往需要寫(xiě)一段代碼,用python抓取相應的內容。
  說(shuō)到代碼,我好像看到了很多芭比娃娃絕望的樣子。
  你想學(xué)習Excel函數嗎?
  你想學(xué)習 SQL 嗎?
  你想學(xué)習 Python 嗎?
  你想學(xué)R嗎?
  看代碼頭疼怎么辦?
  沒(méi)有編程基礎怎么辦?
  所以,你不明白代碼,
  易于新手使用的工具
  看著(zhù)這個(gè)寶貝真誠的眼神
  你有沒(méi)有在黑暗中看到一絲光的興奮
  這并不奇怪
  
  驚不驚?
  1個(gè)
  什么是爬行動(dòng)物
  什么是爬行動(dòng)物?爬蟲(chóng)就是網(wǎng)絡(luò )爬蟲(chóng),一種自動(dòng)獲取網(wǎng)頁(yè)內容的程序。它是搜索引擎的重要組成部分,所以搜索引擎優(yōu)化很大程度上是針對爬蟲(chóng)進(jìn)行優(yōu)化的。
  簡(jiǎn)單來(lái)說(shuō),它可以采集
網(wǎng)頁(yè)上的數據信息。當然,國內外也有很多老牌的爬蟲(chóng)工具。使用難度和采集準確度不同,適用人群也有差異。
  今天要給大家介紹的這個(gè)工具叫做:優(yōu)采云
Collector。
  新手可以用它來(lái)處理一些大批量的數據,高手也可以擴展它更高級的功能。
  2個(gè)
  采集
資料有什么用
  網(wǎng)絡(luò )數據采集其實(shí)是一個(gè)可以影響各行各業(yè)的行業(yè)。從PC時(shí)代到現在,它的用途非常廣泛。
  這里介紹一些比較常見(jiàn)的用途,包括但不限于這些用途,所以如果要仔細羅列,也可以寫(xiě)成百上千。因為,同一份數據,不同的人有不同的用法。
  1.財務(wù)數據,如季報、年報、財報,包括自動(dòng)采集最新的每日凈值。
  2、各大新聞門(mén)戶(hù)網(wǎng)站實(shí)時(shí)監控,自動(dòng)更新上傳最新消息。
  3、監控競爭對手的最新信息,包括商品價(jià)格、庫存等。
  4. 監控各大社交網(wǎng)站和博客,自動(dòng)抓取對企業(yè)產(chǎn)品的相關(guān)評論。
  5、采集
最新最全的職位招聘信息。
  6、關(guān)注各大房地產(chǎn)相關(guān)網(wǎng)站,采集
最新的新房、二手房市場(chǎng)行情。
  7. 從各大汽車(chē)網(wǎng)站采集
特定的新車(chē)和二手車(chē)信息。
  8、發(fā)現并采集
潛在客戶(hù)信息。
  9. 從行業(yè)網(wǎng)站采集
產(chǎn)品目錄和產(chǎn)品信息。
  10.同步各大電商平臺的商品信息,做到在一個(gè)平臺發(fā)布,在其他平臺自動(dòng)更新。
  3個(gè)
  操作演示
  門(mén)戶(hù)網(wǎng)站:
  首先進(jìn)入官網(wǎng),下載并注冊
 ?。ㄊ堑?,是的,這是胡說(shuō)八道)
  網(wǎng)友提示:目前優(yōu)采云
采集器只支持Windows系列操作系統。下面我就通過(guò)采集
幾個(gè)網(wǎng)站的數據來(lái)給大家演示一下。
  進(jìn)入優(yōu)采云
采集器首頁(yè),可以看到一個(gè)搜索欄,這是SMART模式,可以不配置規則進(jìn)行采集。
  SMART模式暫時(shí)只支持采集帶有列表或表格信息的網(wǎng)頁(yè),例如:電商網(wǎng)站、一些生活服務(wù)類(lèi)網(wǎng)站的商品列表的商品信息等。
 ?。ū緢D為58廣州同城搜集的租房信息)
  但是,SMART模式的適用范圍較窄。讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  接下來(lái),讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  這里我選擇列表并采集
詳細信息給大家演示一下,比較直觀(guān)。
  給任務(wù)起個(gè)任務(wù)名并創(chuàng )建一個(gè)任務(wù)組,將要采集的網(wǎng)址復制粘貼到下方的采集地址欄中。
  
  選擇打開(kāi)頁(yè)面中的第一家和最后一家店鋪,采集器會(huì )自動(dòng)采集它們之間的所有店鋪,如紅框所示。
  向導模式?jīng)]有先設置翻頁(yè),然后我們直接采集字段,就是你進(jìn)入某個(gè)店鋪后要采集的數據,比如店名或者地址。
  采集完成后點(diǎn)擊下一步,這里選擇開(kāi)始單機采集,因為我用的是免費版,所以沒(méi)有云采集功能,采集效率會(huì )比較慢。
  如下圖所示,我們采集到的數據會(huì )以表格的形式展示出來(lái)。采集速度一開(kāi)始會(huì )有點(diǎn)慢,之后會(huì )穩定在一個(gè)比較高的速度,主要是受網(wǎng)速的影響。
  二是進(jìn)階模式。有一定基礎的朋友可以使用這個(gè)模式。需要自己配置規則,就是采集的范圍,是否需要翻頁(yè)。
  我就用豆瓣網(wǎng)的電影合集給大家演示一下。大家都知道豆瓣的評分是比較靠譜的,所以這樣的數據對于我們的分析非常有用,比如建立類(lèi)似的網(wǎng)站。
  高級模式有兩個(gè)進(jìn)入途徑,第一個(gè)是右側高級模式中的“開(kāi)始采集
”按鈕框,另一個(gè)是直接點(diǎn)擊左下角的快速啟動(dòng)(適合熟練者)。
  任務(wù)名稱(chēng)和任務(wù)組可以參照向導方式在這里填寫(xiě)。這里先說(shuō)一下設計流程。這是整個(gè)優(yōu)采云
采集
器中比較重要的一個(gè)部分,因為它會(huì )影響到后續采集
的成功與否。
  按照第一步,將左上角的網(wǎng)頁(yè)框拖到豎線(xiàn)上,然后按第二步,在出現的頁(yè)面地址欄中輸入要采集的網(wǎng)址。還有一種采集
網(wǎng)址的方法,直接在瀏覽器下面的搜索欄里輸入網(wǎng)址,然后點(diǎn)擊右邊的小地球圖標。
  由于之前已經(jīng)配置好了規則,涉及到正則表達式、替換和翻頁(yè)循環(huán),這里就不演示第二步的其他操作了。這個(gè)對于初學(xué)者來(lái)說(shuō)有點(diǎn)復雜,圖文并茂不好解釋?zhuān)灾苯舆M(jìn)入第三步設置執行計劃。
  勾選禁止瀏覽器加載圖片可以讓采集速度變快,因為有些網(wǎng)站在采集過(guò)程中會(huì )一直加載網(wǎng)頁(yè),導致采集速度過(guò)慢。
  采集
的電影數據非常詳細。
  然后就可以導出采集到的數據了,一般我都是導出為表格。注意:因為我用的是免費版,每次導出需要支付一定的積分,導出10條數據需要1積分,以此類(lèi)推。
  在優(yōu)采云
官網(wǎng)注冊賬號,然后每天簽到獲得30積分,完善以下部分合作網(wǎng)站賬號每個(gè)獲得1000積分,這樣還可以使用免費版導出數據。
  我這里也采集
了58同城和美團外賣(mài)的一些數據。限于篇幅,這里附上圖給大家看看,省略配置采集過(guò)程,操作類(lèi)似豆瓣網(wǎng)采集。
  同城58租房信息
  美團外賣(mài)門(mén)店信息
  將采集到的數據導出到表格中,然后將導出的表格導入到Micromap中,可以幫助我們更直觀(guān)的分析數據。微地圖會(huì )自動(dòng)將采集到的數據制作成餅圖、柱狀圖、詞云圖、比例情況等。
  你可能還有一個(gè)疑問(wèn),如果我辛辛苦苦配置的規則被關(guān)閉了,我是不是還要重新設置?這不是很麻煩嗎?以后我會(huì )采集
那個(gè)領(lǐng)域的資料。
  針對這種情況,我們可以找到之前創(chuàng )建的任務(wù),比如58同城出租的任務(wù),右鍵選擇導出任務(wù),即導出其規則。
  即使以后不在同一臺電腦上操作,將導出的規則文件導入其他電腦的優(yōu)采云
采集器也很方便。
  讓我向您介紹另一種方法。比如遇到一些我們不知道如何配置的采集規則,其實(shí)可以登錄左多官網(wǎng)下載一個(gè)采集規則來(lái)使用。
  比如下圖中的淘寶商品信息合集,下載后我們可以省略自己配置的過(guò)程。當然,還有一些收費規則,這里就不推薦了。
  對于優(yōu)采云
采集
器的學(xué)習,我現在也只是略知一二。還有很多高級功能有待發(fā)掘,各種精致的采集
需要不斷的學(xué)習和再學(xué)習。
  - 結尾 -
  延伸閱讀 查看全部

  內容分享:用戶(hù)日志采集
  大數據日志采集
  
  細細品味,細細品味,今天我們就來(lái)看看日漸流行的日志服務(wù)在數據中的作用。1、為什么要采集
日志?談到大數據,第一步總是數據采集
。只有有了原創(chuàng )
數據,才能進(jìn)行后續的存儲、處理、分析、應用和展示。數據采集
有兩個(gè)難點(diǎn),一是如何采集
數據(技術(shù)問(wèn)題),二是如何獲取非公司數據(政策問(wèn)題)。政策問(wèn)題更多的是依靠雙方的平等交流來(lái)為數據提供者帶來(lái)利益。與技術(shù)問(wèn)題相比,這個(gè)問(wèn)題更難得到有效和永久的解決。今天我們重點(diǎn)討論如何采集
數據的技術(shù)問(wèn)題。?二、如何采集
日志數據?一般來(lái)說(shuō),采集
數據有兩種技術(shù)方法。一種是直接從數據庫中提取已經(jīng)存儲在數據庫中的數據,另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。另一種是從用戶(hù)的使用行為中自行采集
數據。我們關(guān)注第二個(gè),如何采集
行為數據。如Html網(wǎng)頁(yè)、H5手機頁(yè)面,WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。WWW服務(wù)器會(huì )自動(dòng)將訪(fǎng)問(wèn)網(wǎng)頁(yè)的行為檢測探針連同真實(shí)網(wǎng)頁(yè)內容返回給客戶(hù)端PC和手機。一方面,我們可以進(jìn)行分流處理,將關(guān)鍵和非關(guān)鍵日志發(fā)送到不同的日志服務(wù)器。另一方面,對于同一類(lèi)型的日志,可以通過(guò)Hash等方式選擇日志服務(wù)器,盡量讓更多的日志服務(wù)分擔任務(wù)。
  
  276
  干貨教程:神技能-不用Python,采集98%網(wǎng)頁(yè)公開(kāi)數據(教程)
  滿(mǎn)足福利:
 ?。ü娞柣貜?09可獲得以下三本書(shū))
  《白手起家》簡(jiǎn)介
  《從零開(kāi)始運營(yíng)》進(jìn)階篇
  第39次《中國互聯(lián)網(wǎng)絡(luò )發(fā)展狀況統計報告》
  用于數據分析喵
  十年生死
  數據人,忙
  好日子的美景增添了我的凄涼
  早晚不安
  研究緊迫
  報告瘋子
  思緒在夜里閃過(guò)
  尋找筆記
  怕忘記
  多變的需求
  所以呢
  預計半夜加班
  聽(tīng)家人的話(huà)
  打鼾聲
  以上是一個(gè)資深數據分析師寫(xiě)的自嘲段子,卻是很多分析師的真實(shí)寫(xiě)照。在耀眼的職業(yè)光環(huán)下,數據分析師的成長(cháng)幾乎伴隨著(zhù)孤獨,他們是在高級雜務(wù)中鍛造的。
  很多做生意的小伙伴
  感覺(jué)吉吉也是假數據分析師,
  因為需要參考各種資料,
  支持決策,
  數據的嚴謹性,
  決定決策的成敗。
 ?。ㄒ矝Q定了老板會(huì )不會(huì )放你走)
  因此,運營(yíng)商往往需要借助爬蟲(chóng)來(lái)抓取自己想要的數據。比如他們想獲取一個(gè)電商網(wǎng)站的評論數據,往往需要寫(xiě)一段代碼,用python抓取相應的內容。
  說(shuō)到代碼,我好像看到了很多芭比娃娃絕望的樣子。
  你想學(xué)習Excel函數嗎?
  你想學(xué)習 SQL 嗎?
  你想學(xué)習 Python 嗎?
  你想學(xué)R嗎?
  看代碼頭疼怎么辦?
  沒(méi)有編程基礎怎么辦?
  所以,你不明白代碼,
  易于新手使用的工具
  看著(zhù)這個(gè)寶貝真誠的眼神
  你有沒(méi)有在黑暗中看到一絲光的興奮
  這并不奇怪
  
  驚不驚?
  1個(gè)
  什么是爬行動(dòng)物
  什么是爬行動(dòng)物?爬蟲(chóng)就是網(wǎng)絡(luò )爬蟲(chóng),一種自動(dòng)獲取網(wǎng)頁(yè)內容的程序。它是搜索引擎的重要組成部分,所以搜索引擎優(yōu)化很大程度上是針對爬蟲(chóng)進(jìn)行優(yōu)化的。
  簡(jiǎn)單來(lái)說(shuō),它可以采集
網(wǎng)頁(yè)上的數據信息。當然,國內外也有很多老牌的爬蟲(chóng)工具。使用難度和采集準確度不同,適用人群也有差異。
  今天要給大家介紹的這個(gè)工具叫做:優(yōu)采云
Collector。
  新手可以用它來(lái)處理一些大批量的數據,高手也可以擴展它更高級的功能。
  2個(gè)
  采集
資料有什么用
  網(wǎng)絡(luò )數據采集其實(shí)是一個(gè)可以影響各行各業(yè)的行業(yè)。從PC時(shí)代到現在,它的用途非常廣泛。
  這里介紹一些比較常見(jiàn)的用途,包括但不限于這些用途,所以如果要仔細羅列,也可以寫(xiě)成百上千。因為,同一份數據,不同的人有不同的用法。
  1.財務(wù)數據,如季報、年報、財報,包括自動(dòng)采集最新的每日凈值。
  2、各大新聞門(mén)戶(hù)網(wǎng)站實(shí)時(shí)監控,自動(dòng)更新上傳最新消息。
  3、監控競爭對手的最新信息,包括商品價(jià)格、庫存等。
  4. 監控各大社交網(wǎng)站和博客,自動(dòng)抓取對企業(yè)產(chǎn)品的相關(guān)評論。
  5、采集
最新最全的職位招聘信息。
  6、關(guān)注各大房地產(chǎn)相關(guān)網(wǎng)站,采集
最新的新房、二手房市場(chǎng)行情。
  7. 從各大汽車(chē)網(wǎng)站采集
特定的新車(chē)和二手車(chē)信息。
  8、發(fā)現并采集
潛在客戶(hù)信息。
  9. 從行業(yè)網(wǎng)站采集
產(chǎn)品目錄和產(chǎn)品信息。
  10.同步各大電商平臺的商品信息,做到在一個(gè)平臺發(fā)布,在其他平臺自動(dòng)更新。
  3個(gè)
  操作演示
  門(mén)戶(hù)網(wǎng)站:
  首先進(jìn)入官網(wǎng),下載并注冊
 ?。ㄊ堑?,是的,這是胡說(shuō)八道)
  網(wǎng)友提示:目前優(yōu)采云
采集器只支持Windows系列操作系統。下面我就通過(guò)采集
幾個(gè)網(wǎng)站的數據來(lái)給大家演示一下。
  進(jìn)入優(yōu)采云
采集器首頁(yè),可以看到一個(gè)搜索欄,這是SMART模式,可以不配置規則進(jìn)行采集。
  SMART模式暫時(shí)只支持采集帶有列表或表格信息的網(wǎng)頁(yè),例如:電商網(wǎng)站、一些生活服務(wù)類(lèi)網(wǎng)站的商品列表的商品信息等。
 ?。ū緢D為58廣州同城搜集的租房信息)
  但是,SMART模式的適用范圍較窄。讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  接下來(lái),讓我們談?wù)勂渌麅煞N模式。第一種向導模式適合新手用戶(hù)。在這種模式下,我們不需要配置任何規則。
  只需按照向導提示輸入相應信息或進(jìn)行相應操作即可實(shí)現簡(jiǎn)單的數據采集功能。
  但是功能比較有限。僅支持單網(wǎng)頁(yè)采集、列表或表格采集、列表和詳情采集、URL列表采集。這里給大家演示一下,點(diǎn)擊開(kāi)始采集
。
  這里我選擇列表并采集
詳細信息給大家演示一下,比較直觀(guān)。
  給任務(wù)起個(gè)任務(wù)名并創(chuàng )建一個(gè)任務(wù)組,將要采集的網(wǎng)址復制粘貼到下方的采集地址欄中。
  
  選擇打開(kāi)頁(yè)面中的第一家和最后一家店鋪,采集器會(huì )自動(dòng)采集它們之間的所有店鋪,如紅框所示。
  向導模式?jīng)]有先設置翻頁(yè),然后我們直接采集字段,就是你進(jìn)入某個(gè)店鋪后要采集的數據,比如店名或者地址。
  采集完成后點(diǎn)擊下一步,這里選擇開(kāi)始單機采集,因為我用的是免費版,所以沒(méi)有云采集功能,采集效率會(huì )比較慢。
  如下圖所示,我們采集到的數據會(huì )以表格的形式展示出來(lái)。采集速度一開(kāi)始會(huì )有點(diǎn)慢,之后會(huì )穩定在一個(gè)比較高的速度,主要是受網(wǎng)速的影響。
  二是進(jìn)階模式。有一定基礎的朋友可以使用這個(gè)模式。需要自己配置規則,就是采集的范圍,是否需要翻頁(yè)。
  我就用豆瓣網(wǎng)的電影合集給大家演示一下。大家都知道豆瓣的評分是比較靠譜的,所以這樣的數據對于我們的分析非常有用,比如建立類(lèi)似的網(wǎng)站。
  高級模式有兩個(gè)進(jìn)入途徑,第一個(gè)是右側高級模式中的“開(kāi)始采集
”按鈕框,另一個(gè)是直接點(diǎn)擊左下角的快速啟動(dòng)(適合熟練者)。
  任務(wù)名稱(chēng)和任務(wù)組可以參照向導方式在這里填寫(xiě)。這里先說(shuō)一下設計流程。這是整個(gè)優(yōu)采云
采集
器中比較重要的一個(gè)部分,因為它會(huì )影響到后續采集
的成功與否。
  按照第一步,將左上角的網(wǎng)頁(yè)框拖到豎線(xiàn)上,然后按第二步,在出現的頁(yè)面地址欄中輸入要采集的網(wǎng)址。還有一種采集
網(wǎng)址的方法,直接在瀏覽器下面的搜索欄里輸入網(wǎng)址,然后點(diǎn)擊右邊的小地球圖標。
  由于之前已經(jīng)配置好了規則,涉及到正則表達式、替換和翻頁(yè)循環(huán),這里就不演示第二步的其他操作了。這個(gè)對于初學(xué)者來(lái)說(shuō)有點(diǎn)復雜,圖文并茂不好解釋?zhuān)灾苯舆M(jìn)入第三步設置執行計劃。
  勾選禁止瀏覽器加載圖片可以讓采集速度變快,因為有些網(wǎng)站在采集過(guò)程中會(huì )一直加載網(wǎng)頁(yè),導致采集速度過(guò)慢。
  采集
的電影數據非常詳細。
  然后就可以導出采集到的數據了,一般我都是導出為表格。注意:因為我用的是免費版,每次導出需要支付一定的積分,導出10條數據需要1積分,以此類(lèi)推。
  在優(yōu)采云
官網(wǎng)注冊賬號,然后每天簽到獲得30積分,完善以下部分合作網(wǎng)站賬號每個(gè)獲得1000積分,這樣還可以使用免費版導出數據。
  我這里也采集
了58同城和美團外賣(mài)的一些數據。限于篇幅,這里附上圖給大家看看,省略配置采集過(guò)程,操作類(lèi)似豆瓣網(wǎng)采集。
  同城58租房信息
  美團外賣(mài)門(mén)店信息
  將采集到的數據導出到表格中,然后將導出的表格導入到Micromap中,可以幫助我們更直觀(guān)的分析數據。微地圖會(huì )自動(dòng)將采集到的數據制作成餅圖、柱狀圖、詞云圖、比例情況等。
  你可能還有一個(gè)疑問(wèn),如果我辛辛苦苦配置的規則被關(guān)閉了,我是不是還要重新設置?這不是很麻煩嗎?以后我會(huì )采集
那個(gè)領(lǐng)域的資料。
  針對這種情況,我們可以找到之前創(chuàng )建的任務(wù),比如58同城出租的任務(wù),右鍵選擇導出任務(wù),即導出其規則。
  即使以后不在同一臺電腦上操作,將導出的規則文件導入其他電腦的優(yōu)采云
采集器也很方便。
  讓我向您介紹另一種方法。比如遇到一些我們不知道如何配置的采集規則,其實(shí)可以登錄左多官網(wǎng)下載一個(gè)采集規則來(lái)使用。
  比如下圖中的淘寶商品信息合集,下載后我們可以省略自己配置的過(guò)程。當然,還有一些收費規則,這里就不推薦了。
  對于優(yōu)采云
采集
器的學(xué)習,我現在也只是略知一二。還有很多高級功能有待發(fā)掘,各種精致的采集
需要不斷的學(xué)習和再學(xué)習。
  - 結尾 -
  延伸閱讀

解決方案:從0到1搭建高性能實(shí)時(shí)日志系統

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-11-18 08:13 ? 來(lái)自相關(guān)話(huà)題

  解決方案:從0到1搭建高性能實(shí)時(shí)日志系統
  建筑師(JiaGouX) 我們都是建筑師!
  共創(chuàng )未來(lái),你會(huì )來(lái)嗎?
  因公眾號推送規則變更,請第一時(shí)間點(diǎn)擊“在看”加“星”獲取精彩技術(shù)分享
  你是否經(jīng)常遇到需要在線(xiàn)查看日志卻又長(cháng)時(shí)間聯(lián)系不到用戶(hù)上報日志的情況?或者你是否經(jīng)常陷入存儲空間不足導致日志無(wú)法寫(xiě)入的尷尬?本文介紹美團如何從0到1搭建高性能的終端實(shí)時(shí)日志系統,徹底解決了日志丟失和寫(xiě)滿(mǎn)的問(wèn)題。希望能給您帶來(lái)一些幫助和啟發(fā)。
  2 設計實(shí)現
  3 穩定性保證
  4 成就
  5 未來(lái)規劃
  1 背景 1.1 Logan簡(jiǎn)介 Logan是美團統一的終端日志服務(wù)。已支持移動(dòng)APP、Web、小程序、IoT等多種環(huán)境,具備日志采集、存儲、上傳、查詢(xún)、分析等能力。幫助用戶(hù)定位研發(fā)問(wèn)題,提升排查效率。同時(shí),Logan也是業(yè)界較早開(kāi)源的大型前端日志系統,具有寫(xiě)入性能高、安全性高、日志防丟失等優(yōu)點(diǎn)。1.2 登錄工作流程 為了方便讀者更好的理解登錄系統的工作原理,下圖是一個(gè)簡(jiǎn)化的登錄系統工作流程。主要分為以下幾個(gè)部分:
  圖1 登錄系統工作流程圖 1.3 為什么需要實(shí)時(shí)日志?前文提到,這種“本地存儲+主動(dòng)上報”的模式雖然解決了大前端場(chǎng)景下基本的日志使用需求,但隨著(zhù)業(yè)務(wù)復雜度的不斷提升,用戶(hù)對日志的要求也越來(lái)越高。當前 Logan 架構存在的問(wèn)題也越來(lái)越突出,主要體現在以下幾個(gè)方面: 部分場(chǎng)景下日志的上報受限:因為用戶(hù)在 Web 和小程序上的一般使用場(chǎng)景是離開(kāi)后使用,當在線(xiàn)出現問(wèn)題時(shí),聯(lián)系用戶(hù)主動(dòng)上報日志。整個(gè)處理周期長(cháng),可能會(huì )錯過(guò)最佳故障排除時(shí)機。缺乏實(shí)時(shí)分析和告警能力:目前,缺乏實(shí)時(shí)分析和告警能力。用戶(hù)多次提到,他們想監控線(xiàn)上的異常日志,當出現符合規則的異常日志時(shí),接收告警信息。缺乏全鏈路跟蹤能力:目前多端日志分散在各個(gè)系統中。研發(fā)人員在定位問(wèn)題時(shí)需要手動(dòng)關(guān)聯(lián)日志,操作起來(lái)非常不方便。美團缺乏通用的全鏈路跟蹤解決方案。針對以上痛點(diǎn),我們提出了Logan實(shí)時(shí)日志的構建,旨在提供一個(gè)統一的、高性能的實(shí)時(shí)日志服務(wù),解決美團不同業(yè)務(wù)系統想要登錄云端的需求。這個(gè)階段。1.4 什么是Logan實(shí)時(shí)日志?Logan實(shí)時(shí)日志是一個(gè)服務(wù)于手機App的實(shí)時(shí)日志解決方案,Web、小程序、IoT等終端場(chǎng)景。旨在提供高擴展性、高性能、高可靠性的實(shí)時(shí)日志服務(wù),包括日志采集、上傳、處理、消費、投遞、查詢(xún)和分析能力。
  圖2 洛根實(shí)時(shí)日志產(chǎn)品功能 圖2 設計與實(shí)現 2.1 總體架構
  
  圖3 洛根實(shí)時(shí)日志的整體架構如上圖所示。整體架構主要分為五個(gè)部分,分別是: 2.2 采集通用采集端架構,解決跨平臺復用采集Device SDK用于設備端日志采集和需求在各種終端環(huán)境中實(shí)施。但由于終端和平臺眾多,技術(shù)棧和運行環(huán)境不一致,多終端的開(kāi)發(fā)和維護成本會(huì )比較高。因此,我們設計了一套核心邏輯復用的通用采集端架構,具體的平臺相關(guān)代碼單獨適配。我們推出了微信、MMP、Web、MRN終端,邏輯層代碼已經(jīng)完全復用。采集
  圖4 采集端SDK架構圖 關(guān)鍵模塊介紹:磁盤(pán)緩存+報表恢復防止日志丟失 為了方便讀者更好的理解端日志采集流程,下面將介紹采集詳細結束流程設計。采集端初始化API開(kāi)始調用時(shí),首先創(chuàng )建Logger、Encryptor、Storage等實(shí)例對象,并異步拉取環(huán)境配置文件。初始化完成后,首先檢查是否有放置成功,但報告失敗的日志,如果有,則立即恢復上傳過(guò)程。正常調用寫(xiě)日志接口時(shí),將原創(chuàng )日志加密后加入當前上報組。當報告事件(時(shí)間、條目數、導航等)發(fā)生時(shí) )被觸發(fā),當前上報組的所有日志加入上報隊列并上傳。采集終端詳細流程圖如下:
  圖5 采集SDK流程圖 2.3 數據接入層 對于實(shí)時(shí)日志系統,接入層需要滿(mǎn)足以下要求: (1) 支持公網(wǎng)域名上報;(2) 支持高并發(fā)處理;(3) 實(shí)時(shí)性高,延時(shí)在分鐘級;(4) 支持向Kafka消息隊列投遞數據。經(jīng)過(guò)對比,美團統一的日志采集通道都滿(mǎn)足以上需求,所以我們選擇了統一的日志采集通道作為接入層。采集端SDK通過(guò)獨立的公共域名上報日志后,采集通道將日志數據匯總后投遞到指定的Kafka消息隊列。如果讀者公司沒(méi)有類(lèi)似的日志采集渠道,
  圖6 接入層流程圖 2.4 數據處理層 在數據處理框架的技術(shù)選擇上,我們考慮了傳統架構(Java應用)、Storm架構、Flink架構三種方案。尺寸對比數據如下:
  表1 技術(shù)選型對比表 總的來(lái)說(shuō),傳統架構雖然成熟度和靈活性都比較好,但是在擴展性、容錯性、性能等方面不能滿(mǎn)足系統的要求,而Flink架構和Storm架構則相對優(yōu)秀。擴展性和容錯性,但是Flink架構在延遲和吞吐量方面表現更好,所以我們最終選擇了Flink架構作為數據處理框架。Flink:業(yè)界領(lǐng)先的流式計算引擎,具有高吞吐、低延遲、高可靠、精準計算等特點(diǎn)。它對事件窗口的支持非常好,被業(yè)界許多公司認為是首選的流計算引擎。在日志處理流程的設計中,日志數據經(jīng)過(guò)接入層處理后投遞到summary topic,再通過(guò)Flink job的邏輯處理分發(fā)到下游。處理流程如下圖所示:
  圖7 日志處理層流程圖 匯總的日志數據處理和分發(fā)依賴(lài)于實(shí)時(shí)計算平臺的實(shí)時(shí)運算能力。底層使用Flink數據處理引擎,主要負責日志數據的解析,日志內容的解密,拆分到下游。元數據解析:通過(guò)實(shí)時(shí)運算能力將原創(chuàng )日志數據解析為JSON對象數據。內容解密:對加密后的內容進(jìn)行解密,其中使用非對稱(chēng)協(xié)商計算出對稱(chēng)加密密鑰,然后進(jìn)行解密。服務(wù)維度拆分:通過(guò)topic字段將日志分發(fā)到各個(gè)業(yè)務(wù)系統所屬的topic中,實(shí)現業(yè)務(wù)日志的相互隔離。數據自定義處理:根據用戶(hù)自定義的處理語(yǔ)法模板,實(shí)時(shí)消費處理從服務(wù)主題到自定義主題的數據。2.5 數據消費層
  對于大多數用戶(hù)來(lái)說(shuō),Logan實(shí)時(shí)日志提供的日志采集、處理、檢索能力可以滿(mǎn)足他們的大部分需求。但在與用戶(hù)交流的過(guò)程中,我們發(fā)現還有一些更高層次的需求,比如指標監控、前后端鏈路對接、離線(xiàn)數據計算等。因此,我們將Logan標準化的日志統一下發(fā)到Kafka流處理平臺,并提供一些通用的數據轉換能力,方便用戶(hù)按需接入不同的第三方系統。數據消費層設計如下圖所示:
  圖 8 數據消費層設計圖 數據消費層的一些典型應用場(chǎng)景: 網(wǎng)絡(luò )全鏈路跟蹤:現階段前后端日志可能分布在不同的系統中,前端日志系統主要記錄代碼級日志、端到端日志等,后端日志系統記錄鏈接關(guān)系、服務(wù)耗時(shí)等信息。通過(guò)羅根實(shí)時(shí)日志開(kāi)放的數據消費能力,用戶(hù)可以根據自己的需求拼接多端日志,實(shí)現網(wǎng)絡(luò )全鏈路跟蹤。指標聚合統計&amp;告警:實(shí)時(shí)日志也是一種實(shí)時(shí)數據流,可以作為指標數據上報的載體。如果日志數據接入數據統計平臺,可實(shí)現指標監測和報警。離線(xiàn)數據分析:如果某些需求場(chǎng)景需要對數據進(jìn)行長(cháng)期存儲或離線(xiàn)分析,可以將數據導入Hive來(lái)實(shí)現。2.6 日志平臺
  
  日志平臺的核心功能是為用戶(hù)提供日志檢索支持。日志平臺提供用戶(hù)ID、自定義標簽、關(guān)鍵字等多種檢索過(guò)濾方式。在底層日志存儲架構的選擇上,目前業(yè)界普遍采用Elasticsearch??紤]到計費和運維成本的關(guān)系,美團已經(jīng)有了統一的框架可以使用,所以我們也選擇了Elasticsearch架構。同時(shí),我們也通過(guò)一個(gè)單獨的接口層來(lái)支持其他的存儲引擎。日志查詢(xún)流程如下:
  圖9 日志查詢(xún)流程設計圖 Elasticsearch:是分布式開(kāi)源搜索分析引擎,具有訪(fǎng)問(wèn)成本低、擴展性高、近實(shí)時(shí)等優(yōu)點(diǎn),更適合大數據的全文檢索服務(wù)3 穩定性保障 3.1 核心監控 為了衡量終端實(shí)時(shí)日志系統的可用性,我們制定了以下核心SLA指標:
  表2 核心SLA指標表 除了核心指標監控,我們還搭建了全程監控面板,涵蓋了子端上報成功率、域名可用性、域名QPS、作業(yè)吞吐量等重要觀(guān)察指標,以及聚合記錄的平均數量。針對上報成功率、域名QPS、作業(yè)吞吐量等,配置一體化告警。當線(xiàn)上出現異常時(shí),第一時(shí)間發(fā)現并處理。3.2 藍綠發(fā)布
  實(shí)時(shí)日志依賴(lài)于實(shí)時(shí)作業(yè)的處理和計算能力,但是實(shí)時(shí)作業(yè)的發(fā)布和部署目前還不能無(wú)縫對接,中間可能會(huì )出現真空。重啟作業(yè)時(shí),需要先停止原來(lái)的作業(yè),然后再啟動(dòng)新的作業(yè)。如果遇到代碼故障或者系統資源不足,就會(huì )導致作業(yè)啟動(dòng)失敗,直接面臨消息積壓嚴重,數據延遲增加的問(wèn)題,這是實(shí)時(shí)日志系統無(wú)法承受的。
  Blue Green Deployment 是一種平滑過(guò)渡的發(fā)布模式。在藍綠發(fā)布模型中,應用程序必須首先被分成兩個(gè)相等的組,藍色和綠色。藍色組發(fā)布新產(chǎn)品代碼并引入一點(diǎn)線(xiàn)上流量,綠色組繼續運行舊產(chǎn)品代碼。當新產(chǎn)品代碼跑上線(xiàn),觀(guān)察沒(méi)有問(wèn)題時(shí),逐漸引入更多的線(xiàn)上流量,直到所有流量都接入藍組的新產(chǎn)品。因此,藍綠發(fā)布可以保證整個(gè)系統的穩定性,可以在產(chǎn)品發(fā)布的早期發(fā)現問(wèn)題并解決問(wèn)題,保證其影響可控。
  目前,美團對于實(shí)時(shí)運營(yíng)有不同的藍綠部署方案。由于洛根實(shí)時(shí)日志訪(fǎng)問(wèn)業(yè)務(wù)系統較多,數據量較大,經(jīng)過(guò)綜合考慮,我們決定實(shí)施適合當前系統的藍綠方案。部署方案。為了保證系統的穩定性,在作業(yè)運行過(guò)程中又啟動(dòng)了一個(gè)相同的作業(yè)。當新作業(yè)運行沒(méi)有問(wèn)題時(shí),舊作業(yè)被切換。藍綠發(fā)布流程圖如下:
  圖10 藍綠發(fā)布流程圖 使用藍綠部署后,徹底解決了因資源不足或參數不正確導致上線(xiàn)失敗的問(wèn)題,平均部署切換時(shí)間保持在1分鐘以?xún)?,基本避免了因資源不足或參數錯誤導致的日志消耗釋放延遲問(wèn)題。4 實(shí)施結果 洛根實(shí)時(shí)日志在建設初期就受到了各業(yè)務(wù)的廣泛關(guān)注。程序、優(yōu)選商戶(hù)、餐飲SaaS等大體量業(yè)務(wù)。以下是業(yè)務(wù)系統接入的一些典型使用場(chǎng)景,供大家參考: 核心鏈路還原:道家C端小程序使用Logan實(shí)時(shí)記錄程序核心鏈路的關(guān)鍵日志和異常日志。當網(wǎng)上有客戶(hù)投訴出現問(wèn)題時(shí),可以查看實(shí)時(shí)日志,第一時(shí)間定位問(wèn)題。項目上線(xiàn)后,客戶(hù)投訴的平均定位時(shí)間從之前的10分鐘縮短到3分鐘以?xún)?,排查效率顯著(zhù)提升。內測階段排查問(wèn)題:某企業(yè)平臺前端項目,由于2.0改版后發(fā)生了較大變化,所以在內測階段使用Logan實(shí)時(shí)日志,增加更多調試日志,方便定位在線(xiàn)問(wèn)題。項目上線(xiàn)后,不僅為用戶(hù)每次排錯上報日志節省了10-15分鐘的時(shí)間,而且杜絕了因存儲空間不足而無(wú)法獲取用戶(hù)日志的情況。日志數據分析:美團到店團隊利用Logan實(shí)時(shí)日志分析前后端交互過(guò)程中的請求頭、請求參數、響應體等數據是否符合規范規范。經(jīng)過(guò)一個(gè)多月的試運行,一期版本上線(xiàn)后,覆蓋300+前端頁(yè)面,500+前端界面,共發(fā)現1000+規范問(wèn)題。5 未來(lái)規劃 龍光實(shí)時(shí)日志經(jīng)過(guò)半年的建設和推廣,系統基本能力已經(jīng)完成,可以滿(mǎn)足用戶(hù)對實(shí)時(shí)日志的基本需求。但不支持日志數據的深度加工清洗、日志統計、告警等高層次需求。所以,
  如果喜歡本文,請點(diǎn)擊右上角分享文章到朋友圈
  想了解學(xué)習的技術(shù)要點(diǎn),歡迎給若飛留言安排分享
  ·結尾·
  <p style="outline: 0px;max-width: 100%;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;">相關(guān)閱讀:一張圖看懂微服務(wù)架構路線(xiàn)<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />基于Spring Cloud的微服務(wù)架構分析微服務(wù)等于Spring Cloud?了解微服務(wù)架構和框架<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />如何構建基于 DDD 領(lǐng)域驅動(dòng)的微服務(wù)?
  小團隊真的適合引入SpringCloud微服務(wù)嗎?<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  DDD興起的原因以及與微服務(wù)的關(guān)系
  微服務(wù)之間的最佳調用方式<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  微服務(wù)架構設計總結實(shí)踐<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  基于 Kubernetes 的微服務(wù)項目設計與實(shí)現
  微服務(wù)架構-設計總結
  為什么微服務(wù)一定要有網(wǎng)關(guān)?
  主流微服務(wù)全鏈路監控系統之戰<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)架構實(shí)施原理詳解<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)的簡(jiǎn)介和技術(shù)棧微服務(wù)場(chǎng)景下的數據一致性解決方案設計一個(gè)容錯的微服務(wù)架構</p>
  解決方案:WPJAM Basic 詳細介紹:一鍵搞定 WordPress 功能屏蔽和增強優(yōu)
  WPJAM Basic插件的“優(yōu)化設置”是WPJAM Basic的初始功能??梢哉f(shuō)是我愛(ài)水煮魚(yú)博客根據多年使用WordPress的經(jīng)驗整理出來(lái)的優(yōu)化插件。
  以上是該功能的完整視頻介紹。當時(shí)的想法是為各種不用的功能,或者可能影響性能的功能提供開(kāi)關(guān),讓你只需要一鍵即可完成WordPress定制開(kāi)發(fā)。經(jīng)過(guò)幾年的發(fā)展,我的優(yōu)化設置的功能分為功能屏蔽和增強優(yōu)化兩部分:
  功能掩蔽
  從上圖可以清楚的看出,功能屏蔽就是讓你屏蔽掉WordPress中一些不用的功能,也給出了一些簡(jiǎn)單的理由以及哪些場(chǎng)景可以屏蔽這個(gè)功能。當前支持阻止以下功能:
  1.
  文章 改版時(shí)會(huì )往Posts表中插入多條歷史數據,導致Posts表冗余。建議屏蔽文章修改功能,提高數據庫效率。
  2.
  Trackbacks協(xié)議被濫用,會(huì )在博客上產(chǎn)生大量垃圾信息。建議完全關(guān)閉 Trackbacks。
  3.
  WordPress使用圖片渲染Emoji表情文字,但是渲染后的圖片經(jīng)常打不開(kāi),現在主流瀏覽器已經(jīng)支持Emoji文字,建議屏蔽Emoji功能。
  4.
  WordPress會(huì )將一些純文本字符轉換成格式化的HTML實(shí)體,但是這些轉換不適合中文環(huán)境,所以我們最好去掉這些字符轉換。
  5.
  WordPress feeds主要用于閱讀器,但現在使用閱讀器的用戶(hù)越來(lái)越少,feeds更多用于采集,造成不必要的資源消耗,建議關(guān)閉本站feeds。
  6.
  管理員每六個(gè)月重新登錄一次后,就會(huì )看到站點(diǎn)管理員的郵箱驗證界面。如果您認為沒(méi)有必要,可以屏蔽郵箱驗證。
  7.
  GDPR 是歐洲的通用數據保護條例。為了適應這個(gè)規律,WordPress在后臺設置了很多隱私功能。如果您只在中國運營(yíng)博客,您可以在后臺刪除與隱私相關(guān)的頁(yè)面。
  8.
  WordPress更新服務(wù)器位于國外,經(jīng)常打不開(kāi)。建議關(guān)閉WordPress后臺和自動(dòng)更新功能,手動(dòng)或通過(guò)SSH更新WordPress。
  
  9.
  Auto Embeds 協(xié)議允許您插入視頻網(wǎng)站 或照片分享網(wǎng)站 的鏈接,鏈接中收錄的視頻或圖片將自動(dòng)顯示。不過(guò)這個(gè)功能支持的網(wǎng)站都是國外的。建議禁用自動(dòng)嵌入功能以加快頁(yè)面解析。
  10.
  文章Embed 功能允許您將 WordPress文章 嵌入本站點(diǎn)或 WordPress 站點(diǎn)中的其他站點(diǎn)。如果不需要,可以屏蔽文章Embed 功能。
  11.
  WordPress 5.0發(fā)布帶來(lái)的Gutenberg編輯器很酷,但是很多人不習慣,還是喜歡原來(lái)簡(jiǎn)單的編輯器,可以屏蔽Gutenberg。
  12.
  XML-RPC協(xié)議用于在客戶(hù)端發(fā)布文章,如果只在后臺發(fā)布,可以關(guān)閉XML-RPC功能。
  增強優(yōu)化
  加速優(yōu)化是清理WordPress產(chǎn)生的無(wú)用代碼,加速優(yōu)化一些WordPress資源。目前,它具有以下功能:
  Google 字體非常易于使用和方便。很多WordPress主題也使用谷歌字體,但是谷歌在線(xiàn)字體在國內的速度不是很快,有時(shí)甚至打不開(kāi)。這就是為什么 WordPress 在中國有時(shí)速度不夠快的原因。
  WPJAM Basic允許您選擇第三方Google Font字體加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  Gravatar部分CDN服務(wù)器在國內訪(fǎng)問(wèn)困難,存在無(wú)法顯示頭像的問(wèn)題,而且WordPress后臺或評論頁(yè)面有時(shí)會(huì )默認加載Gravatar頭像圖片,可能會(huì )導致頁(yè)面卡頓。
  WPJAM Basic允許您選擇第三方Gravatar圖片加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  WPJAM Basic允許您直接在后臺設置Frame嵌入,避免點(diǎn)擊劫持,增強網(wǎng)站的安全性:
  詳細介紹:
  
  刪除類(lèi)別類(lèi)別和 WordPress 頁(yè)面的 URL。這兩個(gè)頁(yè)面的頁(yè)面重寫(xiě)規則是否相同?那么我們可以直接使用頁(yè)面重寫(xiě)規則來(lái)處理。
  WPJAM Basic 還添加了一個(gè)附加選項。如果博客自定義了其他自定義分類(lèi)模式,您可以選擇將此功能應用于哪種分類(lèi)模式:
  詳細介紹:
  如果長(cháng)時(shí)間上傳的圖片名稱(chēng)是1.jpg,那么上傳一張圖片就會(huì )導致數據庫執行幾十到上百條SQL查詢(xún)。上傳的時(shí)候要改一下圖片的名字,圖片的名字要多加一個(gè)時(shí)間戳,這樣幾乎可以保證圖片名字不能重復:
  詳細介紹:
  WordPress會(huì )在頁(yè)面頭部輸出版權信息和其他服務(wù)發(fā)現代碼。版權信息代碼會(huì )讓用戶(hù)知道你當前運行的 WordPress 版本,服務(wù)發(fā)現代碼會(huì )告訴用戶(hù)你的博客支持哪些服務(wù)。
  這些代碼會(huì )在前臺造成一些安全問(wèn)題,最好一鍵刪除。
  詳細介紹:
  一般不建議在網(wǎng)站前臺顯示W(wǎng)ordPress工具欄,可以一鍵移除。
  詳細介紹:
  如果熟悉WordPress的用戶(hù),就會(huì )知道如何寫(xiě)出正確的WordPress模式,所以從效率的角度來(lái)說(shuō),沒(méi)有必要在這個(gè)轉換上浪費時(shí)間,也可以一鍵移除。
  詳細介紹:
  在很多WordPress后臺頁(yè)面的右上角,比如后臺文章列表頁(yè)面,都會(huì )有“顯示選項”和“幫助”兩個(gè)按鈕。一個(gè)用于顯示和設置本頁(yè)面的選項,另一個(gè)用于獲取頁(yè)面的幫助信息:
  首先,這兩個(gè)按鈕在右上角。很多用戶(hù)沒(méi)有特別注意,以至于忘記操作,幫助文檔對用戶(hù)的幫助也不是很大。建議兩者都去掉。
  詳細介紹:
  最后,如果大家對使用WPJAM Basic有什么疑問(wèn),或者有什么功能需求,歡迎給我留言。
  點(diǎn)擊卡片關(guān)注“WordPress Jam”
  每天分享 WordPress 技巧 查看全部

  解決方案:從0到1搭建高性能實(shí)時(shí)日志系統
  建筑師(JiaGouX) 我們都是建筑師!
  共創(chuàng )未來(lái),你會(huì )來(lái)嗎?
  因公眾號推送規則變更,請第一時(shí)間點(diǎn)擊“在看”加“星”獲取精彩技術(shù)分享
  你是否經(jīng)常遇到需要在線(xiàn)查看日志卻又長(cháng)時(shí)間聯(lián)系不到用戶(hù)上報日志的情況?或者你是否經(jīng)常陷入存儲空間不足導致日志無(wú)法寫(xiě)入的尷尬?本文介紹美團如何從0到1搭建高性能的終端實(shí)時(shí)日志系統,徹底解決了日志丟失和寫(xiě)滿(mǎn)的問(wèn)題。希望能給您帶來(lái)一些幫助和啟發(fā)。
  2 設計實(shí)現
  3 穩定性保證
  4 成就
  5 未來(lái)規劃
  1 背景 1.1 Logan簡(jiǎn)介 Logan是美團統一的終端日志服務(wù)。已支持移動(dòng)APP、Web、小程序、IoT等多種環(huán)境,具備日志采集、存儲、上傳、查詢(xún)、分析等能力。幫助用戶(hù)定位研發(fā)問(wèn)題,提升排查效率。同時(shí),Logan也是業(yè)界較早開(kāi)源的大型前端日志系統,具有寫(xiě)入性能高、安全性高、日志防丟失等優(yōu)點(diǎn)。1.2 登錄工作流程 為了方便讀者更好的理解登錄系統的工作原理,下圖是一個(gè)簡(jiǎn)化的登錄系統工作流程。主要分為以下幾個(gè)部分:
  圖1 登錄系統工作流程圖 1.3 為什么需要實(shí)時(shí)日志?前文提到,這種“本地存儲+主動(dòng)上報”的模式雖然解決了大前端場(chǎng)景下基本的日志使用需求,但隨著(zhù)業(yè)務(wù)復雜度的不斷提升,用戶(hù)對日志的要求也越來(lái)越高。當前 Logan 架構存在的問(wèn)題也越來(lái)越突出,主要體現在以下幾個(gè)方面: 部分場(chǎng)景下日志的上報受限:因為用戶(hù)在 Web 和小程序上的一般使用場(chǎng)景是離開(kāi)后使用,當在線(xiàn)出現問(wèn)題時(shí),聯(lián)系用戶(hù)主動(dòng)上報日志。整個(gè)處理周期長(cháng),可能會(huì )錯過(guò)最佳故障排除時(shí)機。缺乏實(shí)時(shí)分析和告警能力:目前,缺乏實(shí)時(shí)分析和告警能力。用戶(hù)多次提到,他們想監控線(xiàn)上的異常日志,當出現符合規則的異常日志時(shí),接收告警信息。缺乏全鏈路跟蹤能力:目前多端日志分散在各個(gè)系統中。研發(fā)人員在定位問(wèn)題時(shí)需要手動(dòng)關(guān)聯(lián)日志,操作起來(lái)非常不方便。美團缺乏通用的全鏈路跟蹤解決方案。針對以上痛點(diǎn),我們提出了Logan實(shí)時(shí)日志的構建,旨在提供一個(gè)統一的、高性能的實(shí)時(shí)日志服務(wù),解決美團不同業(yè)務(wù)系統想要登錄云端的需求。這個(gè)階段。1.4 什么是Logan實(shí)時(shí)日志?Logan實(shí)時(shí)日志是一個(gè)服務(wù)于手機App的實(shí)時(shí)日志解決方案,Web、小程序、IoT等終端場(chǎng)景。旨在提供高擴展性、高性能、高可靠性的實(shí)時(shí)日志服務(wù),包括日志采集、上傳、處理、消費、投遞、查詢(xún)和分析能力。
  圖2 洛根實(shí)時(shí)日志產(chǎn)品功能 圖2 設計與實(shí)現 2.1 總體架構
  
  圖3 洛根實(shí)時(shí)日志的整體架構如上圖所示。整體架構主要分為五個(gè)部分,分別是: 2.2 采集通用采集端架構,解決跨平臺復用采集Device SDK用于設備端日志采集和需求在各種終端環(huán)境中實(shí)施。但由于終端和平臺眾多,技術(shù)棧和運行環(huán)境不一致,多終端的開(kāi)發(fā)和維護成本會(huì )比較高。因此,我們設計了一套核心邏輯復用的通用采集端架構,具體的平臺相關(guān)代碼單獨適配。我們推出了微信、MMP、Web、MRN終端,邏輯層代碼已經(jīng)完全復用。采集
  圖4 采集端SDK架構圖 關(guān)鍵模塊介紹:磁盤(pán)緩存+報表恢復防止日志丟失 為了方便讀者更好的理解端日志采集流程,下面將介紹采集詳細結束流程設計。采集端初始化API開(kāi)始調用時(shí),首先創(chuàng )建Logger、Encryptor、Storage等實(shí)例對象,并異步拉取環(huán)境配置文件。初始化完成后,首先檢查是否有放置成功,但報告失敗的日志,如果有,則立即恢復上傳過(guò)程。正常調用寫(xiě)日志接口時(shí),將原創(chuàng )日志加密后加入當前上報組。當報告事件(時(shí)間、條目數、導航等)發(fā)生時(shí) )被觸發(fā),當前上報組的所有日志加入上報隊列并上傳。采集終端詳細流程圖如下:
  圖5 采集SDK流程圖 2.3 數據接入層 對于實(shí)時(shí)日志系統,接入層需要滿(mǎn)足以下要求: (1) 支持公網(wǎng)域名上報;(2) 支持高并發(fā)處理;(3) 實(shí)時(shí)性高,延時(shí)在分鐘級;(4) 支持向Kafka消息隊列投遞數據。經(jīng)過(guò)對比,美團統一的日志采集通道都滿(mǎn)足以上需求,所以我們選擇了統一的日志采集通道作為接入層。采集端SDK通過(guò)獨立的公共域名上報日志后,采集通道將日志數據匯總后投遞到指定的Kafka消息隊列。如果讀者公司沒(méi)有類(lèi)似的日志采集渠道,
  圖6 接入層流程圖 2.4 數據處理層 在數據處理框架的技術(shù)選擇上,我們考慮了傳統架構(Java應用)、Storm架構、Flink架構三種方案。尺寸對比數據如下:
  表1 技術(shù)選型對比表 總的來(lái)說(shuō),傳統架構雖然成熟度和靈活性都比較好,但是在擴展性、容錯性、性能等方面不能滿(mǎn)足系統的要求,而Flink架構和Storm架構則相對優(yōu)秀。擴展性和容錯性,但是Flink架構在延遲和吞吐量方面表現更好,所以我們最終選擇了Flink架構作為數據處理框架。Flink:業(yè)界領(lǐng)先的流式計算引擎,具有高吞吐、低延遲、高可靠、精準計算等特點(diǎn)。它對事件窗口的支持非常好,被業(yè)界許多公司認為是首選的流計算引擎。在日志處理流程的設計中,日志數據經(jīng)過(guò)接入層處理后投遞到summary topic,再通過(guò)Flink job的邏輯處理分發(fā)到下游。處理流程如下圖所示:
  圖7 日志處理層流程圖 匯總的日志數據處理和分發(fā)依賴(lài)于實(shí)時(shí)計算平臺的實(shí)時(shí)運算能力。底層使用Flink數據處理引擎,主要負責日志數據的解析,日志內容的解密,拆分到下游。元數據解析:通過(guò)實(shí)時(shí)運算能力將原創(chuàng )日志數據解析為JSON對象數據。內容解密:對加密后的內容進(jìn)行解密,其中使用非對稱(chēng)協(xié)商計算出對稱(chēng)加密密鑰,然后進(jìn)行解密。服務(wù)維度拆分:通過(guò)topic字段將日志分發(fā)到各個(gè)業(yè)務(wù)系統所屬的topic中,實(shí)現業(yè)務(wù)日志的相互隔離。數據自定義處理:根據用戶(hù)自定義的處理語(yǔ)法模板,實(shí)時(shí)消費處理從服務(wù)主題到自定義主題的數據。2.5 數據消費層
  對于大多數用戶(hù)來(lái)說(shuō),Logan實(shí)時(shí)日志提供的日志采集、處理、檢索能力可以滿(mǎn)足他們的大部分需求。但在與用戶(hù)交流的過(guò)程中,我們發(fā)現還有一些更高層次的需求,比如指標監控、前后端鏈路對接、離線(xiàn)數據計算等。因此,我們將Logan標準化的日志統一下發(fā)到Kafka流處理平臺,并提供一些通用的數據轉換能力,方便用戶(hù)按需接入不同的第三方系統。數據消費層設計如下圖所示:
  圖 8 數據消費層設計圖 數據消費層的一些典型應用場(chǎng)景: 網(wǎng)絡(luò )全鏈路跟蹤:現階段前后端日志可能分布在不同的系統中,前端日志系統主要記錄代碼級日志、端到端日志等,后端日志系統記錄鏈接關(guān)系、服務(wù)耗時(shí)等信息。通過(guò)羅根實(shí)時(shí)日志開(kāi)放的數據消費能力,用戶(hù)可以根據自己的需求拼接多端日志,實(shí)現網(wǎng)絡(luò )全鏈路跟蹤。指標聚合統計&amp;告警:實(shí)時(shí)日志也是一種實(shí)時(shí)數據流,可以作為指標數據上報的載體。如果日志數據接入數據統計平臺,可實(shí)現指標監測和報警。離線(xiàn)數據分析:如果某些需求場(chǎng)景需要對數據進(jìn)行長(cháng)期存儲或離線(xiàn)分析,可以將數據導入Hive來(lái)實(shí)現。2.6 日志平臺
  
  日志平臺的核心功能是為用戶(hù)提供日志檢索支持。日志平臺提供用戶(hù)ID、自定義標簽、關(guān)鍵字等多種檢索過(guò)濾方式。在底層日志存儲架構的選擇上,目前業(yè)界普遍采用Elasticsearch??紤]到計費和運維成本的關(guān)系,美團已經(jīng)有了統一的框架可以使用,所以我們也選擇了Elasticsearch架構。同時(shí),我們也通過(guò)一個(gè)單獨的接口層來(lái)支持其他的存儲引擎。日志查詢(xún)流程如下:
  圖9 日志查詢(xún)流程設計圖 Elasticsearch:是分布式開(kāi)源搜索分析引擎,具有訪(fǎng)問(wèn)成本低、擴展性高、近實(shí)時(shí)等優(yōu)點(diǎn),更適合大數據的全文檢索服務(wù)3 穩定性保障 3.1 核心監控 為了衡量終端實(shí)時(shí)日志系統的可用性,我們制定了以下核心SLA指標:
  表2 核心SLA指標表 除了核心指標監控,我們還搭建了全程監控面板,涵蓋了子端上報成功率、域名可用性、域名QPS、作業(yè)吞吐量等重要觀(guān)察指標,以及聚合記錄的平均數量。針對上報成功率、域名QPS、作業(yè)吞吐量等,配置一體化告警。當線(xiàn)上出現異常時(shí),第一時(shí)間發(fā)現并處理。3.2 藍綠發(fā)布
  實(shí)時(shí)日志依賴(lài)于實(shí)時(shí)作業(yè)的處理和計算能力,但是實(shí)時(shí)作業(yè)的發(fā)布和部署目前還不能無(wú)縫對接,中間可能會(huì )出現真空。重啟作業(yè)時(shí),需要先停止原來(lái)的作業(yè),然后再啟動(dòng)新的作業(yè)。如果遇到代碼故障或者系統資源不足,就會(huì )導致作業(yè)啟動(dòng)失敗,直接面臨消息積壓嚴重,數據延遲增加的問(wèn)題,這是實(shí)時(shí)日志系統無(wú)法承受的。
  Blue Green Deployment 是一種平滑過(guò)渡的發(fā)布模式。在藍綠發(fā)布模型中,應用程序必須首先被分成兩個(gè)相等的組,藍色和綠色。藍色組發(fā)布新產(chǎn)品代碼并引入一點(diǎn)線(xiàn)上流量,綠色組繼續運行舊產(chǎn)品代碼。當新產(chǎn)品代碼跑上線(xiàn),觀(guān)察沒(méi)有問(wèn)題時(shí),逐漸引入更多的線(xiàn)上流量,直到所有流量都接入藍組的新產(chǎn)品。因此,藍綠發(fā)布可以保證整個(gè)系統的穩定性,可以在產(chǎn)品發(fā)布的早期發(fā)現問(wèn)題并解決問(wèn)題,保證其影響可控。
  目前,美團對于實(shí)時(shí)運營(yíng)有不同的藍綠部署方案。由于洛根實(shí)時(shí)日志訪(fǎng)問(wèn)業(yè)務(wù)系統較多,數據量較大,經(jīng)過(guò)綜合考慮,我們決定實(shí)施適合當前系統的藍綠方案。部署方案。為了保證系統的穩定性,在作業(yè)運行過(guò)程中又啟動(dòng)了一個(gè)相同的作業(yè)。當新作業(yè)運行沒(méi)有問(wèn)題時(shí),舊作業(yè)被切換。藍綠發(fā)布流程圖如下:
  圖10 藍綠發(fā)布流程圖 使用藍綠部署后,徹底解決了因資源不足或參數不正確導致上線(xiàn)失敗的問(wèn)題,平均部署切換時(shí)間保持在1分鐘以?xún)?,基本避免了因資源不足或參數錯誤導致的日志消耗釋放延遲問(wèn)題。4 實(shí)施結果 洛根實(shí)時(shí)日志在建設初期就受到了各業(yè)務(wù)的廣泛關(guān)注。程序、優(yōu)選商戶(hù)、餐飲SaaS等大體量業(yè)務(wù)。以下是業(yè)務(wù)系統接入的一些典型使用場(chǎng)景,供大家參考: 核心鏈路還原:道家C端小程序使用Logan實(shí)時(shí)記錄程序核心鏈路的關(guān)鍵日志和異常日志。當網(wǎng)上有客戶(hù)投訴出現問(wèn)題時(shí),可以查看實(shí)時(shí)日志,第一時(shí)間定位問(wèn)題。項目上線(xiàn)后,客戶(hù)投訴的平均定位時(shí)間從之前的10分鐘縮短到3分鐘以?xún)?,排查效率顯著(zhù)提升。內測階段排查問(wèn)題:某企業(yè)平臺前端項目,由于2.0改版后發(fā)生了較大變化,所以在內測階段使用Logan實(shí)時(shí)日志,增加更多調試日志,方便定位在線(xiàn)問(wèn)題。項目上線(xiàn)后,不僅為用戶(hù)每次排錯上報日志節省了10-15分鐘的時(shí)間,而且杜絕了因存儲空間不足而無(wú)法獲取用戶(hù)日志的情況。日志數據分析:美團到店團隊利用Logan實(shí)時(shí)日志分析前后端交互過(guò)程中的請求頭、請求參數、響應體等數據是否符合規范規范。經(jīng)過(guò)一個(gè)多月的試運行,一期版本上線(xiàn)后,覆蓋300+前端頁(yè)面,500+前端界面,共發(fā)現1000+規范問(wèn)題。5 未來(lái)規劃 龍光實(shí)時(shí)日志經(jīng)過(guò)半年的建設和推廣,系統基本能力已經(jīng)完成,可以滿(mǎn)足用戶(hù)對實(shí)時(shí)日志的基本需求。但不支持日志數據的深度加工清洗、日志統計、告警等高層次需求。所以,
  如果喜歡本文,請點(diǎn)擊右上角分享文章到朋友圈
  想了解學(xué)習的技術(shù)要點(diǎn),歡迎給若飛留言安排分享
  ·結尾·
  <p style="outline: 0px;max-width: 100%;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;">相關(guān)閱讀:一張圖看懂微服務(wù)架構路線(xiàn)<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />基于Spring Cloud的微服務(wù)架構分析微服務(wù)等于Spring Cloud?了解微服務(wù)架構和框架<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />如何構建基于 DDD 領(lǐng)域驅動(dòng)的微服務(wù)?
  小團隊真的適合引入SpringCloud微服務(wù)嗎?<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  DDD興起的原因以及與微服務(wù)的關(guān)系
  微服務(wù)之間的最佳調用方式<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  微服務(wù)架構設計總結實(shí)踐<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  基于 Kubernetes 的微服務(wù)項目設計與實(shí)現
  微服務(wù)架構-設計總結
  為什么微服務(wù)一定要有網(wǎng)關(guān)?
  主流微服務(wù)全鏈路監控系統之戰<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)架構實(shí)施原理詳解<br style="outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />微服務(wù)的簡(jiǎn)介和技術(shù)棧微服務(wù)場(chǎng)景下的數據一致性解決方案設計一個(gè)容錯的微服務(wù)架構</p>
  解決方案:WPJAM Basic 詳細介紹:一鍵搞定 WordPress 功能屏蔽和增強優(yōu)
  WPJAM Basic插件的“優(yōu)化設置”是WPJAM Basic的初始功能??梢哉f(shuō)是我愛(ài)水煮魚(yú)博客根據多年使用WordPress的經(jīng)驗整理出來(lái)的優(yōu)化插件。
  以上是該功能的完整視頻介紹。當時(shí)的想法是為各種不用的功能,或者可能影響性能的功能提供開(kāi)關(guān),讓你只需要一鍵即可完成WordPress定制開(kāi)發(fā)。經(jīng)過(guò)幾年的發(fā)展,我的優(yōu)化設置的功能分為功能屏蔽和增強優(yōu)化兩部分:
  功能掩蔽
  從上圖可以清楚的看出,功能屏蔽就是讓你屏蔽掉WordPress中一些不用的功能,也給出了一些簡(jiǎn)單的理由以及哪些場(chǎng)景可以屏蔽這個(gè)功能。當前支持阻止以下功能:
  1.
  文章 改版時(shí)會(huì )往Posts表中插入多條歷史數據,導致Posts表冗余。建議屏蔽文章修改功能,提高數據庫效率。
  2.
  Trackbacks協(xié)議被濫用,會(huì )在博客上產(chǎn)生大量垃圾信息。建議完全關(guān)閉 Trackbacks。
  3.
  WordPress使用圖片渲染Emoji表情文字,但是渲染后的圖片經(jīng)常打不開(kāi),現在主流瀏覽器已經(jīng)支持Emoji文字,建議屏蔽Emoji功能。
  4.
  WordPress會(huì )將一些純文本字符轉換成格式化的HTML實(shí)體,但是這些轉換不適合中文環(huán)境,所以我們最好去掉這些字符轉換。
  5.
  WordPress feeds主要用于閱讀器,但現在使用閱讀器的用戶(hù)越來(lái)越少,feeds更多用于采集,造成不必要的資源消耗,建議關(guān)閉本站feeds。
  6.
  管理員每六個(gè)月重新登錄一次后,就會(huì )看到站點(diǎn)管理員的郵箱驗證界面。如果您認為沒(méi)有必要,可以屏蔽郵箱驗證。
  7.
  GDPR 是歐洲的通用數據保護條例。為了適應這個(gè)規律,WordPress在后臺設置了很多隱私功能。如果您只在中國運營(yíng)博客,您可以在后臺刪除與隱私相關(guān)的頁(yè)面。
  8.
  WordPress更新服務(wù)器位于國外,經(jīng)常打不開(kāi)。建議關(guān)閉WordPress后臺和自動(dòng)更新功能,手動(dòng)或通過(guò)SSH更新WordPress。
  
  9.
  Auto Embeds 協(xié)議允許您插入視頻網(wǎng)站 或照片分享網(wǎng)站 的鏈接,鏈接中收錄的視頻或圖片將自動(dòng)顯示。不過(guò)這個(gè)功能支持的網(wǎng)站都是國外的。建議禁用自動(dòng)嵌入功能以加快頁(yè)面解析。
  10.
  文章Embed 功能允許您將 WordPress文章 嵌入本站點(diǎn)或 WordPress 站點(diǎn)中的其他站點(diǎn)。如果不需要,可以屏蔽文章Embed 功能。
  11.
  WordPress 5.0發(fā)布帶來(lái)的Gutenberg編輯器很酷,但是很多人不習慣,還是喜歡原來(lái)簡(jiǎn)單的編輯器,可以屏蔽Gutenberg。
  12.
  XML-RPC協(xié)議用于在客戶(hù)端發(fā)布文章,如果只在后臺發(fā)布,可以關(guān)閉XML-RPC功能。
  增強優(yōu)化
  加速優(yōu)化是清理WordPress產(chǎn)生的無(wú)用代碼,加速優(yōu)化一些WordPress資源。目前,它具有以下功能:
  Google 字體非常易于使用和方便。很多WordPress主題也使用谷歌字體,但是谷歌在線(xiàn)字體在國內的速度不是很快,有時(shí)甚至打不開(kāi)。這就是為什么 WordPress 在中國有時(shí)速度不夠快的原因。
  WPJAM Basic允許您選擇第三方Google Font字體加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  Gravatar部分CDN服務(wù)器在國內訪(fǎng)問(wèn)困難,存在無(wú)法顯示頭像的問(wèn)題,而且WordPress后臺或評論頁(yè)面有時(shí)會(huì )默認加載Gravatar頭像圖片,可能會(huì )導致頁(yè)面卡頓。
  WPJAM Basic允許您選擇第三方Gravatar圖片加速服務(wù),也可以自定義輸入加速服務(wù)地址:
  詳細介紹:
  WPJAM Basic允許您直接在后臺設置Frame嵌入,避免點(diǎn)擊劫持,增強網(wǎng)站的安全性:
  詳細介紹:
  
  刪除類(lèi)別類(lèi)別和 WordPress 頁(yè)面的 URL。這兩個(gè)頁(yè)面的頁(yè)面重寫(xiě)規則是否相同?那么我們可以直接使用頁(yè)面重寫(xiě)規則來(lái)處理。
  WPJAM Basic 還添加了一個(gè)附加選項。如果博客自定義了其他自定義分類(lèi)模式,您可以選擇將此功能應用于哪種分類(lèi)模式:
  詳細介紹:
  如果長(cháng)時(shí)間上傳的圖片名稱(chēng)是1.jpg,那么上傳一張圖片就會(huì )導致數據庫執行幾十到上百條SQL查詢(xún)。上傳的時(shí)候要改一下圖片的名字,圖片的名字要多加一個(gè)時(shí)間戳,這樣幾乎可以保證圖片名字不能重復:
  詳細介紹:
  WordPress會(huì )在頁(yè)面頭部輸出版權信息和其他服務(wù)發(fā)現代碼。版權信息代碼會(huì )讓用戶(hù)知道你當前運行的 WordPress 版本,服務(wù)發(fā)現代碼會(huì )告訴用戶(hù)你的博客支持哪些服務(wù)。
  這些代碼會(huì )在前臺造成一些安全問(wèn)題,最好一鍵刪除。
  詳細介紹:
  一般不建議在網(wǎng)站前臺顯示W(wǎng)ordPress工具欄,可以一鍵移除。
  詳細介紹:
  如果熟悉WordPress的用戶(hù),就會(huì )知道如何寫(xiě)出正確的WordPress模式,所以從效率的角度來(lái)說(shuō),沒(méi)有必要在這個(gè)轉換上浪費時(shí)間,也可以一鍵移除。
  詳細介紹:
  在很多WordPress后臺頁(yè)面的右上角,比如后臺文章列表頁(yè)面,都會(huì )有“顯示選項”和“幫助”兩個(gè)按鈕。一個(gè)用于顯示和設置本頁(yè)面的選項,另一個(gè)用于獲取頁(yè)面的幫助信息:
  首先,這兩個(gè)按鈕在右上角。很多用戶(hù)沒(méi)有特別注意,以至于忘記操作,幫助文檔對用戶(hù)的幫助也不是很大。建議兩者都去掉。
  詳細介紹:
  最后,如果大家對使用WPJAM Basic有什么疑問(wèn),或者有什么功能需求,歡迎給我留言。
  點(diǎn)擊卡片關(guān)注“WordPress Jam”
  每天分享 WordPress 技巧

解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-11-18 07:46 ? 來(lái)自相關(guān)話(huà)題

  解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章
 ?。c(diǎn)擊上方公眾號快速關(guān)注)。
  資料來(lái)源:foreach_break,
  前言
  這是一份學(xué)習筆記。
  學(xué)習材料來(lái)自Jay Kreps的日志博客文章。
  原文很長(cháng),但我堅持閱讀,收獲頗豐,對 Jay 的技術(shù)能力、架構能力和對分布式系統的深刻理解印象深刻。同時(shí),他有點(diǎn)沾沾自喜,因為他的一些理解與周杰倫的觀(guān)點(diǎn)相吻合。
  Jay Kreps是前LinkedIn首席參謀工程師,Confluent現任聯(lián)合創(chuàng )始人兼首席執行官,以及Kafka和Samza的主要作者。
  所謂筆記,讀文章背,因為周杰倫哥自己在這一章里組織得太好了,他自己的科學(xué)素養和哲學(xué)素養也很高,所以他覺(jué)得很精彩的就不省略了。
  I. 信息來(lái)源
  日志:每個(gè)軟件工程師都應該知道的關(guān)于實(shí)時(shí)數據的統一抽象()
  2. 注意事項
  2.1 日志的值
  1)日志是以下系統的核心:
  2)日志可能與計算機一樣古老,是分布式數據系統和實(shí)時(shí)計算系統的核心。
  3)日志有很多名稱(chēng):
  4)不懂日志,就不能完全看懂
  它
  2.2 什么是日志?
  2.2.1 概述
  記錄的順序定義了時(shí)間等概念。
  因為越靠左,記錄越早。
  條目的序號作為一種時(shí)間戳的概念,以及記錄的順序作為時(shí)間的概念可能看起來(lái)很奇怪,但正如您很快就會(huì )發(fā)現的那樣,它可以很容易地將“時(shí)間”與任何特定的物理時(shí)鐘分離。
  日志與普通文件和表沒(méi)有太大區別。
  這樣,你可能會(huì )覺(jué)得日志這么簡(jiǎn)單,還有需要討論的嗎?
  其實(shí)日志的核心含義是:
  日志記錄發(fā)生了什么以及何時(shí)發(fā)生。
  而這個(gè)通常是分布式系統最核心的東西。
  請注意,這里有必要澄清幾個(gè)概念:
  2.2.2 數據庫中的日志
  Log的起源是未知的,就像發(fā)明二進(jìn)制查找的人一樣,很難意識到這項發(fā)明是一項發(fā)明。
  日志早在IBM的System R中就出現了。
  在數據庫中,當數據庫崩潰時(shí),您需要使各種數據結構和索引保持同步。
  為了確保原子性和持久性,數據庫需要在修改數據結構和索引之前記錄要修改的內容。
  因此,日志記錄何時(shí)發(fā)生某些事情,每個(gè)表和索引本身就是此歷史信息的映射。
  由于日志是立即持久的,因此在發(fā)生崩潰時(shí),它將成為還原其他持久結構的可靠來(lái)源。
  日志已經(jīng)從 ACID 功能的實(shí)現發(fā)展成為數據庫之間數據復制的一種方式。
  顯然,數據庫中發(fā)生的一系列數據變化已經(jīng)成為維持數據庫之間同步最需要的信息。
  Oracle,MySQL和PostgreSQL都收錄日志傳輸協(xié)議,該協(xié)議將部分日志發(fā)送到用于持久復制的從屬服務(wù)器。Oracle
  的XStreams和GoldenState使用日志作為通用數據訂閱機制,為非Oracle數據庫提供訂閱數據。
  MySQL和PostgreSQL提供了類(lèi)似的組件,這些組件是數據系統架構的核心。
  面向機器的日志不僅可以用于數據庫,還可以用于:
  2.2.3 分布式系統中的日志
  日志解決了分布式數據系統中的兩個(gè)重要問(wèn)題:
  1) 有序數據更改
  2) 數據分發(fā)
  所謂的狀態(tài)機復制原理:
  如果兩個(gè)確定性進(jìn)程,從相同的狀態(tài)開(kāi)始,以相同的順序,接收相同的輸入,那么它們將產(chǎn)生相同的輸出并以相同的狀態(tài)結束。
  確定性意味著(zhù)處理過(guò)程與時(shí)間無(wú)關(guān),并且處理結果不受其他輸入的影響。
  可以通過(guò)非確定性示例來(lái)理解:
  所謂狀態(tài)可以是機器上的任何數據,無(wú)論是在機器的內存中,還是處理完成后的磁盤(pán)上。值得注意的是,相同的
  輸入以相同的順序產(chǎn)生相同的結果,這就是為什么日志如此重要的原因,這是一個(gè)直觀(guān)的概念:如果你將相同的日志輸入兩個(gè)確定性程序,它們將產(chǎn)生相同的輸出。
  在分布式系統的構建中,認識到這一點(diǎn),可以使:
  讓所有機器做同樣的事情,協(xié)議是:
  構建分布式、一致的日志系統,為所有處理系統提供輸入。
  日志系統的作用是分散所有輸入流之上的不確定性,并確保處理相同輸入的所有復制節點(diǎn)同步。
  這種方法最好的一點(diǎn)是,您可以將索引日志的時(shí)間戳視為所有復制節點(diǎn)的時(shí)鐘:通過(guò)使用復制節點(diǎn)處理的日志
  中最大的時(shí)間戳作為復制節點(diǎn)的唯一 ID,時(shí)間戳與日志相結合可以唯一地表示節點(diǎn)的整個(gè)狀態(tài)。
  還有許多方法可以應用此方法:
  從理論上講,我們可以記錄一系列機器指令,或者調用的方法的名稱(chēng)和參數,只要數據處理過(guò)程的行為相同,這些過(guò)程就可以保證節點(diǎn)之間的一致性。
  玩數據庫的人通常以不同的方式處理邏輯日志和物理日志:
  對于分布式系統,通常有兩種方法來(lái)處理復制和數據處理:
  1) 狀態(tài)機模型(主動(dòng) – 主動(dòng))
  2) 主回模型(主動(dòng) – 被動(dòng))
  如下圖所示:
  為了理解上述兩種方法之間的區別,讓我們看一個(gè)簡(jiǎn)單的例子:
  現在,集群需要提供一個(gè)簡(jiǎn)單的服務(wù)來(lái)執行算術(shù)運算,例如加法和乘法。最初,維護一個(gè)數字,例如 0。
  上面的例子也說(shuō)明了為什么順序是復制節點(diǎn)之間一致性的關(guān)鍵因素,如果這些操作的順序被打亂,將獲得不同的結果。
  分布式日志,可以作為一些共識算法的數據結構:
  表示有關(guān)下一個(gè)值的一系列決策的日志。
  2.2.4 更新日志
  從數據庫的角度來(lái)看,記錄數據更改的一組更改日志和表是雙重且可互操作的。
  1) 基于記錄數據更改的日志,可以重構處于特定狀態(tài)的表(也可以是非關(guān)系存儲系統中帶有鍵的記錄)。
  2)相反,如果表發(fā)生變化,則可以在日志中計算更改。
  這正是您想要的準實(shí)時(shí)副本的秘密所在!
  這與版本控制的作用非常相似:管理分布式、并發(fā)、狀態(tài)更改。
  版本控制工具(用于維護反映更改的修補程序)本質(zhì)上是日志,您可以與簽出的分支快照進(jìn)行交互,該快照等效于數據庫中的表。您會(huì )發(fā)現復制在版本控制和分布式系統中都是基于日志的:更新版本時(shí),只需提取反映版本更改的修補程序并將其應用于當前分支快照。
  2.3 數據集成
  2.3.1 數據集成的含義數據
  集成是為組織中的所有服務(wù)和系統提供數據。
  事實(shí)上,數據的有效利用非常符合馬斯洛的需求層次。
  金字塔的底部是采集數據并將其集成到應用程序中(無(wú)論是實(shí)時(shí)計算引擎,文本文件還是Python腳本)。
  并且需要轉換這些數據,以保持易于閱讀和處理的統一、標準化和整潔的格式。
  一旦滿(mǎn)足了上述要求,就可以開(kāi)始考慮各種數據處理方法,如map-reduce或實(shí)時(shí)查詢(xún)系統。
  顯然,如果沒(méi)有可靠、完整的數據流,Hadoop 只是一個(gè)昂貴的、難以集成的加熱器(集群是耗電的嗎?)。
  相反,如果可以確保數據流可靠、可用且完整,則可以考慮更高級的游戲玩法、更好的數據模型以及一致、更易于理解的語(yǔ)義。
  然后,注意力可以轉移到可視化、報告、算法和預測(挖掘器、深度)上。
  2.3.2 數據集成的兩種復雜性
  事件事件
  數據記錄事件如何發(fā)生,而不僅僅是發(fā)生的情況,通常用作應用程序日志,因為它通常由應用程序系統寫(xiě)入。但這實(shí)際上混淆了日志的功能。
  事實(shí)上,谷歌的財富是由建立在(用戶(hù))點(diǎn)擊流和好惡(體驗)上的關(guān)聯(lián)管道產(chǎn)生的,點(diǎn)擊流和展示是事件。
  各種專(zhuān)業(yè)數據系統的爆炸式增長(cháng)
  為什么這些系統存在:
  顯然,將數據集成到這樣的系統中對于數據集成來(lái)說(shuō)是極其困難的。
  2.3.3 基于日志結構的數據流
  可以根據日志對每個(gè)邏輯數據源進(jìn)行建模。
  數據源可以是記錄事件(命中和 PV)的應用程序,也可以是接受更改的數據庫表。
  每個(gè)訂閱者都盡快從這些數據源生成的日志中獲取新記錄,將其應用于本地存儲系統,并改善其在日志中的讀取偏移。訂閱者可以是任何數據系統,例如緩存、Hadoop、另一個(gè)站點(diǎn)的數據庫或搜索引擎。
  登錄事實(shí)上,提供了一個(gè)邏輯時(shí)鐘,用于測量不同訂閱者
  的狀態(tài)以響應數據變化,因為這些訂閱者在日志中具有不同且獨立的讀取偏移量,這就像時(shí)間意義上的“時(shí)刻”。
  考慮這樣一個(gè)示例、數據庫和一些緩存服務(wù)器:
  
  日志提供了同步所有緩存服務(wù)器并推送它們所處的“時(shí)刻”的能力。
  假設我們寫(xiě)一個(gè)編號為 X 的日志,讀取來(lái)自緩存服務(wù)器
  的數據,為了不讀取舊數據,我們只需要確保在緩存服務(wù)器將數據(同步)復制到 X 位置之前我們不會(huì )從該緩存中讀取任何內容。
  此外,日志還提供了充當緩沖區的功能,以異步方式支持生產(chǎn)者和使用者的行為。
  支持異步的最關(guān)鍵原因之一是訂閱系統可能會(huì )崩潰,離線(xiàn)進(jìn)行維護,然后重新上線(xiàn),在這種情況下,每個(gè)訂閱者都按照自己的節奏使用數據。
  批處理系統(如 Hadoop 或數據倉庫)使用數據
  每小時(shí)或每天一次,而實(shí)時(shí)系統通常在幾秒鐘內消耗數據。
  數據源或日志對使用數據的訂閱者一無(wú)所知,因此需要在管道中無(wú)縫添加和刪除訂閱者。
  更重要的是,訂閱者只需要知道日志,不需要知道他們消費的數據來(lái)源,無(wú)論是RDBMS,Hadoop還是新流行的K-V數據庫。之所以討論日志,而不是消息系統,是因為不同的消息系統
  保證了不同的特性,而word消息系統很難完全準確地表達某種語(yǔ)義,因為消息系統更重要的是重定向消息。
  但是,日志可以理解為提供持久性保證和強有序語(yǔ)義的消息系統,這在通信系統中稱(chēng)為原子廣播。
  2.4 LinkedIn
  LinkedIn目前的主要系統包括(注:2013年):
  每個(gè)系統在其專(zhuān)業(yè)領(lǐng)域都提供專(zhuān)門(mén)的高級功能。
 ?。ㄟ@一段太長(cháng)太長(cháng)了,周杰倫哥很擅長(cháng),所以挑重點(diǎn)記??!
  1)引入數據流的概念是因為在Oracle數據庫中的表之上建立了抽象緩存層,為搜索引擎索引構建和社交圖譜更新提供擴展能力。
  2)為了更好的處理LinkedIn的一些推薦算法,我開(kāi)始構建Hadoop集群,但團隊在這方面的經(jīng)驗還不多,所以我走了不少彎路。
  3)一開(kāi)始,這只是一個(gè)粗略的想法,即將數據從Oracle數據倉庫中提取出來(lái)并將其扔到Hadoop中是可以的。結果發(fā)現:首先,從Oracle數據倉庫快速導出數據是一場(chǎng)噩夢(mèng);其次,也是更糟糕的是,數據倉庫中的一些數據沒(méi)有得到正確處理,導致Hadoop批處理任務(wù)無(wú)法按預期輸出結果,并且通過(guò)Hadoop批處理執行的任務(wù)通常是不可逆的,尤其是在報告出來(lái)之后。
  4)最后,團隊離開(kāi)數據倉庫,直接進(jìn)入數據庫和日志作為數據源。接下來(lái),建造了一個(gè)輪子:K-V 存儲(伏地魔)。
  5)即使是像數據復制這樣普通的工作也會(huì )占用團隊的大量時(shí)間來(lái)處理,更糟糕的是,一旦數據處理管道中存在一個(gè)點(diǎn),Hadoop立即變得浪費,因為無(wú)論算法在錯誤數據上運行多么出色,只有一個(gè)后果,那就是產(chǎn)生更多錯誤的數據。
  6)即使團隊在高度抽象上構建了一些東西,每個(gè)數據源也需要特定的配置,這是許多錯誤和失敗的根源。
  7)大量的程序員想要跟進(jìn),每個(gè)程序員都有大量的想法,集成這個(gè)系統,添加這個(gè)功能,集成這個(gè)功能,或者想要自定義數據源。
  8)周杰倫弟兄開(kāi)始意識到:
  首先,他們修建的管道雖然還很粗糙,但價(jià)值極高。即使解決數據在新系統(如Hadoop)中可用的問(wèn)題,也可以解鎖大量可能性。以前難以進(jìn)行的計算開(kāi)始成為可能。只需從其他系統解鎖數據并集成它們,即可輕松創(chuàng )建新產(chǎn)品和分析。其次,很明顯,可靠的數據加載
  需要更堅實(shí)的支持,如果可以捕獲所有結構,Hadoop數據加載可以完全自動(dòng)化,而無(wú)需添加新數據源或手動(dòng)修改數據的模式。數據會(huì )神奇地出現在HDFS中,當添加新的數據源時(shí),Hive的表會(huì )自動(dòng)自適應地生成相應的列。
  第三,數據覆蓋面遠遠不夠。很難處理許多新的數據源。
  9)為了解決添加新數據源后的數據加載問(wèn)題,團隊開(kāi)始了這樣的嘗試:
  很快,他們發(fā)現這行不通,因為發(fā)布和訂閱,生產(chǎn)和消費,數據流通常仍然是雙向的,這變成了O(n^2)問(wèn)題。
  所以,他們需要的是這樣的模型:
  每個(gè)使用者都需要與數據源隔離,理想情況下只與一個(gè)數據存儲庫交互,該存儲庫為他們提供對任意數據的訪(fǎng)問(wèn)權限。
  10)消息系統+日志=卡夫卡,卡夫卡誕生了。
  2.5 日志ETL與數據倉庫的關(guān)系
  2.5.1 數據倉庫
  1) 一個(gè)干凈、結構化、集成的數據存儲庫,用于分析。
  2)雖然這個(gè)想法很棒,但獲取數據的方式有點(diǎn)過(guò)時(shí)了:定期從數據庫中獲取數據并將其轉換為更易讀的格式。
  3)以前的數據倉庫問(wèn)題是干凈的數據和數據倉庫是高度耦合的。
  數據倉庫應該是一組查詢(xún)功能的集合,服務(wù)于報表、搜索、廣告熱分析,包括計數、聚合、過(guò)濾等操作,所以它應該是一個(gè)批處理系統。
  但是干凈數據與這種批處理系統的高度耦合意味著(zhù)這些數據不能被實(shí)時(shí)系統消費,例如搜索引擎索引,實(shí)時(shí)計算和實(shí)時(shí)監控系統等。
  2.5.2 ETL
  Jay認為ETL只做兩件事:
  1)數據提取和清理,從特定系統解鎖數據
  2)重構數據,以便可以通過(guò)數據倉庫進(jìn)行查詢(xún)。例如,更改數據類(lèi)型以適應關(guān)系數據庫的類(lèi)型,將架構轉換為星形或雪花圖案,或將其分解為面向列的存儲格式。
  但是將這兩件事結合在一起是一個(gè)大問(wèn)題,因為集成的、干凈的數據應該被其他實(shí)時(shí)系統、索引系統和低延遲處理系統使用。數據倉庫團隊
  負責采集和清理數據,但這些數據的生產(chǎn)者往往不知道數據倉庫團隊的數據處理需求,導致數據難以提取和清理。
  同時(shí),由于核心業(yè)務(wù)團隊對跟上公司其他部門(mén)的步伐不敏感,真正可以處理的數據覆蓋率很低,數據流很脆弱,很難快速響應變化。
  所以,一個(gè)更好的方法:
  如果要在干凈的數據集上做一些搜索、實(shí)時(shí)監控趨勢圖、實(shí)時(shí)告警,不宜使用原創(chuàng )數據倉庫或Hadoop集群作為基礎設施。更糟糕的是,ETL為數據倉庫構建的數據加載系統對其他(實(shí)時(shí))系統幾乎沒(méi)有用處。
  最好的模型是完成在數據發(fā)布者發(fā)布數據之前進(jìn)行數據
  清理過(guò)程,因為只有發(fā)布者最了解其數據的外觀(guān)。在此階段完成的所有操作都應該是令人滿(mǎn)意的無(wú)損和可逆的。
  所有豐富的語(yǔ)義或附加值的實(shí)時(shí)轉換都應在原創(chuàng )日志后處理之后進(jìn)行后處理,包括為事件數據建立會(huì )話(huà)或添加某些感興趣的字段。原創(chuàng )日志仍然可以單獨使用,但此類(lèi)實(shí)時(shí)應用程序也會(huì )派生新的參數化日志。
  最后,只有與特定目標系統相對應的數據聚合操作才應成為數據加載的一部分,例如轉換為星形或雪花圖案,以便在數據倉庫中進(jìn)行分析和報告。因為這個(gè)階段,就像傳統的ETL一樣,由于一個(gè)非常干凈和標準化的數據流,(帶日志)現在非常簡(jiǎn)單。
  2.6 日志文件和事件
  一
  以日志為核心的架構還有一個(gè)額外的好處,那就是易于實(shí)現無(wú)耦合、事件驅動(dòng)的系統。
  捕獲用戶(hù)活動(dòng)和系統變化的傳統方法是將這些信息寫(xiě)入文本日志,然后將其提取到數據倉庫或 Hadoop 集群中進(jìn)行聚合和處理,這類(lèi)似于前面描述的數據倉庫和 ETL 問(wèn)題:數據與數據倉庫高度耦合。
  在LinkedIn,它構建了一個(gè)基于kafka的事件數據處理系統。為各種操作定義了數百種事件類(lèi)型,從 PV、廣告展示、搜索到服務(wù)調用和應用程序異常。
  要了解上述事件驅動(dòng)系統的好處,請考慮一個(gè)簡(jiǎn)單的事件示例:
  在“工作機會(huì )”頁(yè)上,提供機會(huì )。此頁(yè)面應僅負責如何呈現機會(huì ),不應收錄太多其他邏輯。但是,您會(huì )發(fā)現在相當大的網(wǎng)站中執行此操作很容易涉及越來(lái)越多的與演示機會(huì )無(wú)關(guān)的邏輯。
  例如,我們要集成以下系統功能:
  1)我們需要將數據發(fā)送到Hadoop和數據倉庫進(jìn)行離線(xiàn)處理。
  2)我們需要計算頁(yè)面瀏覽量,以確保某些視圖不是用于抓取Web內容或任何東西。
  3) 我們需要匯總此頁(yè)面上的瀏覽信息,以顯示在業(yè)務(wù)機會(huì )發(fā)布商的分析頁(yè)面上。
  4)我們需要記錄一個(gè)用戶(hù)瀏覽這個(gè)頁(yè)面的歷史記錄,以確保我們?yōu)檫@個(gè)用戶(hù)提供任何適合這個(gè)用戶(hù)的工作機會(huì ),有價(jià)值和良好的體驗,而不是一遍又一遍地反復向這個(gè)用戶(hù)展示一個(gè)機會(huì )(想想只有老婆不在家的時(shí)候才能玩的游戲, 紅綠藍閃爍的特效,配上轟轟烈烈的DJ風(fēng)格舞曲,或是事業(yè)巔峰和穿短裙的女生的搖擺焦點(diǎn),再點(diǎn)擊發(fā)現是標題黨的廣告?。?。
  5)我們的推薦系統需要記錄此頁(yè)面的瀏覽歷史記錄,以正確跟蹤此工作機會(huì )的受歡迎程度。
  很快,僅顯示機會(huì )的頁(yè)面的邏輯變得復雜。當我們把這個(gè)機會(huì )也添加到移動(dòng)端時(shí),我們也不得不遷移邏輯,這增加了復雜性。訣竅是,在此頁(yè)面上工作的工程師需要了解其他系統,以確保正確集成上述功能。
  這只是一個(gè)非常簡(jiǎn)單的例子,在實(shí)踐中,情況只會(huì )變得更加復雜。
  事件驅動(dòng)可以使這變得容易。負責展示機會(huì )的頁(yè)面
  只需要展示機會(huì )并記錄一些與演示相關(guān)的因素,例如工作機會(huì )的屬性、查看頁(yè)面的人員以及其他有用的演示相關(guān)信息。頁(yè)面不需要維護其他系統的知識和知識,例如推薦系統、安全系統、機會(huì )發(fā)布者分析系統、數據倉庫等,所有這些系統只需要以訂閱者的身份訂閱事件,然后獨立處理,而提供機會(huì )的頁(yè)面不需要修改新的訂閱者或消費者加入。
  2.7 構建可擴展日志
  分離發(fā)布者和訂閱者并不是什么新鮮事,但日志系統很難確保多個(gè)訂閱者可以實(shí)時(shí)處理消息,同時(shí)確??蓴U展性。如果日志構建
  速度不快、開(kāi)銷(xiāo)低且可擴展,那么在此日志系統之上構建的所有好處都消失了。
  許多人可能認為日志記錄系統在分布式系統中是一項緩慢而昂貴的工作,并且僅用于處理元數據等信息,類(lèi)似于 ZooKeeper 更適合處理的內容。
  但是LinkedIn現在每天在kafka中處理600億次不同的消息寫(xiě)入(如果算上數據中心鏡像,則為數千億次寫(xiě)入)。
  周杰倫兄弟,他們是怎么做到的?
  1) 對日志進(jìn)行分區
  2) 通過(guò)批量讀取和寫(xiě)入優(yōu)化吞吐量
  3) 避免不必要的數據復制
  通過(guò)將日志切片為多個(gè)分區來(lái)提供可擴展性:
  1)每個(gè)分區都是有序日志,但分區之間沒(méi)有全局順序。
  2)將消息寫(xiě)入哪個(gè)分區完全由編寫(xiě)器控制,方法是根據某種類(lèi)型的鍵(例如user_id)對其進(jìn)行拆分。
  3)拆分允許在不協(xié)調分片的情況下執行日志的附加操作,同時(shí)保證系統的吞吐量與Kafka集群的大小呈線(xiàn)性相關(guān)。
  4)雖然沒(méi)有全局順序(實(shí)際上有成千上萬(wàn)的消費者或訂閱者,討論他們的全局順序通常沒(méi)有什么價(jià)值),但Kafka提供了一個(gè)保證,發(fā)送方以什么順序向一個(gè)分區發(fā)送消息,以及消息從這個(gè)分區傳遞的順序(以什么順序,以什么順序)。
  5)每個(gè)分區按照配置的編號進(jìn)行復制,如果一個(gè)領(lǐng)導節點(diǎn)掛起,其他節點(diǎn)將成為新的主節點(diǎn)。
  6)一個(gè)日志,就像文件系統一樣,線(xiàn)性讀寫(xiě)模式可以?xún)?yōu)化,這樣一個(gè)小的讀寫(xiě)日志就可以組成更大的、高吞吐量的操作??ǚ蚩ㄔ谶@件事上做得很艱難。批處理用于各種場(chǎng)景,例如客戶(hù)端向服務(wù)器發(fā)送數據、將數據寫(xiě)入磁盤(pán)、在服務(wù)器之間復制數據、向消費者傳輸數據、確認提交數據等。
  7)最后,Kafka對內存日志,磁盤(pán)日志和通過(guò)網(wǎng)絡(luò )發(fā)送的日志使用非常簡(jiǎn)單的二進(jìn)制格式,以方便使用各種優(yōu)化技術(shù),例如零拷貝數據傳輸。
  許多優(yōu)化技術(shù)結合在一起,允許您以磁盤(pán)或網(wǎng)絡(luò )可以提供的最大容量讀取和寫(xiě)入數據,即使內存已滿(mǎn)也是如此。
  2.8 日志和實(shí)時(shí)處理
  你認為周杰倫提供了一種如此漂亮的方法來(lái)復制數據并復制它嗎?
  你!錯!完成!日志是
  流式處理的另一種說(shuō)法,日志是流處理的核心。
  2.8.1 什么是流處理
 ???
  周杰倫哥認為:
  1)流處理是連續數據處理的基礎設施。
  2)流處理的計算模型,如MapReduce或其他分布式處理框架,只需要保證低延遲。
  3)批處理式數據采集模式導致批量式數據處理模式。
  4)連續的數據采集模式,導致連續的數據處理模式。
  5)杰伊哥講解美國人口普查方式解釋批處理。
  在LinkedIn,活動(dòng)數據和數據庫更改都是連續的。
  
  批處理每天處理數據,類(lèi)似于連續計算,將窗口設置為一天。
  因此,流處理是一個(gè)這樣的過(guò)程:
  6)在處理數據時(shí),有時(shí)間的概念,不需要維護數據的靜態(tài)快照,因此結果可以以用戶(hù)定義的頻率輸出,而無(wú)需等待數據集達到某個(gè)“結束”狀態(tài)。
  7)從這個(gè)意義上說(shuō),流處理是批處理的泛化,鑒于實(shí)時(shí)數據的普及,這是一個(gè)極其重要的泛化。
  8)許多商業(yè)公司無(wú)法構建流處理引擎,通常是因為他們無(wú)法構建流數據采集引擎。
  9) 流處理彌合了實(shí)時(shí)響應服務(wù)和離線(xiàn)批處理基礎設施之間的差距。
  10)日志系統,解決了流處理模式下的許多關(guān)鍵問(wèn)題,其中最大的問(wèn)題是如何在實(shí)時(shí)多訂閱者模式下提供可用數據(流數據采集)。
  2.9 數據流圖
  關(guān)于流處理最有趣的事情是它擴展了源的概念。
  無(wú)論是日志、源還是事件,逐行數據記錄都來(lái)自應用程序的活動(dòng)。
  但是,流式處理還允許我們處理來(lái)自其他源的數據,這些數據與提供給消費者的原創(chuàng )數據一樣好,并且這些派生源可以收錄任何級別的復雜性。
  流處理任務(wù)應如下所示:從日志中讀取數據并將輸出寫(xiě)入日志或其他系統。
  作為輸入和輸出日志,進(jìn)程本身和其他進(jìn)程連接起來(lái)形成一個(gè)圖。
  事實(shí)上,以日志為中心的系統允許您從組織捕獲、轉換和流式傳輸數據,作為一系列日志和寫(xiě)入日志處理的組合。
  流處理程序不必很高:它可以是一個(gè)進(jìn)程或一組進(jìn)程,但可以提供一些額外的基礎結構和支持,以便更輕松地管理用于處理的代碼。
  引入日志有兩個(gè)目的:
  1)確保數據集可以支持多個(gè)訂閱者模式并且有序。
  2)可以用作應用程序的緩沖區。這一點(diǎn)很重要,因為在異步數據處理過(guò)程中,如果上游生產(chǎn)者更快地生成數據并且使用者無(wú)法跟上,則要么阻塞該過(guò)程,要么引入緩沖區,要么丟棄數據。
  丟棄數據似乎不是一個(gè)好的選擇,阻塞處理進(jìn)程會(huì )導致處理進(jìn)程在所有數據流的處理圖中卡住.log另一方面是一個(gè)大的、超大的、非常大的緩沖區,它允許重啟處理進(jìn)程,這樣如果一個(gè)進(jìn)程失敗, 它不會(huì )影響流處理圖中的其他進(jìn)程。這對于大型組織擴展數據流至關(guān)重要,因為不同的團隊有不同的處理任務(wù),顯然整個(gè)流處理過(guò)程不會(huì )因為一個(gè)任務(wù)中的錯誤而停滯不前。
  Storm 和 Samza 就是這樣的流處理引擎,它們都可以使用 Kafka 或其他類(lèi)似的系統作為它們的日志系統。
 ?。ㄗⅲ褐芙軅惛绺缤春返?,卡夫卡在前,三輪在后。
  2.10 有狀態(tài)實(shí)時(shí)處理許多流處理
  引擎是無(wú)狀態(tài)的,一次一條記錄,但許多用例需要在一定的時(shí)間窗口內進(jìn)行復雜的計數、聚合和聯(lián)接操作才能進(jìn)行流處理。
  例如,在點(diǎn)擊流中,聯(lián)接用戶(hù)信息。
  然后,此用例需要狀態(tài)支持。在處理數據的地方,需要維護特定數據的狀態(tài)。
  問(wèn)題是,在處理器可能掛斷的情況下,如何保持正確?
  在內存中維護狀態(tài)可能是最簡(jiǎn)單的,但它不會(huì )承受崩潰。
  如果狀態(tài)僅在某個(gè)時(shí)間窗口內保持,則當發(fā)生掛起或故障時(shí),則可以將處理直接重放回窗口的開(kāi)頭,但如果窗口長(cháng)達 1 小時(shí),則可能不起作用。
  另一種簡(jiǎn)單的解決方案是將狀態(tài)存儲在遠程存儲系統或數據庫中,但這會(huì )丟失數據的局部性并產(chǎn)生大量的網(wǎng)絡(luò )往返。
  回想一下上面提到的數據庫中表和日志的雙重性。
  可以使用本地存儲或索引來(lái)維護狀態(tài)的流處理組件:
  通過(guò)記錄有關(guān)本地索引的更改日志,它用于在崩潰后還原狀態(tài)。實(shí)際上,此機制還揭示了一種通用狀態(tài),該狀態(tài)可以存儲為任意索引類(lèi)型,并與輸入流同時(shí)進(jìn)行共分區。
  當處理過(guò)程崩潰時(shí),它可以從更改日志中恢復索引,更改日志充當本地狀態(tài)基于時(shí)間備份的某種增量記錄的轉換器。
  這種機制也提供了一個(gè)非常優(yōu)雅的能力:進(jìn)程本身的狀態(tài)也可以記錄為日志,顯然其他進(jìn)程可以訂閱這個(gè)狀態(tài)。
  結合數據庫中的日志技術(shù),對于數據集成的場(chǎng)景,你經(jīng)??梢宰龇浅姶蟮氖虑椋?br />   通過(guò)從數據庫中提取日志并在各種流處理系統中為它們編制索引,可以聯(lián)接不同的事件流。
  2.11 日志合并
  顯然,不可能使用日志來(lái)記錄全職和全職狀態(tài)變化信息。
  Kafka 使用日志合并或日志垃圾回收技術(shù):
  1) 對于事件數據,Kafka 只保留一個(gè)時(shí)間窗口(可按時(shí)間配置為天或按空間配置)。
  2)對于鍵控更新,Kafka使用壓縮技術(shù)。這種類(lèi)型的日志可用于通過(guò)另一個(gè)系統中的重放技術(shù)重建源系統的狀態(tài)。
  如果全時(shí)保存日志,隨著(zhù)時(shí)間的推移,數據會(huì )越來(lái)越大,重放過(guò)程也會(huì )越來(lái)越長(cháng)。
  Kafka 不是簡(jiǎn)單地丟棄舊的日志信息,而是使用合并方法來(lái)丟棄過(guò)時(shí)的記錄,例如消息的主鍵最近是否更新。
  2.12 系統構建
  2.12.1 分布式系統
  日志,在數據流系統和分布式數據庫的數據集成中所扮演的角色是相同的:
  您可以將組織中的應用程序和數據流視為單個(gè)分布式數據庫。
  將面向查詢(xún)的獨立系統(如 Redis、SOLR、Hive 表等)視為特殊的數據頂級索引。
  將 Storm 和 Samza 等流處理系統視為精心設計的觸發(fā)器或物化視圖機制。
  各種數據系統,爆發(fā)式涌現,其實(shí)這種復雜性早已存在。在關(guān)系數據庫
  的鼎盛時(shí)期,公司或組織的光學(xué)關(guān)系數據庫有很多種。顯然,不可能
  把所有東西都扔到Hadoop集群中,并期望它能解決所有問(wèn)題。那么,如何構建一個(gè)好的系統,可能是這樣的:
  要構建一個(gè)分布式系統,每個(gè)組件都是一個(gè)小集群,每個(gè)集群可能無(wú)法提供完整的安全性、性能隔離或良好的可擴展性,但每個(gè)問(wèn)題都可以(專(zhuān)業(yè)地)解決。
  Jay認為,各種系統之所以爆炸式增長(cháng),是因為構建一個(gè)強大的分布式系統非常困難。如果將用例限制為查詢(xún)等簡(jiǎn)單場(chǎng)景,則每個(gè)系統都有足夠的能力來(lái)解決問(wèn)題,但很難集成這些系統。
  杰伊弟兄認為,未來(lái)構建系統有三種可能:
  1)維持現狀。在這種情況下,數據集成仍然是最大的問(wèn)題,因此外部日志系統很重要(kafka?。?br />   2)一個(gè)強大的(關(guān)系數據庫,如輝煌的日子)系統似乎不太可能解決所有問(wèn)題。
  3)新一代系統大多是開(kāi)源的,這揭示了第三種可能:數據基礎設施可以離散化為一組服務(wù),以及面向應用的系統API,每個(gè)都不完整,但可以專(zhuān)業(yè)解決專(zhuān)門(mén)的問(wèn)題,其實(shí)現有的Java技術(shù)??梢?jiàn)一斑:
  從某個(gè)
  從這個(gè)角度來(lái)看,構建這樣的分布式系統就像某個(gè)版本的樂(lè )高。這顯然與更關(guān)心 API 的最終用戶(hù)沒(méi)有太大關(guān)系,但它揭示了構建健壯系統并保持簡(jiǎn)單性的途徑:
  顯然,如果構建分布式系統的時(shí)間從幾年下降到幾周,構建大型獨立系統的復雜性就會(huì )消失,而這肯定是因為出現了更可靠和靈活的“構建塊”。
  2.12.2 登錄在系統建設中的作用
  如果系統受外部日志系統支持,
  那么每個(gè)獨立的系統都可以通過(guò)共享一個(gè)日志來(lái)降低自身的復雜性,Jay Ge認為日志的作用是:
  1)處理數據一致性問(wèn)題??梢酝ㄟ^(guò)序列化節點(diǎn)上的并發(fā)操作來(lái)實(shí)現即時(shí)和最終一致性。
  2) 提供節點(diǎn)間的數據復制。
  3)提供“提交”的語(yǔ)義。例如,如果您認為寫(xiě)入操作不會(huì )丟失,則為操作確認。
  4) 提供外部系統可以訂閱的源。
  5) 提供在節點(diǎn)因故障而丟失數據時(shí)恢復或重建新復制節點(diǎn)的功能。
  6) 處理節點(diǎn)之間的負載均衡。
  以上可能是完整分布式系統中應該提供的大多數功能(Jay 確實(shí)喜歡 Log!剩下的就是客戶(hù)端 API,構建索引等內容(如全文索引)需要獲取所有分區,而針對主鍵的查詢(xún)只需要提取分區中的數據。
 ?。鞘O碌木驼疹櫤昧?,周杰倫哥哥!
  該系統可以分為兩個(gè)邏輯組件(這種強大的理解和力量):
  1) 日志層
  2) 服務(wù)層
  日志層以序列化和有序的方式捕獲狀態(tài)更改,而服務(wù)層存儲外部查詢(xún)所需的索引,例如,K-V 存儲可能需要 B 樹(shù)和穩定索引,而搜索服務(wù)需要倒排索引。
  寫(xiě)入操作可以直接輸入到日志層中,也可以通過(guò)服務(wù)層代理。寫(xiě)入日志會(huì )產(chǎn)生邏輯時(shí)間戳(日志索引),例如數字 ID,如果系統已分區,則服務(wù)層和日志層將具有相同的分區(但它們各自的機器編號可能不同)。
  服務(wù)層訂閱日志層,并在以
  最快的速度順序存儲日志,并將數據和狀態(tài)變化同步到自己的本地索引中。
  客戶(hù)端將獲得讀寫(xiě)語(yǔ)義:
  通過(guò)攜帶寫(xiě)入任一節點(diǎn)(服務(wù)節點(diǎn))的時(shí)間時(shí)間戳Layer 接收此查詢(xún),將時(shí)間戳
  與其本地索引進(jìn)行比較,如有必要,為了防止返回過(guò)期的舊數據,請推遲請求的執行,直到此服務(wù)節點(diǎn)的索引同步跟上時(shí)間戳。
  服務(wù)層中的節點(diǎn)可能需要也可能不需要知道領(lǐng)導者的概念。在許多簡(jiǎn)單的用例中,服務(wù)層無(wú)法構建領(lǐng)導節點(diǎn),因為日志是事實(shí)的來(lái)源。
  還有一個(gè)問(wèn)題是如何處理節點(diǎn)故障后的恢復。這可以通過(guò)在日志中保留固定大小的時(shí)間窗口同時(shí)維護數據的快照來(lái)完成。您還可以讓 Log 保留數據的完整備份,并使用日志合并技術(shù)完成 Log 本身的垃圾回收。這種方法將服務(wù)層的大部分復雜性轉移到日志層,因為服務(wù)層是特定于系統的,并且日志層可以是通用的。
  基于日志系統,可以提供一套完整的API供開(kāi)發(fā)和使用,可以作為其他系統的ETL數據源,供其他系統訂閱。
  全棧 ! :
  顯然,以日志為核心的分布式系統立即成為可以為其他系統提供數據加載支持和數據流處理的角色。同樣,流處理系統可以同時(shí)使用多個(gè)數據流,并通過(guò)索引這些數據流然后輸出它們來(lái)向外部世界提供服務(wù)。系統基于
  日志層和服務(wù)層構建,使查詢(xún)相關(guān)因素與系統的可用性和一致性脫鉤。
  也許很多人認為在日志中維護數據的單獨備份,尤其是制作數據的完整副本,太浪費和奢侈,但事實(shí)并非如此:
  1)LinkedIn的Kafka生產(chǎn)集群每個(gè)數據中心維護75TB的數據,應用集群比Kafka集群需要更高的存儲空間和存儲條件(SSD+更多內存)。
  2)全文搜索索引最好全部加載到內存中,日志可以便宜使用,大容量磁盤(pán)因為它們是線(xiàn)性讀寫(xiě)的。
  3) 由于 Kafka 集群實(shí)際上以多訂閱者模型運行,多個(gè)系統使用數據,因此日志集群的開(kāi)銷(xiāo)被攤銷(xiāo)。
  4)由于所有這些原因,外部日志系統(kafka或類(lèi)似系統)的開(kāi)銷(xiāo)變得非常小。
  2.13 結論
  最后,周杰倫哥不僅大方地留下了大量有價(jià)值的學(xué)術(shù)和工程論文和參考鏈接,還虛心留下了這樣一句話(huà):
  如果你做到了這一步,你就知道我對日志的大部分了解。
  認為這篇文章對您有幫助嗎?請與更多人分享
  關(guān)注“進(jìn)口新品”查看技術(shù)干貨
  解決方案:網(wǎng)站優(yōu)化排名軟件有哪些,seo優(yōu)化必備的5種工具
  2019年哪些工具可以輔助SEO網(wǎng)站優(yōu)化?
  很多公司在做優(yōu)化的時(shí)候都想知道有哪些工具可以輔助優(yōu)化?這是每個(gè)seo都會(huì )遇到的問(wèn)題。哪些工具可以輔助優(yōu)化?網(wǎng)站 可以排名更好嗎?哪些工具可以經(jīng)常使用 什么?下面小編就為大家詳細講解一下。
  推薦幾款專(zhuān)業(yè)的SEO網(wǎng)站優(yōu)化工具?
  SEO工具是搜索引擎優(yōu)化的各種工具,如查詢(xún)工具、排名工具、流量分析軟件、站群軟件等,善用各種工具可以節省大量時(shí)間,讓SEO服務(wù)更輕松.
  1.站長(cháng)平臺
  
  1:百度站長(cháng)平臺:百度站長(cháng)工具提供Sitemap提交、死鏈接提交、網(wǎng)站安全檢測、URL優(yōu)化建議、百度索引查詢(xún)等功能。
  2:搜狗站長(cháng)平臺:搜狗站長(cháng)工具提供Sitemap提交、匹配網(wǎng)站logo、域名更改、爬蟲(chóng)壓力反饋、死鏈接提交、URL提交、收錄索引量和關(guān)鍵詞排名查詢(xún)等功能。
  3:360站長(cháng)平臺:360站長(cháng)平臺提供與上述兩個(gè)站長(cháng)平臺幾乎相同的功能,主要包括:數據提交、網(wǎng)站數據分析、網(wǎng)站保護和網(wǎng)站安全檢測和其他功能。
  2.SEO綜合查詢(xún)工具
  1:愛(ài)站:一個(gè)非常好用的SEO網(wǎng)站優(yōu)化綜合查詢(xún)工具,可用于查詢(xún)百度權重、親情鏈接、百度索引量、備案信息、關(guān)鍵詞挖掘等信息。
  2:站長(cháng)工具:站長(cháng)工具的功能和愛(ài)站差不多。這里值得一提的是,使用站長(cháng)工具和愛(ài)站工具查詢(xún)數據的結果有些不同。這是因為兩個(gè)工具的數據計算不同是正?,F象。
  3:5118:5118是SEO網(wǎng)站優(yōu)化師的必備工具,也是挖掘長(cháng)尾詞的最佳工具。通過(guò)此,您可以了解SEO數據的實(shí)時(shí)變化和關(guān)鍵詞排名的具體趨勢變化,指導關(guān)鍵詞的建設。
  拼多多的運營(yíng)工具有哪些(揭秘拼多多營(yíng)銷(xiāo)工具攻略)
  
  免費推廣工具有哪些(推廣工具內部情況綜合分析)
  有哪些網(wǎng)絡(luò )推廣軟件(好用工具分享)
  微信推廣軟件有哪些(微信推廣3款工具解析)
  常用的ui設計工具有哪些(最好用的7款ui設計工具)
  公眾號文章排版工具有哪些(最實(shí)用的3款排版工具)
  【本文標題及網(wǎng)址,轉載請注明出處】網(wǎng)站優(yōu)化排名軟件有哪些,SEO優(yōu)化必備的5個(gè)工具
  內容更新時(shí)間(UpDate):2022年11月18日星期五 查看全部

  解決方案:我所讀過(guò)的最好的一篇分布式技術(shù)文章
 ?。c(diǎn)擊上方公眾號快速關(guān)注)。
  資料來(lái)源:foreach_break,
  前言
  這是一份學(xué)習筆記。
  學(xué)習材料來(lái)自Jay Kreps的日志博客文章。
  原文很長(cháng),但我堅持閱讀,收獲頗豐,對 Jay 的技術(shù)能力、架構能力和對分布式系統的深刻理解印象深刻。同時(shí),他有點(diǎn)沾沾自喜,因為他的一些理解與周杰倫的觀(guān)點(diǎn)相吻合。
  Jay Kreps是前LinkedIn首席參謀工程師,Confluent現任聯(lián)合創(chuàng )始人兼首席執行官,以及Kafka和Samza的主要作者。
  所謂筆記,讀文章背,因為周杰倫哥自己在這一章里組織得太好了,他自己的科學(xué)素養和哲學(xué)素養也很高,所以他覺(jué)得很精彩的就不省略了。
  I. 信息來(lái)源
  日志:每個(gè)軟件工程師都應該知道的關(guān)于實(shí)時(shí)數據的統一抽象()
  2. 注意事項
  2.1 日志的值
  1)日志是以下系統的核心:
  2)日志可能與計算機一樣古老,是分布式數據系統和實(shí)時(shí)計算系統的核心。
  3)日志有很多名稱(chēng):
  4)不懂日志,就不能完全看懂
  它
  2.2 什么是日志?
  2.2.1 概述
  記錄的順序定義了時(shí)間等概念。
  因為越靠左,記錄越早。
  條目的序號作為一種時(shí)間戳的概念,以及記錄的順序作為時(shí)間的概念可能看起來(lái)很奇怪,但正如您很快就會(huì )發(fā)現的那樣,它可以很容易地將“時(shí)間”與任何特定的物理時(shí)鐘分離。
  日志與普通文件和表沒(méi)有太大區別。
  這樣,你可能會(huì )覺(jué)得日志這么簡(jiǎn)單,還有需要討論的嗎?
  其實(shí)日志的核心含義是:
  日志記錄發(fā)生了什么以及何時(shí)發(fā)生。
  而這個(gè)通常是分布式系統最核心的東西。
  請注意,這里有必要澄清幾個(gè)概念:
  2.2.2 數據庫中的日志
  Log的起源是未知的,就像發(fā)明二進(jìn)制查找的人一樣,很難意識到這項發(fā)明是一項發(fā)明。
  日志早在IBM的System R中就出現了。
  在數據庫中,當數據庫崩潰時(shí),您需要使各種數據結構和索引保持同步。
  為了確保原子性和持久性,數據庫需要在修改數據結構和索引之前記錄要修改的內容。
  因此,日志記錄何時(shí)發(fā)生某些事情,每個(gè)表和索引本身就是此歷史信息的映射。
  由于日志是立即持久的,因此在發(fā)生崩潰時(shí),它將成為還原其他持久結構的可靠來(lái)源。
  日志已經(jīng)從 ACID 功能的實(shí)現發(fā)展成為數據庫之間數據復制的一種方式。
  顯然,數據庫中發(fā)生的一系列數據變化已經(jīng)成為維持數據庫之間同步最需要的信息。
  Oracle,MySQL和PostgreSQL都收錄日志傳輸協(xié)議,該協(xié)議將部分日志發(fā)送到用于持久復制的從屬服務(wù)器。Oracle
  的XStreams和GoldenState使用日志作為通用數據訂閱機制,為非Oracle數據庫提供訂閱數據。
  MySQL和PostgreSQL提供了類(lèi)似的組件,這些組件是數據系統架構的核心。
  面向機器的日志不僅可以用于數據庫,還可以用于:
  2.2.3 分布式系統中的日志
  日志解決了分布式數據系統中的兩個(gè)重要問(wèn)題:
  1) 有序數據更改
  2) 數據分發(fā)
  所謂的狀態(tài)機復制原理:
  如果兩個(gè)確定性進(jìn)程,從相同的狀態(tài)開(kāi)始,以相同的順序,接收相同的輸入,那么它們將產(chǎn)生相同的輸出并以相同的狀態(tài)結束。
  確定性意味著(zhù)處理過(guò)程與時(shí)間無(wú)關(guān),并且處理結果不受其他輸入的影響。
  可以通過(guò)非確定性示例來(lái)理解:
  所謂狀態(tài)可以是機器上的任何數據,無(wú)論是在機器的內存中,還是處理完成后的磁盤(pán)上。值得注意的是,相同的
  輸入以相同的順序產(chǎn)生相同的結果,這就是為什么日志如此重要的原因,這是一個(gè)直觀(guān)的概念:如果你將相同的日志輸入兩個(gè)確定性程序,它們將產(chǎn)生相同的輸出。
  在分布式系統的構建中,認識到這一點(diǎn),可以使:
  讓所有機器做同樣的事情,協(xié)議是:
  構建分布式、一致的日志系統,為所有處理系統提供輸入。
  日志系統的作用是分散所有輸入流之上的不確定性,并確保處理相同輸入的所有復制節點(diǎn)同步。
  這種方法最好的一點(diǎn)是,您可以將索引日志的時(shí)間戳視為所有復制節點(diǎn)的時(shí)鐘:通過(guò)使用復制節點(diǎn)處理的日志
  中最大的時(shí)間戳作為復制節點(diǎn)的唯一 ID,時(shí)間戳與日志相結合可以唯一地表示節點(diǎn)的整個(gè)狀態(tài)。
  還有許多方法可以應用此方法:
  從理論上講,我們可以記錄一系列機器指令,或者調用的方法的名稱(chēng)和參數,只要數據處理過(guò)程的行為相同,這些過(guò)程就可以保證節點(diǎn)之間的一致性。
  玩數據庫的人通常以不同的方式處理邏輯日志和物理日志:
  對于分布式系統,通常有兩種方法來(lái)處理復制和數據處理:
  1) 狀態(tài)機模型(主動(dòng) – 主動(dòng))
  2) 主回模型(主動(dòng) – 被動(dòng))
  如下圖所示:
  為了理解上述兩種方法之間的區別,讓我們看一個(gè)簡(jiǎn)單的例子:
  現在,集群需要提供一個(gè)簡(jiǎn)單的服務(wù)來(lái)執行算術(shù)運算,例如加法和乘法。最初,維護一個(gè)數字,例如 0。
  上面的例子也說(shuō)明了為什么順序是復制節點(diǎn)之間一致性的關(guān)鍵因素,如果這些操作的順序被打亂,將獲得不同的結果。
  分布式日志,可以作為一些共識算法的數據結構:
  表示有關(guān)下一個(gè)值的一系列決策的日志。
  2.2.4 更新日志
  從數據庫的角度來(lái)看,記錄數據更改的一組更改日志和表是雙重且可互操作的。
  1) 基于記錄數據更改的日志,可以重構處于特定狀態(tài)的表(也可以是非關(guān)系存儲系統中帶有鍵的記錄)。
  2)相反,如果表發(fā)生變化,則可以在日志中計算更改。
  這正是您想要的準實(shí)時(shí)副本的秘密所在!
  這與版本控制的作用非常相似:管理分布式、并發(fā)、狀態(tài)更改。
  版本控制工具(用于維護反映更改的修補程序)本質(zhì)上是日志,您可以與簽出的分支快照進(jìn)行交互,該快照等效于數據庫中的表。您會(huì )發(fā)現復制在版本控制和分布式系統中都是基于日志的:更新版本時(shí),只需提取反映版本更改的修補程序并將其應用于當前分支快照。
  2.3 數據集成
  2.3.1 數據集成的含義數據
  集成是為組織中的所有服務(wù)和系統提供數據。
  事實(shí)上,數據的有效利用非常符合馬斯洛的需求層次。
  金字塔的底部是采集數據并將其集成到應用程序中(無(wú)論是實(shí)時(shí)計算引擎,文本文件還是Python腳本)。
  并且需要轉換這些數據,以保持易于閱讀和處理的統一、標準化和整潔的格式。
  一旦滿(mǎn)足了上述要求,就可以開(kāi)始考慮各種數據處理方法,如map-reduce或實(shí)時(shí)查詢(xún)系統。
  顯然,如果沒(méi)有可靠、完整的數據流,Hadoop 只是一個(gè)昂貴的、難以集成的加熱器(集群是耗電的嗎?)。
  相反,如果可以確保數據流可靠、可用且完整,則可以考慮更高級的游戲玩法、更好的數據模型以及一致、更易于理解的語(yǔ)義。
  然后,注意力可以轉移到可視化、報告、算法和預測(挖掘器、深度)上。
  2.3.2 數據集成的兩種復雜性
  事件事件
  數據記錄事件如何發(fā)生,而不僅僅是發(fā)生的情況,通常用作應用程序日志,因為它通常由應用程序系統寫(xiě)入。但這實(shí)際上混淆了日志的功能。
  事實(shí)上,谷歌的財富是由建立在(用戶(hù))點(diǎn)擊流和好惡(體驗)上的關(guān)聯(lián)管道產(chǎn)生的,點(diǎn)擊流和展示是事件。
  各種專(zhuān)業(yè)數據系統的爆炸式增長(cháng)
  為什么這些系統存在:
  顯然,將數據集成到這樣的系統中對于數據集成來(lái)說(shuō)是極其困難的。
  2.3.3 基于日志結構的數據流
  可以根據日志對每個(gè)邏輯數據源進(jìn)行建模。
  數據源可以是記錄事件(命中和 PV)的應用程序,也可以是接受更改的數據庫表。
  每個(gè)訂閱者都盡快從這些數據源生成的日志中獲取新記錄,將其應用于本地存儲系統,并改善其在日志中的讀取偏移。訂閱者可以是任何數據系統,例如緩存、Hadoop、另一個(gè)站點(diǎn)的數據庫或搜索引擎。
  登錄事實(shí)上,提供了一個(gè)邏輯時(shí)鐘,用于測量不同訂閱者
  的狀態(tài)以響應數據變化,因為這些訂閱者在日志中具有不同且獨立的讀取偏移量,這就像時(shí)間意義上的“時(shí)刻”。
  考慮這樣一個(gè)示例、數據庫和一些緩存服務(wù)器:
  
  日志提供了同步所有緩存服務(wù)器并推送它們所處的“時(shí)刻”的能力。
  假設我們寫(xiě)一個(gè)編號為 X 的日志,讀取來(lái)自緩存服務(wù)器
  的數據,為了不讀取舊數據,我們只需要確保在緩存服務(wù)器將數據(同步)復制到 X 位置之前我們不會(huì )從該緩存中讀取任何內容。
  此外,日志還提供了充當緩沖區的功能,以異步方式支持生產(chǎn)者和使用者的行為。
  支持異步的最關(guān)鍵原因之一是訂閱系統可能會(huì )崩潰,離線(xiàn)進(jìn)行維護,然后重新上線(xiàn),在這種情況下,每個(gè)訂閱者都按照自己的節奏使用數據。
  批處理系統(如 Hadoop 或數據倉庫)使用數據
  每小時(shí)或每天一次,而實(shí)時(shí)系統通常在幾秒鐘內消耗數據。
  數據源或日志對使用數據的訂閱者一無(wú)所知,因此需要在管道中無(wú)縫添加和刪除訂閱者。
  更重要的是,訂閱者只需要知道日志,不需要知道他們消費的數據來(lái)源,無(wú)論是RDBMS,Hadoop還是新流行的K-V數據庫。之所以討論日志,而不是消息系統,是因為不同的消息系統
  保證了不同的特性,而word消息系統很難完全準確地表達某種語(yǔ)義,因為消息系統更重要的是重定向消息。
  但是,日志可以理解為提供持久性保證和強有序語(yǔ)義的消息系統,這在通信系統中稱(chēng)為原子廣播。
  2.4 LinkedIn
  LinkedIn目前的主要系統包括(注:2013年):
  每個(gè)系統在其專(zhuān)業(yè)領(lǐng)域都提供專(zhuān)門(mén)的高級功能。
 ?。ㄟ@一段太長(cháng)太長(cháng)了,周杰倫哥很擅長(cháng),所以挑重點(diǎn)記??!
  1)引入數據流的概念是因為在Oracle數據庫中的表之上建立了抽象緩存層,為搜索引擎索引構建和社交圖譜更新提供擴展能力。
  2)為了更好的處理LinkedIn的一些推薦算法,我開(kāi)始構建Hadoop集群,但團隊在這方面的經(jīng)驗還不多,所以我走了不少彎路。
  3)一開(kāi)始,這只是一個(gè)粗略的想法,即將數據從Oracle數據倉庫中提取出來(lái)并將其扔到Hadoop中是可以的。結果發(fā)現:首先,從Oracle數據倉庫快速導出數據是一場(chǎng)噩夢(mèng);其次,也是更糟糕的是,數據倉庫中的一些數據沒(méi)有得到正確處理,導致Hadoop批處理任務(wù)無(wú)法按預期輸出結果,并且通過(guò)Hadoop批處理執行的任務(wù)通常是不可逆的,尤其是在報告出來(lái)之后。
  4)最后,團隊離開(kāi)數據倉庫,直接進(jìn)入數據庫和日志作為數據源。接下來(lái),建造了一個(gè)輪子:K-V 存儲(伏地魔)。
  5)即使是像數據復制這樣普通的工作也會(huì )占用團隊的大量時(shí)間來(lái)處理,更糟糕的是,一旦數據處理管道中存在一個(gè)點(diǎn),Hadoop立即變得浪費,因為無(wú)論算法在錯誤數據上運行多么出色,只有一個(gè)后果,那就是產(chǎn)生更多錯誤的數據。
  6)即使團隊在高度抽象上構建了一些東西,每個(gè)數據源也需要特定的配置,這是許多錯誤和失敗的根源。
  7)大量的程序員想要跟進(jìn),每個(gè)程序員都有大量的想法,集成這個(gè)系統,添加這個(gè)功能,集成這個(gè)功能,或者想要自定義數據源。
  8)周杰倫弟兄開(kāi)始意識到:
  首先,他們修建的管道雖然還很粗糙,但價(jià)值極高。即使解決數據在新系統(如Hadoop)中可用的問(wèn)題,也可以解鎖大量可能性。以前難以進(jìn)行的計算開(kāi)始成為可能。只需從其他系統解鎖數據并集成它們,即可輕松創(chuàng )建新產(chǎn)品和分析。其次,很明顯,可靠的數據加載
  需要更堅實(shí)的支持,如果可以捕獲所有結構,Hadoop數據加載可以完全自動(dòng)化,而無(wú)需添加新數據源或手動(dòng)修改數據的模式。數據會(huì )神奇地出現在HDFS中,當添加新的數據源時(shí),Hive的表會(huì )自動(dòng)自適應地生成相應的列。
  第三,數據覆蓋面遠遠不夠。很難處理許多新的數據源。
  9)為了解決添加新數據源后的數據加載問(wèn)題,團隊開(kāi)始了這樣的嘗試:
  很快,他們發(fā)現這行不通,因為發(fā)布和訂閱,生產(chǎn)和消費,數據流通常仍然是雙向的,這變成了O(n^2)問(wèn)題。
  所以,他們需要的是這樣的模型:
  每個(gè)使用者都需要與數據源隔離,理想情況下只與一個(gè)數據存儲庫交互,該存儲庫為他們提供對任意數據的訪(fǎng)問(wèn)權限。
  10)消息系統+日志=卡夫卡,卡夫卡誕生了。
  2.5 日志ETL與數據倉庫的關(guān)系
  2.5.1 數據倉庫
  1) 一個(gè)干凈、結構化、集成的數據存儲庫,用于分析。
  2)雖然這個(gè)想法很棒,但獲取數據的方式有點(diǎn)過(guò)時(shí)了:定期從數據庫中獲取數據并將其轉換為更易讀的格式。
  3)以前的數據倉庫問(wèn)題是干凈的數據和數據倉庫是高度耦合的。
  數據倉庫應該是一組查詢(xún)功能的集合,服務(wù)于報表、搜索、廣告熱分析,包括計數、聚合、過(guò)濾等操作,所以它應該是一個(gè)批處理系統。
  但是干凈數據與這種批處理系統的高度耦合意味著(zhù)這些數據不能被實(shí)時(shí)系統消費,例如搜索引擎索引,實(shí)時(shí)計算和實(shí)時(shí)監控系統等。
  2.5.2 ETL
  Jay認為ETL只做兩件事:
  1)數據提取和清理,從特定系統解鎖數據
  2)重構數據,以便可以通過(guò)數據倉庫進(jìn)行查詢(xún)。例如,更改數據類(lèi)型以適應關(guān)系數據庫的類(lèi)型,將架構轉換為星形或雪花圖案,或將其分解為面向列的存儲格式。
  但是將這兩件事結合在一起是一個(gè)大問(wèn)題,因為集成的、干凈的數據應該被其他實(shí)時(shí)系統、索引系統和低延遲處理系統使用。數據倉庫團隊
  負責采集和清理數據,但這些數據的生產(chǎn)者往往不知道數據倉庫團隊的數據處理需求,導致數據難以提取和清理。
  同時(shí),由于核心業(yè)務(wù)團隊對跟上公司其他部門(mén)的步伐不敏感,真正可以處理的數據覆蓋率很低,數據流很脆弱,很難快速響應變化。
  所以,一個(gè)更好的方法:
  如果要在干凈的數據集上做一些搜索、實(shí)時(shí)監控趨勢圖、實(shí)時(shí)告警,不宜使用原創(chuàng )數據倉庫或Hadoop集群作為基礎設施。更糟糕的是,ETL為數據倉庫構建的數據加載系統對其他(實(shí)時(shí))系統幾乎沒(méi)有用處。
  最好的模型是完成在數據發(fā)布者發(fā)布數據之前進(jìn)行數據
  清理過(guò)程,因為只有發(fā)布者最了解其數據的外觀(guān)。在此階段完成的所有操作都應該是令人滿(mǎn)意的無(wú)損和可逆的。
  所有豐富的語(yǔ)義或附加值的實(shí)時(shí)轉換都應在原創(chuàng )日志后處理之后進(jìn)行后處理,包括為事件數據建立會(huì )話(huà)或添加某些感興趣的字段。原創(chuàng )日志仍然可以單獨使用,但此類(lèi)實(shí)時(shí)應用程序也會(huì )派生新的參數化日志。
  最后,只有與特定目標系統相對應的數據聚合操作才應成為數據加載的一部分,例如轉換為星形或雪花圖案,以便在數據倉庫中進(jìn)行分析和報告。因為這個(gè)階段,就像傳統的ETL一樣,由于一個(gè)非常干凈和標準化的數據流,(帶日志)現在非常簡(jiǎn)單。
  2.6 日志文件和事件
  一
  以日志為核心的架構還有一個(gè)額外的好處,那就是易于實(shí)現無(wú)耦合、事件驅動(dòng)的系統。
  捕獲用戶(hù)活動(dòng)和系統變化的傳統方法是將這些信息寫(xiě)入文本日志,然后將其提取到數據倉庫或 Hadoop 集群中進(jìn)行聚合和處理,這類(lèi)似于前面描述的數據倉庫和 ETL 問(wèn)題:數據與數據倉庫高度耦合。
  在LinkedIn,它構建了一個(gè)基于kafka的事件數據處理系統。為各種操作定義了數百種事件類(lèi)型,從 PV、廣告展示、搜索到服務(wù)調用和應用程序異常。
  要了解上述事件驅動(dòng)系統的好處,請考慮一個(gè)簡(jiǎn)單的事件示例:
  在“工作機會(huì )”頁(yè)上,提供機會(huì )。此頁(yè)面應僅負責如何呈現機會(huì ),不應收錄太多其他邏輯。但是,您會(huì )發(fā)現在相當大的網(wǎng)站中執行此操作很容易涉及越來(lái)越多的與演示機會(huì )無(wú)關(guān)的邏輯。
  例如,我們要集成以下系統功能:
  1)我們需要將數據發(fā)送到Hadoop和數據倉庫進(jìn)行離線(xiàn)處理。
  2)我們需要計算頁(yè)面瀏覽量,以確保某些視圖不是用于抓取Web內容或任何東西。
  3) 我們需要匯總此頁(yè)面上的瀏覽信息,以顯示在業(yè)務(wù)機會(huì )發(fā)布商的分析頁(yè)面上。
  4)我們需要記錄一個(gè)用戶(hù)瀏覽這個(gè)頁(yè)面的歷史記錄,以確保我們?yōu)檫@個(gè)用戶(hù)提供任何適合這個(gè)用戶(hù)的工作機會(huì ),有價(jià)值和良好的體驗,而不是一遍又一遍地反復向這個(gè)用戶(hù)展示一個(gè)機會(huì )(想想只有老婆不在家的時(shí)候才能玩的游戲, 紅綠藍閃爍的特效,配上轟轟烈烈的DJ風(fēng)格舞曲,或是事業(yè)巔峰和穿短裙的女生的搖擺焦點(diǎn),再點(diǎn)擊發(fā)現是標題黨的廣告?。?。
  5)我們的推薦系統需要記錄此頁(yè)面的瀏覽歷史記錄,以正確跟蹤此工作機會(huì )的受歡迎程度。
  很快,僅顯示機會(huì )的頁(yè)面的邏輯變得復雜。當我們把這個(gè)機會(huì )也添加到移動(dòng)端時(shí),我們也不得不遷移邏輯,這增加了復雜性。訣竅是,在此頁(yè)面上工作的工程師需要了解其他系統,以確保正確集成上述功能。
  這只是一個(gè)非常簡(jiǎn)單的例子,在實(shí)踐中,情況只會(huì )變得更加復雜。
  事件驅動(dòng)可以使這變得容易。負責展示機會(huì )的頁(yè)面
  只需要展示機會(huì )并記錄一些與演示相關(guān)的因素,例如工作機會(huì )的屬性、查看頁(yè)面的人員以及其他有用的演示相關(guān)信息。頁(yè)面不需要維護其他系統的知識和知識,例如推薦系統、安全系統、機會(huì )發(fā)布者分析系統、數據倉庫等,所有這些系統只需要以訂閱者的身份訂閱事件,然后獨立處理,而提供機會(huì )的頁(yè)面不需要修改新的訂閱者或消費者加入。
  2.7 構建可擴展日志
  分離發(fā)布者和訂閱者并不是什么新鮮事,但日志系統很難確保多個(gè)訂閱者可以實(shí)時(shí)處理消息,同時(shí)確??蓴U展性。如果日志構建
  速度不快、開(kāi)銷(xiāo)低且可擴展,那么在此日志系統之上構建的所有好處都消失了。
  許多人可能認為日志記錄系統在分布式系統中是一項緩慢而昂貴的工作,并且僅用于處理元數據等信息,類(lèi)似于 ZooKeeper 更適合處理的內容。
  但是LinkedIn現在每天在kafka中處理600億次不同的消息寫(xiě)入(如果算上數據中心鏡像,則為數千億次寫(xiě)入)。
  周杰倫兄弟,他們是怎么做到的?
  1) 對日志進(jìn)行分區
  2) 通過(guò)批量讀取和寫(xiě)入優(yōu)化吞吐量
  3) 避免不必要的數據復制
  通過(guò)將日志切片為多個(gè)分區來(lái)提供可擴展性:
  1)每個(gè)分區都是有序日志,但分區之間沒(méi)有全局順序。
  2)將消息寫(xiě)入哪個(gè)分區完全由編寫(xiě)器控制,方法是根據某種類(lèi)型的鍵(例如user_id)對其進(jìn)行拆分。
  3)拆分允許在不協(xié)調分片的情況下執行日志的附加操作,同時(shí)保證系統的吞吐量與Kafka集群的大小呈線(xiàn)性相關(guān)。
  4)雖然沒(méi)有全局順序(實(shí)際上有成千上萬(wàn)的消費者或訂閱者,討論他們的全局順序通常沒(méi)有什么價(jià)值),但Kafka提供了一個(gè)保證,發(fā)送方以什么順序向一個(gè)分區發(fā)送消息,以及消息從這個(gè)分區傳遞的順序(以什么順序,以什么順序)。
  5)每個(gè)分區按照配置的編號進(jìn)行復制,如果一個(gè)領(lǐng)導節點(diǎn)掛起,其他節點(diǎn)將成為新的主節點(diǎn)。
  6)一個(gè)日志,就像文件系統一樣,線(xiàn)性讀寫(xiě)模式可以?xún)?yōu)化,這樣一個(gè)小的讀寫(xiě)日志就可以組成更大的、高吞吐量的操作??ǚ蚩ㄔ谶@件事上做得很艱難。批處理用于各種場(chǎng)景,例如客戶(hù)端向服務(wù)器發(fā)送數據、將數據寫(xiě)入磁盤(pán)、在服務(wù)器之間復制數據、向消費者傳輸數據、確認提交數據等。
  7)最后,Kafka對內存日志,磁盤(pán)日志和通過(guò)網(wǎng)絡(luò )發(fā)送的日志使用非常簡(jiǎn)單的二進(jìn)制格式,以方便使用各種優(yōu)化技術(shù),例如零拷貝數據傳輸。
  許多優(yōu)化技術(shù)結合在一起,允許您以磁盤(pán)或網(wǎng)絡(luò )可以提供的最大容量讀取和寫(xiě)入數據,即使內存已滿(mǎn)也是如此。
  2.8 日志和實(shí)時(shí)處理
  你認為周杰倫提供了一種如此漂亮的方法來(lái)復制數據并復制它嗎?
  你!錯!完成!日志是
  流式處理的另一種說(shuō)法,日志是流處理的核心。
  2.8.1 什么是流處理
 ???
  周杰倫哥認為:
  1)流處理是連續數據處理的基礎設施。
  2)流處理的計算模型,如MapReduce或其他分布式處理框架,只需要保證低延遲。
  3)批處理式數據采集模式導致批量式數據處理模式。
  4)連續的數據采集模式,導致連續的數據處理模式。
  5)杰伊哥講解美國人口普查方式解釋批處理。
  在LinkedIn,活動(dòng)數據和數據庫更改都是連續的。
  
  批處理每天處理數據,類(lèi)似于連續計算,將窗口設置為一天。
  因此,流處理是一個(gè)這樣的過(guò)程:
  6)在處理數據時(shí),有時(shí)間的概念,不需要維護數據的靜態(tài)快照,因此結果可以以用戶(hù)定義的頻率輸出,而無(wú)需等待數據集達到某個(gè)“結束”狀態(tài)。
  7)從這個(gè)意義上說(shuō),流處理是批處理的泛化,鑒于實(shí)時(shí)數據的普及,這是一個(gè)極其重要的泛化。
  8)許多商業(yè)公司無(wú)法構建流處理引擎,通常是因為他們無(wú)法構建流數據采集引擎。
  9) 流處理彌合了實(shí)時(shí)響應服務(wù)和離線(xiàn)批處理基礎設施之間的差距。
  10)日志系統,解決了流處理模式下的許多關(guān)鍵問(wèn)題,其中最大的問(wèn)題是如何在實(shí)時(shí)多訂閱者模式下提供可用數據(流數據采集)。
  2.9 數據流圖
  關(guān)于流處理最有趣的事情是它擴展了源的概念。
  無(wú)論是日志、源還是事件,逐行數據記錄都來(lái)自應用程序的活動(dòng)。
  但是,流式處理還允許我們處理來(lái)自其他源的數據,這些數據與提供給消費者的原創(chuàng )數據一樣好,并且這些派生源可以收錄任何級別的復雜性。
  流處理任務(wù)應如下所示:從日志中讀取數據并將輸出寫(xiě)入日志或其他系統。
  作為輸入和輸出日志,進(jìn)程本身和其他進(jìn)程連接起來(lái)形成一個(gè)圖。
  事實(shí)上,以日志為中心的系統允許您從組織捕獲、轉換和流式傳輸數據,作為一系列日志和寫(xiě)入日志處理的組合。
  流處理程序不必很高:它可以是一個(gè)進(jìn)程或一組進(jìn)程,但可以提供一些額外的基礎結構和支持,以便更輕松地管理用于處理的代碼。
  引入日志有兩個(gè)目的:
  1)確保數據集可以支持多個(gè)訂閱者模式并且有序。
  2)可以用作應用程序的緩沖區。這一點(diǎn)很重要,因為在異步數據處理過(guò)程中,如果上游生產(chǎn)者更快地生成數據并且使用者無(wú)法跟上,則要么阻塞該過(guò)程,要么引入緩沖區,要么丟棄數據。
  丟棄數據似乎不是一個(gè)好的選擇,阻塞處理進(jìn)程會(huì )導致處理進(jìn)程在所有數據流的處理圖中卡住.log另一方面是一個(gè)大的、超大的、非常大的緩沖區,它允許重啟處理進(jìn)程,這樣如果一個(gè)進(jìn)程失敗, 它不會(huì )影響流處理圖中的其他進(jìn)程。這對于大型組織擴展數據流至關(guān)重要,因為不同的團隊有不同的處理任務(wù),顯然整個(gè)流處理過(guò)程不會(huì )因為一個(gè)任務(wù)中的錯誤而停滯不前。
  Storm 和 Samza 就是這樣的流處理引擎,它們都可以使用 Kafka 或其他類(lèi)似的系統作為它們的日志系統。
 ?。ㄗⅲ褐芙軅惛绺缤春返?,卡夫卡在前,三輪在后。
  2.10 有狀態(tài)實(shí)時(shí)處理許多流處理
  引擎是無(wú)狀態(tài)的,一次一條記錄,但許多用例需要在一定的時(shí)間窗口內進(jìn)行復雜的計數、聚合和聯(lián)接操作才能進(jìn)行流處理。
  例如,在點(diǎn)擊流中,聯(lián)接用戶(hù)信息。
  然后,此用例需要狀態(tài)支持。在處理數據的地方,需要維護特定數據的狀態(tài)。
  問(wèn)題是,在處理器可能掛斷的情況下,如何保持正確?
  在內存中維護狀態(tài)可能是最簡(jiǎn)單的,但它不會(huì )承受崩潰。
  如果狀態(tài)僅在某個(gè)時(shí)間窗口內保持,則當發(fā)生掛起或故障時(shí),則可以將處理直接重放回窗口的開(kāi)頭,但如果窗口長(cháng)達 1 小時(shí),則可能不起作用。
  另一種簡(jiǎn)單的解決方案是將狀態(tài)存儲在遠程存儲系統或數據庫中,但這會(huì )丟失數據的局部性并產(chǎn)生大量的網(wǎng)絡(luò )往返。
  回想一下上面提到的數據庫中表和日志的雙重性。
  可以使用本地存儲或索引來(lái)維護狀態(tài)的流處理組件:
  通過(guò)記錄有關(guān)本地索引的更改日志,它用于在崩潰后還原狀態(tài)。實(shí)際上,此機制還揭示了一種通用狀態(tài),該狀態(tài)可以存儲為任意索引類(lèi)型,并與輸入流同時(shí)進(jìn)行共分區。
  當處理過(guò)程崩潰時(shí),它可以從更改日志中恢復索引,更改日志充當本地狀態(tài)基于時(shí)間備份的某種增量記錄的轉換器。
  這種機制也提供了一個(gè)非常優(yōu)雅的能力:進(jìn)程本身的狀態(tài)也可以記錄為日志,顯然其他進(jìn)程可以訂閱這個(gè)狀態(tài)。
  結合數據庫中的日志技術(shù),對于數據集成的場(chǎng)景,你經(jīng)??梢宰龇浅姶蟮氖虑椋?br />   通過(guò)從數據庫中提取日志并在各種流處理系統中為它們編制索引,可以聯(lián)接不同的事件流。
  2.11 日志合并
  顯然,不可能使用日志來(lái)記錄全職和全職狀態(tài)變化信息。
  Kafka 使用日志合并或日志垃圾回收技術(shù):
  1) 對于事件數據,Kafka 只保留一個(gè)時(shí)間窗口(可按時(shí)間配置為天或按空間配置)。
  2)對于鍵控更新,Kafka使用壓縮技術(shù)。這種類(lèi)型的日志可用于通過(guò)另一個(gè)系統中的重放技術(shù)重建源系統的狀態(tài)。
  如果全時(shí)保存日志,隨著(zhù)時(shí)間的推移,數據會(huì )越來(lái)越大,重放過(guò)程也會(huì )越來(lái)越長(cháng)。
  Kafka 不是簡(jiǎn)單地丟棄舊的日志信息,而是使用合并方法來(lái)丟棄過(guò)時(shí)的記錄,例如消息的主鍵最近是否更新。
  2.12 系統構建
  2.12.1 分布式系統
  日志,在數據流系統和分布式數據庫的數據集成中所扮演的角色是相同的:
  您可以將組織中的應用程序和數據流視為單個(gè)分布式數據庫。
  將面向查詢(xún)的獨立系統(如 Redis、SOLR、Hive 表等)視為特殊的數據頂級索引。
  將 Storm 和 Samza 等流處理系統視為精心設計的觸發(fā)器或物化視圖機制。
  各種數據系統,爆發(fā)式涌現,其實(shí)這種復雜性早已存在。在關(guān)系數據庫
  的鼎盛時(shí)期,公司或組織的光學(xué)關(guān)系數據庫有很多種。顯然,不可能
  把所有東西都扔到Hadoop集群中,并期望它能解決所有問(wèn)題。那么,如何構建一個(gè)好的系統,可能是這樣的:
  要構建一個(gè)分布式系統,每個(gè)組件都是一個(gè)小集群,每個(gè)集群可能無(wú)法提供完整的安全性、性能隔離或良好的可擴展性,但每個(gè)問(wèn)題都可以(專(zhuān)業(yè)地)解決。
  Jay認為,各種系統之所以爆炸式增長(cháng),是因為構建一個(gè)強大的分布式系統非常困難。如果將用例限制為查詢(xún)等簡(jiǎn)單場(chǎng)景,則每個(gè)系統都有足夠的能力來(lái)解決問(wèn)題,但很難集成這些系統。
  杰伊弟兄認為,未來(lái)構建系統有三種可能:
  1)維持現狀。在這種情況下,數據集成仍然是最大的問(wèn)題,因此外部日志系統很重要(kafka?。?br />   2)一個(gè)強大的(關(guān)系數據庫,如輝煌的日子)系統似乎不太可能解決所有問(wèn)題。
  3)新一代系統大多是開(kāi)源的,這揭示了第三種可能:數據基礎設施可以離散化為一組服務(wù),以及面向應用的系統API,每個(gè)都不完整,但可以專(zhuān)業(yè)解決專(zhuān)門(mén)的問(wèn)題,其實(shí)現有的Java技術(shù)??梢?jiàn)一斑:
  從某個(gè)
  從這個(gè)角度來(lái)看,構建這樣的分布式系統就像某個(gè)版本的樂(lè )高。這顯然與更關(guān)心 API 的最終用戶(hù)沒(méi)有太大關(guān)系,但它揭示了構建健壯系統并保持簡(jiǎn)單性的途徑:
  顯然,如果構建分布式系統的時(shí)間從幾年下降到幾周,構建大型獨立系統的復雜性就會(huì )消失,而這肯定是因為出現了更可靠和靈活的“構建塊”。
  2.12.2 登錄在系統建設中的作用
  如果系統受外部日志系統支持,
  那么每個(gè)獨立的系統都可以通過(guò)共享一個(gè)日志來(lái)降低自身的復雜性,Jay Ge認為日志的作用是:
  1)處理數據一致性問(wèn)題??梢酝ㄟ^(guò)序列化節點(diǎn)上的并發(fā)操作來(lái)實(shí)現即時(shí)和最終一致性。
  2) 提供節點(diǎn)間的數據復制。
  3)提供“提交”的語(yǔ)義。例如,如果您認為寫(xiě)入操作不會(huì )丟失,則為操作確認。
  4) 提供外部系統可以訂閱的源。
  5) 提供在節點(diǎn)因故障而丟失數據時(shí)恢復或重建新復制節點(diǎn)的功能。
  6) 處理節點(diǎn)之間的負載均衡。
  以上可能是完整分布式系統中應該提供的大多數功能(Jay 確實(shí)喜歡 Log!剩下的就是客戶(hù)端 API,構建索引等內容(如全文索引)需要獲取所有分區,而針對主鍵的查詢(xún)只需要提取分區中的數據。
 ?。鞘O碌木驼疹櫤昧?,周杰倫哥哥!
  該系統可以分為兩個(gè)邏輯組件(這種強大的理解和力量):
  1) 日志層
  2) 服務(wù)層
  日志層以序列化和有序的方式捕獲狀態(tài)更改,而服務(wù)層存儲外部查詢(xún)所需的索引,例如,K-V 存儲可能需要 B 樹(shù)和穩定索引,而搜索服務(wù)需要倒排索引。
  寫(xiě)入操作可以直接輸入到日志層中,也可以通過(guò)服務(wù)層代理。寫(xiě)入日志會(huì )產(chǎn)生邏輯時(shí)間戳(日志索引),例如數字 ID,如果系統已分區,則服務(wù)層和日志層將具有相同的分區(但它們各自的機器編號可能不同)。
  服務(wù)層訂閱日志層,并在以
  最快的速度順序存儲日志,并將數據和狀態(tài)變化同步到自己的本地索引中。
  客戶(hù)端將獲得讀寫(xiě)語(yǔ)義:
  通過(guò)攜帶寫(xiě)入任一節點(diǎn)(服務(wù)節點(diǎn))的時(shí)間時(shí)間戳Layer 接收此查詢(xún),將時(shí)間戳
  與其本地索引進(jìn)行比較,如有必要,為了防止返回過(guò)期的舊數據,請推遲請求的執行,直到此服務(wù)節點(diǎn)的索引同步跟上時(shí)間戳。
  服務(wù)層中的節點(diǎn)可能需要也可能不需要知道領(lǐng)導者的概念。在許多簡(jiǎn)單的用例中,服務(wù)層無(wú)法構建領(lǐng)導節點(diǎn),因為日志是事實(shí)的來(lái)源。
  還有一個(gè)問(wèn)題是如何處理節點(diǎn)故障后的恢復。這可以通過(guò)在日志中保留固定大小的時(shí)間窗口同時(shí)維護數據的快照來(lái)完成。您還可以讓 Log 保留數據的完整備份,并使用日志合并技術(shù)完成 Log 本身的垃圾回收。這種方法將服務(wù)層的大部分復雜性轉移到日志層,因為服務(wù)層是特定于系統的,并且日志層可以是通用的。
  基于日志系統,可以提供一套完整的API供開(kāi)發(fā)和使用,可以作為其他系統的ETL數據源,供其他系統訂閱。
  全棧 ! :
  顯然,以日志為核心的分布式系統立即成為可以為其他系統提供數據加載支持和數據流處理的角色。同樣,流處理系統可以同時(shí)使用多個(gè)數據流,并通過(guò)索引這些數據流然后輸出它們來(lái)向外部世界提供服務(wù)。系統基于
  日志層和服務(wù)層構建,使查詢(xún)相關(guān)因素與系統的可用性和一致性脫鉤。
  也許很多人認為在日志中維護數據的單獨備份,尤其是制作數據的完整副本,太浪費和奢侈,但事實(shí)并非如此:
  1)LinkedIn的Kafka生產(chǎn)集群每個(gè)數據中心維護75TB的數據,應用集群比Kafka集群需要更高的存儲空間和存儲條件(SSD+更多內存)。
  2)全文搜索索引最好全部加載到內存中,日志可以便宜使用,大容量磁盤(pán)因為它們是線(xiàn)性讀寫(xiě)的。
  3) 由于 Kafka 集群實(shí)際上以多訂閱者模型運行,多個(gè)系統使用數據,因此日志集群的開(kāi)銷(xiāo)被攤銷(xiāo)。
  4)由于所有這些原因,外部日志系統(kafka或類(lèi)似系統)的開(kāi)銷(xiāo)變得非常小。
  2.13 結論
  最后,周杰倫哥不僅大方地留下了大量有價(jià)值的學(xué)術(shù)和工程論文和參考鏈接,還虛心留下了這樣一句話(huà):
  如果你做到了這一步,你就知道我對日志的大部分了解。
  認為這篇文章對您有幫助嗎?請與更多人分享
  關(guān)注“進(jìn)口新品”查看技術(shù)干貨
  解決方案:網(wǎng)站優(yōu)化排名軟件有哪些,seo優(yōu)化必備的5種工具
  2019年哪些工具可以輔助SEO網(wǎng)站優(yōu)化?
  很多公司在做優(yōu)化的時(shí)候都想知道有哪些工具可以輔助優(yōu)化?這是每個(gè)seo都會(huì )遇到的問(wèn)題。哪些工具可以輔助優(yōu)化?網(wǎng)站 可以排名更好嗎?哪些工具可以經(jīng)常使用 什么?下面小編就為大家詳細講解一下。
  推薦幾款專(zhuān)業(yè)的SEO網(wǎng)站優(yōu)化工具?
  SEO工具是搜索引擎優(yōu)化的各種工具,如查詢(xún)工具、排名工具、流量分析軟件、站群軟件等,善用各種工具可以節省大量時(shí)間,讓SEO服務(wù)更輕松.
  1.站長(cháng)平臺
  
  1:百度站長(cháng)平臺:百度站長(cháng)工具提供Sitemap提交、死鏈接提交、網(wǎng)站安全檢測、URL優(yōu)化建議、百度索引查詢(xún)等功能。
  2:搜狗站長(cháng)平臺:搜狗站長(cháng)工具提供Sitemap提交、匹配網(wǎng)站logo、域名更改、爬蟲(chóng)壓力反饋、死鏈接提交、URL提交、收錄索引量和關(guān)鍵詞排名查詢(xún)等功能。
  3:360站長(cháng)平臺:360站長(cháng)平臺提供與上述兩個(gè)站長(cháng)平臺幾乎相同的功能,主要包括:數據提交、網(wǎng)站數據分析、網(wǎng)站保護和網(wǎng)站安全檢測和其他功能。
  2.SEO綜合查詢(xún)工具
  1:愛(ài)站:一個(gè)非常好用的SEO網(wǎng)站優(yōu)化綜合查詢(xún)工具,可用于查詢(xún)百度權重、親情鏈接、百度索引量、備案信息、關(guān)鍵詞挖掘等信息。
  2:站長(cháng)工具:站長(cháng)工具的功能和愛(ài)站差不多。這里值得一提的是,使用站長(cháng)工具和愛(ài)站工具查詢(xún)數據的結果有些不同。這是因為兩個(gè)工具的數據計算不同是正?,F象。
  3:5118:5118是SEO網(wǎng)站優(yōu)化師的必備工具,也是挖掘長(cháng)尾詞的最佳工具。通過(guò)此,您可以了解SEO數據的實(shí)時(shí)變化和關(guān)鍵詞排名的具體趨勢變化,指導關(guān)鍵詞的建設。
  拼多多的運營(yíng)工具有哪些(揭秘拼多多營(yíng)銷(xiāo)工具攻略)
  
  免費推廣工具有哪些(推廣工具內部情況綜合分析)
  有哪些網(wǎng)絡(luò )推廣軟件(好用工具分享)
  微信推廣軟件有哪些(微信推廣3款工具解析)
  常用的ui設計工具有哪些(最好用的7款ui設計工具)
  公眾號文章排版工具有哪些(最實(shí)用的3款排版工具)
  【本文標題及網(wǎng)址,轉載請注明出處】網(wǎng)站優(yōu)化排名軟件有哪些,SEO優(yōu)化必備的5個(gè)工具
  內容更新時(shí)間(UpDate):2022年11月18日星期五

解決方案:opencart選項庫存,magento2操作培訓

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-11-17 17:53 ? 來(lái)自相關(guān)話(huà)題

  解決方案:opencart選項庫存,magento2操作培訓
  Magento 模板:
  Magento 模板有很多,包括付費和免費,這里有幾個(gè)免費模板:F2、TitanyShop Katie、VES Dream、HandyStore、VESBAKEROP、Ebajes、HelloWired 等。
  Magento 功能
  
  1、強大的產(chǎn)品屬性組合。它可以支持任何類(lèi)型的產(chǎn)品,無(wú)論你是賣(mài)服裝、電器還是家具,Magento都可以完美支持產(chǎn)品的所有屬性,并且可以靈活修改和管理。
  2. 購物車(chē)價(jià)格規則。完整的邏輯關(guān)系處理,可以創(chuàng )建任意的優(yōu)惠方式,讓您輕松制定促銷(xiāo)方案。
  3.靈活的模板系統。允許您一鍵切換模板。動(dòng)動(dòng)手指即可更改所有 網(wǎng)站 頁(yè)面的樣式,包括電子郵件營(yíng)銷(xiāo)樣式。
  4.多店系統。它允許您配置多個(gè)在線(xiàn)商店和多個(gè)域名,但使用統一的管理控制臺來(lái)節省您的管理時(shí)間和成本。
  
  5.完善的插件系統??梢造`活地為系統增減功能。無(wú)需修改現有代碼,只需安裝相應功能的插件即可實(shí)現。大大降低了新功能復雜的開(kāi)發(fā)成本。
  6.安全加密。Magento支持前后臺數據SSL加密傳輸,支持后臺權限分級控制,確保您的數據安全。
  7. 企業(yè)應用集成。Magento 的WebService 開(kāi)放API 系統可以與您企業(yè)的其他系統無(wú)縫集成。無(wú)論是ERP還是CRM,Magento都能保證數據的同步性和準確性,最大限度地提高您企業(yè)應用的效率。
  通用解決方案:sdk
  前言
  埋點(diǎn)一般可以分為客戶(hù)端埋點(diǎn)和后端埋點(diǎn)。因為客戶(hù)端埋點(diǎn)更貼近業(yè)務(wù),更直觀(guān),所以稱(chēng)為市面上主流的數據采集方式。對于iOS端的埋點(diǎn),目前市面上主流的代碼埋點(diǎn)和全埋點(diǎn)兩種方案。其中,代碼嵌入點(diǎn)是顯式調用數據采集SDK提供的接口給采集數據,在采集能力上有比較大的優(yōu)勢,但需要額外開(kāi)發(fā)和易用性相對欠缺;全埋點(diǎn)無(wú)需額外編寫(xiě)代碼,使用方便快捷,但采集能力不足,兼容性問(wèn)題較多。兩種方案并無(wú)優(yōu)劣之分,各有各的適用場(chǎng)景。根據市場(chǎng)需求,強烈推薦兩種方案綜合使用。
  數據分析的一般流程是:
  ![image-243141](/Users/renwei/Library/Application Support/typora-user-images/image-243141.png)
  因此,數據采集是分析和運行的基本來(lái)源。
  一、數據采集SDK簡(jiǎn)介
  Data采集 SDK一般需要收錄兩個(gè)基本功能:
  1. 通過(guò)埋點(diǎn)采集采集數據
  2. 將 采集 數據傳輸到指定的服務(wù)器。
  
  主流的埋葬方式包括三種:
  1. 代碼嵌入:應用集成嵌入SDK后,在程序啟動(dòng)時(shí)初始化嵌入SDK,然后在觸發(fā)事件時(shí)調用嵌入SDK提供的方法觸發(fā)事件。
  2. 全埋點(diǎn):無(wú)需編寫(xiě)應用程序或僅需編寫(xiě)少量代碼,即可預先自動(dòng)采集大部分用戶(hù)行為數據,然后根據實(shí)際業(yè)務(wù)分析需求篩選出需要的數據進(jìn)行分析。
  3. 可視化埋點(diǎn):在產(chǎn)品界面中以可視化的方式進(jìn)行篩選,形成可視化的全埋點(diǎn)事件。
  2.搭建SDK框架
  1. 創(chuàng )建 Cocoa Touch 框架
  第一步:?jiǎn)?dòng)X(jué)code創(chuàng )建項目,雙擊Framework &amp; library欄下的Framework項。
  ![image-208466](/Users/renwei/Library/Application Support/typora-user-images/image-208466.png)
  第二步:填寫(xiě)Product Name相關(guān)信息,然后點(diǎn)擊Next按鈕,選擇SensorsSDK Project的存放位置,點(diǎn)擊Create按鈕,Xcode會(huì )打開(kāi)創(chuàng )建好的項目。
  
  ![image-208847](/Users/renwei/Library/Application Support/typora-user-images/image-208847.png)
  2.新工作區
  第一步:依次點(diǎn)擊File -&gt; New -&gt; Workspace(或者使用快捷鍵Control + Command -&gt; N),會(huì )出現如下彈框,將Workspace名稱(chēng)填寫(xiě)為SensorsSDK,點(diǎn)擊保存即可SensorsSDK 項目的根目錄。然后單擊保存按鈕,Xcode 將打開(kāi) SensorsSDK 工作區窗口。
  ![image-216510](/Users/renwei/Library/Application Support/typora-user-images/image-216510.png)
  第二步:在當前的Sensors Workspace窗口中,將SensorsSDK Project添加到SensorsSDK Workspace中。(在 SensorsSDK 工作區窗口中單擊文件 -&gt; 將文件添加到“SensorsSDK”,或使用 Option + Command + A 快捷方式)。
  ![image-239059](/Users/renwei/Library/Application Support/typora-user-images/image-239059.png)
  此時(shí)SensorsSDK Workspace的目錄結構如圖:
  ![image-227277](/Users/renwei/Library/Application Support/typora-user-images/image-227277.png)
  3.新建一個(gè)demo工程 查看全部

  解決方案:opencart選項庫存,magento2操作培訓
  Magento 模板:
  Magento 模板有很多,包括付費和免費,這里有幾個(gè)免費模板:F2、TitanyShop Katie、VES Dream、HandyStore、VESBAKEROP、Ebajes、HelloWired 等。
  Magento 功能
  
  1、強大的產(chǎn)品屬性組合。它可以支持任何類(lèi)型的產(chǎn)品,無(wú)論你是賣(mài)服裝、電器還是家具,Magento都可以完美支持產(chǎn)品的所有屬性,并且可以靈活修改和管理。
  2. 購物車(chē)價(jià)格規則。完整的邏輯關(guān)系處理,可以創(chuàng )建任意的優(yōu)惠方式,讓您輕松制定促銷(xiāo)方案。
  3.靈活的模板系統。允許您一鍵切換模板。動(dòng)動(dòng)手指即可更改所有 網(wǎng)站 頁(yè)面的樣式,包括電子郵件營(yíng)銷(xiāo)樣式。
  4.多店系統。它允許您配置多個(gè)在線(xiàn)商店和多個(gè)域名,但使用統一的管理控制臺來(lái)節省您的管理時(shí)間和成本。
  
  5.完善的插件系統??梢造`活地為系統增減功能。無(wú)需修改現有代碼,只需安裝相應功能的插件即可實(shí)現。大大降低了新功能復雜的開(kāi)發(fā)成本。
  6.安全加密。Magento支持前后臺數據SSL加密傳輸,支持后臺權限分級控制,確保您的數據安全。
  7. 企業(yè)應用集成。Magento 的WebService 開(kāi)放API 系統可以與您企業(yè)的其他系統無(wú)縫集成。無(wú)論是ERP還是CRM,Magento都能保證數據的同步性和準確性,最大限度地提高您企業(yè)應用的效率。
  通用解決方案:sdk
  前言
  埋點(diǎn)一般可以分為客戶(hù)端埋點(diǎn)和后端埋點(diǎn)。因為客戶(hù)端埋點(diǎn)更貼近業(yè)務(wù),更直觀(guān),所以稱(chēng)為市面上主流的數據采集方式。對于iOS端的埋點(diǎn),目前市面上主流的代碼埋點(diǎn)和全埋點(diǎn)兩種方案。其中,代碼嵌入點(diǎn)是顯式調用數據采集SDK提供的接口給采集數據,在采集能力上有比較大的優(yōu)勢,但需要額外開(kāi)發(fā)和易用性相對欠缺;全埋點(diǎn)無(wú)需額外編寫(xiě)代碼,使用方便快捷,但采集能力不足,兼容性問(wèn)題較多。兩種方案并無(wú)優(yōu)劣之分,各有各的適用場(chǎng)景。根據市場(chǎng)需求,強烈推薦兩種方案綜合使用。
  數據分析的一般流程是:
  ![image-243141](/Users/renwei/Library/Application Support/typora-user-images/image-243141.png)
  因此,數據采集是分析和運行的基本來(lái)源。
  一、數據采集SDK簡(jiǎn)介
  Data采集 SDK一般需要收錄兩個(gè)基本功能:
  1. 通過(guò)埋點(diǎn)采集采集數據
  2. 將 采集 數據傳輸到指定的服務(wù)器。
  
  主流的埋葬方式包括三種:
  1. 代碼嵌入:應用集成嵌入SDK后,在程序啟動(dòng)時(shí)初始化嵌入SDK,然后在觸發(fā)事件時(shí)調用嵌入SDK提供的方法觸發(fā)事件。
  2. 全埋點(diǎn):無(wú)需編寫(xiě)應用程序或僅需編寫(xiě)少量代碼,即可預先自動(dòng)采集大部分用戶(hù)行為數據,然后根據實(shí)際業(yè)務(wù)分析需求篩選出需要的數據進(jìn)行分析。
  3. 可視化埋點(diǎn):在產(chǎn)品界面中以可視化的方式進(jìn)行篩選,形成可視化的全埋點(diǎn)事件。
  2.搭建SDK框架
  1. 創(chuàng )建 Cocoa Touch 框架
  第一步:?jiǎn)?dòng)X(jué)code創(chuàng )建項目,雙擊Framework &amp; library欄下的Framework項。
  ![image-208466](/Users/renwei/Library/Application Support/typora-user-images/image-208466.png)
  第二步:填寫(xiě)Product Name相關(guān)信息,然后點(diǎn)擊Next按鈕,選擇SensorsSDK Project的存放位置,點(diǎn)擊Create按鈕,Xcode會(huì )打開(kāi)創(chuàng )建好的項目。
  
  ![image-208847](/Users/renwei/Library/Application Support/typora-user-images/image-208847.png)
  2.新工作區
  第一步:依次點(diǎn)擊File -&gt; New -&gt; Workspace(或者使用快捷鍵Control + Command -&gt; N),會(huì )出現如下彈框,將Workspace名稱(chēng)填寫(xiě)為SensorsSDK,點(diǎn)擊保存即可SensorsSDK 項目的根目錄。然后單擊保存按鈕,Xcode 將打開(kāi) SensorsSDK 工作區窗口。
  ![image-216510](/Users/renwei/Library/Application Support/typora-user-images/image-216510.png)
  第二步:在當前的Sensors Workspace窗口中,將SensorsSDK Project添加到SensorsSDK Workspace中。(在 SensorsSDK 工作區窗口中單擊文件 -&gt; 將文件添加到“SensorsSDK”,或使用 Option + Command + A 快捷方式)。
  ![image-239059](/Users/renwei/Library/Application Support/typora-user-images/image-239059.png)
  此時(shí)SensorsSDK Workspace的目錄結構如圖:
  ![image-227277](/Users/renwei/Library/Application Support/typora-user-images/image-227277.png)
  3.新建一個(gè)demo工程

解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 93 次瀏覽 ? 2022-11-17 15:43 ? 來(lái)自相關(guān)話(huà)題

  解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具
  文章首發(fā)于微信公眾號“GitHub黑板報”,歡迎大家關(guān)注。打開(kāi)微信,使用“搜索”,搜索“GitHub Blackboard News”,即可關(guān)注。
  大家好,我是章魚(yú)貓。
  
  我們每天都有大量的靜態(tài)數據,格式種類(lèi)繁多,excel、csv、json、sqlite等,如果數據量不大,用默認的軟件打開(kāi)是沒(méi)有問(wèn)題的。但是只要數據量稍大一些,比如excel中幾萬(wàn)條數據,用軟件打開(kāi)就會(huì )很慢,尤其是有時(shí)候需要做一些復雜的查詢(xún)操作。還有一個(gè)不方便的地方就是,如果你想把這些靜態(tài)數據開(kāi)放給他人,或者自己開(kāi)發(fā)一個(gè)前端展示網(wǎng)頁(yè),你需要為這些數據提供一個(gè)暴露的API。單獨開(kāi)發(fā)費時(shí)費力。
  今天要推薦的一個(gè)工具roapi,可以快速為靜態(tài)數據生成可讀性強的開(kāi)放API。其中,API查詢(xún)形式支持多種類(lèi)型,如rest API、SQL查詢(xún)、GraphQL等。下圖是工具roapi的整體交互流程圖。
  roapi工具主要分為四個(gè)部分,分別是查詢(xún)層、查詢(xún)計劃執行層、數據層和數據返回層。大致過(guò)程是前端查詢(xún)層會(huì )通過(guò)不同的查詢(xún)方式在查詢(xún)計劃執行層生成不同的執行計劃,最終對數據執行查詢(xún)。將不同的數據格式統一抽象成單獨的數據抽象層,以屏蔽不同數據格式的差異。
  
  使用 pip install roapi-http 安裝并開(kāi)始使用。下圖是具體的使用方法,可以說(shuō)是非常簡(jiǎn)單方便了。
  有關(guān)更多項目詳細信息,請參閱下面的鏈接。
  開(kāi)源項目地址:
  事實(shí):帆軟填報增加記錄提交成功后沒(méi)有_報表工具不可或缺的數據填報功能
  【概括】
  在實(shí)際業(yè)務(wù)場(chǎng)景中,報表工具不僅僅是用來(lái)展示數據,還可以滿(mǎn)足用戶(hù)各種數據填寫(xiě)需求。潤干報表工具的數據填寫(xiě)功能更加強大:
  1.不僅支持演示,還支持數據錄入。
  2.數據錄入可獨立來(lái)去,來(lái)去自如。
  3、網(wǎng)頁(yè)錄入可實(shí)現數據合法性校驗和自動(dòng)計算。
  4.結合集算器,可錄入任何數據源。
  去甘學(xué)院了解一下:報表工具不可或缺的數據填充功能
  復制摘要
  BI軟件市場(chǎng)越來(lái)越熱鬧,但這也給軟件用戶(hù)帶來(lái)了“選擇恐懼癥”。在看似功能相似的情況下,用戶(hù)會(huì )把目光轉向哪個(gè)軟件更酷、更方便、更容易上手。但其實(shí)BI系統中需要的實(shí)用功能還是有很多的,就像本文介紹的數據錄入一樣,即使不在BI常規意義上的分析和呈現的范圍內,也是一個(gè)在業(yè)務(wù)流程中的重要初始環(huán)節,如果錄入人員能夠按照格式清晰、含義明確的形式進(jìn)行錄入,將對數據的有效性和完整性有很大的幫助。
  既然報表是表格,而表格是可以填寫(xiě)的,那么用戶(hù)自然希望報表能夠支持填寫(xiě)。使用報表填寫(xiě)和輸入各種業(yè)務(wù)數據。例如通過(guò)銷(xiāo)售合同表錄入新合同,通過(guò)員工信息表錄入新員工信息。操作自然,意思清楚。是掙錢(qián)養家、居家旅游必備的功能。但是很多BI類(lèi)的報表工具是不支持填表的,處理需要填表或者修改的表格非常麻煩。
  現在好了,用了潤干的報表再也不用擔心了,除了高端的大屏顯示功能,炫酷的統計圖表,移動(dòng)端隨時(shí)隨地查看報表,秒出大報表,導出打印一口氣等等等等,潤干報表還有一個(gè)強大的功能:數據填寫(xiě)。
  數據填寫(xiě)功能的載體稱(chēng)為填寫(xiě)表格。潤干填表可以滿(mǎn)足各種填表需求,無(wú)論標準還是復雜,設計過(guò)程簡(jiǎn)單高效。
  
  1.數據呈現和錄入的多樣性以網(wǎng)格格式填寫(xiě)報告
  這種表格填寫(xiě)類(lèi)似于紙質(zhì)注冊過(guò)程。數據記錄以列表的形式垂直列出。一條記錄是一行。
  · 基于行的表單填寫(xiě)
  在報表應用中,有時(shí)不僅僅是修改數據或在空白處輸入數據。很多時(shí)候,我們可能還需要在顯示的數據中插入新數據和刪除數據。這時(shí)候,基于行的報表填充是最好的選擇。
  在潤千報表中,添加行、插入行、刪除行可以一次完成。
  · 填寫(xiě)自由格式
  以上兩種報表顯示時(shí),會(huì )同時(shí)顯示多條用戶(hù)數據,在某些情況下是不合理或不方便的。尤其是為了數據含義的直觀(guān)性和頁(yè)面的美觀(guān)性,需要將一條記錄設計成多行多列的形式。這種填表稱(chēng)為自由填表。
  同時(shí),您還可以在填寫(xiě)報表時(shí)使用參數模板查詢(xún)定位具體數據。
  · 多源報表填寫(xiě)
  在實(shí)際應用中,經(jīng)常會(huì )出現填寫(xiě)報表的一條數據需要同時(shí)保存在多個(gè)物理表中,并且需要多個(gè)表之間的數據庫事務(wù)一致性。這種報表填寫(xiě)稱(chēng)為多源報表填寫(xiě)。
  比較常見(jiàn)的多源報表是主子報表,通過(guò)它把用戶(hù)輸入的數據同時(shí)存儲在多個(gè)物理表中。傳統報表工具遇到這種報表填報,因為要保證一致性,只能通過(guò)編程來(lái)實(shí)現。而在潤錢(qián)報表中,使用潤錢(qián)報表的填充模型,無(wú)需編程即可輕松實(shí)現。
  
  比如下面的主分表,上層數據來(lái)自訂單表,下層數據來(lái)自訂單明細表,填寫(xiě)后一起提交更新到對應的數據表。
  · 填表組
  在很多業(yè)務(wù)系統中,還需要同時(shí)編輯多個(gè)報表,然后批量提交到數據庫,或者批量導入/導出excel等等。這種多表同時(shí)填表的功能稱(chēng)為一個(gè)填表組,例如:
  訂單:
  訂單詳細信息:
  2.數據處理
  在潤干填表的數據處理部分,數據源和數據去向分別配置,很容易實(shí)現數據來(lái)來(lái)去去的自由和無(wú)關(guān)性,從而支持以下甚至更多的使用場(chǎng)景:
  3、填表智能設置及數據合法性校驗
  為了保證信息準確地存入數據庫,填寫(xiě)報表往往需要在進(jìn)入客戶(hù)端頁(yè)面時(shí)進(jìn)行合法性檢查,比如檢查輸入的是否為數字,是否符合規定的格式或數據范圍,等等。這可以通過(guò)設置單元格驗證屬性和編輯驗證表達式來(lái)驗證。
  比如工資填寫(xiě)表(H3)要求填寫(xiě)的數據在3000到10000之間,那么可以設置單元格的校驗表達式為:H3&gt;=3000&amp;&amp; H3 查看全部

  解決方案:個(gè)人開(kāi)發(fā)者必備,API 快速生成工具
  文章首發(fā)于微信公眾號“GitHub黑板報”,歡迎大家關(guān)注。打開(kāi)微信,使用“搜索”,搜索“GitHub Blackboard News”,即可關(guān)注。
  大家好,我是章魚(yú)貓。
  
  我們每天都有大量的靜態(tài)數據,格式種類(lèi)繁多,excel、csv、json、sqlite等,如果數據量不大,用默認的軟件打開(kāi)是沒(méi)有問(wèn)題的。但是只要數據量稍大一些,比如excel中幾萬(wàn)條數據,用軟件打開(kāi)就會(huì )很慢,尤其是有時(shí)候需要做一些復雜的查詢(xún)操作。還有一個(gè)不方便的地方就是,如果你想把這些靜態(tài)數據開(kāi)放給他人,或者自己開(kāi)發(fā)一個(gè)前端展示網(wǎng)頁(yè),你需要為這些數據提供一個(gè)暴露的API。單獨開(kāi)發(fā)費時(shí)費力。
  今天要推薦的一個(gè)工具roapi,可以快速為靜態(tài)數據生成可讀性強的開(kāi)放API。其中,API查詢(xún)形式支持多種類(lèi)型,如rest API、SQL查詢(xún)、GraphQL等。下圖是工具roapi的整體交互流程圖。
  roapi工具主要分為四個(gè)部分,分別是查詢(xún)層、查詢(xún)計劃執行層、數據層和數據返回層。大致過(guò)程是前端查詢(xún)層會(huì )通過(guò)不同的查詢(xún)方式在查詢(xún)計劃執行層生成不同的執行計劃,最終對數據執行查詢(xún)。將不同的數據格式統一抽象成單獨的數據抽象層,以屏蔽不同數據格式的差異。
  
  使用 pip install roapi-http 安裝并開(kāi)始使用。下圖是具體的使用方法,可以說(shuō)是非常簡(jiǎn)單方便了。
  有關(guān)更多項目詳細信息,請參閱下面的鏈接。
  開(kāi)源項目地址:
  事實(shí):帆軟填報增加記錄提交成功后沒(méi)有_報表工具不可或缺的數據填報功能
  【概括】
  在實(shí)際業(yè)務(wù)場(chǎng)景中,報表工具不僅僅是用來(lái)展示數據,還可以滿(mǎn)足用戶(hù)各種數據填寫(xiě)需求。潤干報表工具的數據填寫(xiě)功能更加強大:
  1.不僅支持演示,還支持數據錄入。
  2.數據錄入可獨立來(lái)去,來(lái)去自如。
  3、網(wǎng)頁(yè)錄入可實(shí)現數據合法性校驗和自動(dòng)計算。
  4.結合集算器,可錄入任何數據源。
  去甘學(xué)院了解一下:報表工具不可或缺的數據填充功能
  復制摘要
  BI軟件市場(chǎng)越來(lái)越熱鬧,但這也給軟件用戶(hù)帶來(lái)了“選擇恐懼癥”。在看似功能相似的情況下,用戶(hù)會(huì )把目光轉向哪個(gè)軟件更酷、更方便、更容易上手。但其實(shí)BI系統中需要的實(shí)用功能還是有很多的,就像本文介紹的數據錄入一樣,即使不在BI常規意義上的分析和呈現的范圍內,也是一個(gè)在業(yè)務(wù)流程中的重要初始環(huán)節,如果錄入人員能夠按照格式清晰、含義明確的形式進(jìn)行錄入,將對數據的有效性和完整性有很大的幫助。
  既然報表是表格,而表格是可以填寫(xiě)的,那么用戶(hù)自然希望報表能夠支持填寫(xiě)。使用報表填寫(xiě)和輸入各種業(yè)務(wù)數據。例如通過(guò)銷(xiāo)售合同表錄入新合同,通過(guò)員工信息表錄入新員工信息。操作自然,意思清楚。是掙錢(qián)養家、居家旅游必備的功能。但是很多BI類(lèi)的報表工具是不支持填表的,處理需要填表或者修改的表格非常麻煩。
  現在好了,用了潤干的報表再也不用擔心了,除了高端的大屏顯示功能,炫酷的統計圖表,移動(dòng)端隨時(shí)隨地查看報表,秒出大報表,導出打印一口氣等等等等,潤干報表還有一個(gè)強大的功能:數據填寫(xiě)。
  數據填寫(xiě)功能的載體稱(chēng)為填寫(xiě)表格。潤干填表可以滿(mǎn)足各種填表需求,無(wú)論標準還是復雜,設計過(guò)程簡(jiǎn)單高效。
  
  1.數據呈現和錄入的多樣性以網(wǎng)格格式填寫(xiě)報告
  這種表格填寫(xiě)類(lèi)似于紙質(zhì)注冊過(guò)程。數據記錄以列表的形式垂直列出。一條記錄是一行。
  · 基于行的表單填寫(xiě)
  在報表應用中,有時(shí)不僅僅是修改數據或在空白處輸入數據。很多時(shí)候,我們可能還需要在顯示的數據中插入新數據和刪除數據。這時(shí)候,基于行的報表填充是最好的選擇。
  在潤千報表中,添加行、插入行、刪除行可以一次完成。
  · 填寫(xiě)自由格式
  以上兩種報表顯示時(shí),會(huì )同時(shí)顯示多條用戶(hù)數據,在某些情況下是不合理或不方便的。尤其是為了數據含義的直觀(guān)性和頁(yè)面的美觀(guān)性,需要將一條記錄設計成多行多列的形式。這種填表稱(chēng)為自由填表。
  同時(shí),您還可以在填寫(xiě)報表時(shí)使用參數模板查詢(xún)定位具體數據。
  · 多源報表填寫(xiě)
  在實(shí)際應用中,經(jīng)常會(huì )出現填寫(xiě)報表的一條數據需要同時(shí)保存在多個(gè)物理表中,并且需要多個(gè)表之間的數據庫事務(wù)一致性。這種報表填寫(xiě)稱(chēng)為多源報表填寫(xiě)。
  比較常見(jiàn)的多源報表是主子報表,通過(guò)它把用戶(hù)輸入的數據同時(shí)存儲在多個(gè)物理表中。傳統報表工具遇到這種報表填報,因為要保證一致性,只能通過(guò)編程來(lái)實(shí)現。而在潤錢(qián)報表中,使用潤錢(qián)報表的填充模型,無(wú)需編程即可輕松實(shí)現。
  
  比如下面的主分表,上層數據來(lái)自訂單表,下層數據來(lái)自訂單明細表,填寫(xiě)后一起提交更新到對應的數據表。
  · 填表組
  在很多業(yè)務(wù)系統中,還需要同時(shí)編輯多個(gè)報表,然后批量提交到數據庫,或者批量導入/導出excel等等。這種多表同時(shí)填表的功能稱(chēng)為一個(gè)填表組,例如:
  訂單:
  訂單詳細信息:
  2.數據處理
  在潤干填表的數據處理部分,數據源和數據去向分別配置,很容易實(shí)現數據來(lái)來(lái)去去的自由和無(wú)關(guān)性,從而支持以下甚至更多的使用場(chǎng)景:
  3、填表智能設置及數據合法性校驗
  為了保證信息準確地存入數據庫,填寫(xiě)報表往往需要在進(jìn)入客戶(hù)端頁(yè)面時(shí)進(jìn)行合法性檢查,比如檢查輸入的是否為數字,是否符合規定的格式或數據范圍,等等。這可以通過(guò)設置單元格驗證屬性和編輯驗證表達式來(lái)驗證。
  比如工資填寫(xiě)表(H3)要求填寫(xiě)的數據在3000到10000之間,那么可以設置單元格的校驗表達式為:H3&gt;=3000&amp;&amp; H3

解決方案:收集我對 API 發(fā)現的想法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-11-17 15:40 ? 來(lái)自相關(guān)話(huà)題

  解決方案:收集我對 API 發(fā)現的想法
  我正在嘗試將所有 API 發(fā)現體驗加載到我的腦海中,以便進(jìn)行一些即將到來(lái)的對話(huà)。因此,我坐下來(lái)總結了迄今為止的 API 發(fā)現研究,以幫助我重新記住發(fā)生了什么以及我們是如何走到這一步的。API 發(fā)現是 API 領(lǐng)域中我個(gè)人致力于幫助推動(dòng)事情向前發(fā)展的少數幾層之一,能夠看到所有移動(dòng)部分一起幫助我繼續這樣做。讓我們回顧一下我對過(guò)去 15 年 API 發(fā)現演變的記憶,這樣我就可以更連貫地與不同的人談?wù)撍羞@些。
  可編程網(wǎng)站
  Programmable Web 是第一個(gè)能夠發(fā)現 API 的來(lái)源,到 2020 年,它仍然是您尋找 API 的地方。ProgrammableWeb 在過(guò)去十五年中沒(méi)有太大變化,除了所有者和運營(yíng)商以及網(wǎng)站外觀(guān)和感覺(jué)。它仍然是您查找新 API 和現有 API 的地方,也是您在 Google 時(shí)查找 API 的地方。
  我對為 ModerableWeb 寫(xiě)作有著(zhù)美好的回憶,它 網(wǎng)站 對我來(lái)說(shuō)仍然是一個(gè)重要的信息來(lái)源,但我很沮喪 PW 多年來(lái)沒(méi)有以任何有趣的方式推進(jìn) API 發(fā)現對話(huà)。我只是認為這是一個(gè)錯失的機會(huì ),并且在 API 領(lǐng)域反映了很多,我認為這阻礙了我們所有人。
  混搭 -&gt; Express API
  在可編程 Web 之后,API 世界的下一個(gè)演變是 MASHAPE,現在稱(chēng)為 Rapid API。API市場(chǎng)誕生于A(yíng)PI管理時(shí)代,提供基礎管理功能和API發(fā)現服務(wù)。提供一組非常豐富的 API,您可以使用 Quick API Marketplace 搜索和加載這些 API。
  Marshall 和 Fast API 無(wú)疑推動(dòng)了 API 發(fā)現對話(huà),但就像可編程 Web 一樣,它就此止步。當談到 SEO 游戲時(shí),RapidAPI 肯定會(huì )與可編程網(wǎng)絡(luò )競爭,但除了簡(jiǎn)單 API 市場(chǎng)的基礎知識之外,RapidAPI 確實(shí)沒(méi)有太多東西——這很好,但我一直在瞭望臺向前移動(dòng)。
  美國聯(lián)邦政府 Data.json 索引
  接下來(lái),我將繞道而行,但我保證它與 API 發(fā)現有關(guān)。2013 年,我進(jìn)入奧巴馬政府工作,致力于幫助聯(lián)邦機構使用 API 發(fā)布其公共數據資產(chǎn)。我在退伍軍人事務(wù)部工作,但也花時(shí)間與其他機構合作,按照總統的授權在 15 個(gè)執行機構的 網(wǎng)站 域的根目錄中發(fā)布所謂的 data.json 文件 - 你仍然可以找到今天可用的 15 個(gè)文件。
  我已經(jīng)設置了一個(gè)工作區來(lái)提取所有 15 個(gè) data.json 文件,我正在研究它們以查看已發(fā)布的內容,并查看我在 2013 年開(kāi)始的工作的狀態(tài)。作為這項工作的一部分,我學(xué)到了很多關(guān)于數據發(fā)現的知識以及在大型官僚機構中進(jìn)行數據發(fā)現的實(shí)際情況,這是我在參觀(guān)后帶回家的東西,并開(kāi)始將我想看到的應用到主流 API 發(fā)現中。
  APIIs.json / APIs.yaml
  離開(kāi)華盛頓特區后不久,我與 Steve Wilmott 合作從 3Scale 創(chuàng )建了一種名為 API.json 的新 API 發(fā)現格式。與 data.json 文件一樣,API.json 將為 API 提供一種發(fā)現格式,但我會(huì )改進(jìn)以更好地適應我認為需要的格式,以幫助推進(jìn)政府內外的 API 發(fā)現對話(huà)。提供一種索引單個(gè) API、API 集合、工作流和其他我們發(fā)現 API 并使它們自動(dòng)和手動(dòng)工作所需的方法的方法。
  我即將將該規范推入下一個(gè)版本,并將繼續致力于規范的發(fā)展。我有超過(guò) 40K 個(gè) API.json 文件,用于我確定擁有 API、正在使用 API 或懷疑擁有 API 的公司、組織、機構和政府機構。隨著(zhù)我繼續擴展我抓取和發(fā)現 API 的方式,我將繼續嘗試遍歷列表中的每個(gè)條目。
  APIs.io
  當我們推出 API.json 時(shí),我們也推出了第一個(gè) API 搜索引擎。我們希望實(shí)施 API 發(fā)現規范,以展示推動(dòng) API 提供商了解更多信息并開(kāi)始發(fā)布規范作為其運營(yíng)一部分的潛力。APIs.io 還開(kāi)始輪詢(xún)其索引的 API.json 文件的更新,并開(kāi)始考慮如何搜索新文件。使其成為第一個(gè) API 搜索引擎,允許您在搜索 API 的同時(shí)以自動(dòng)方式查找更新和擴展目錄。
  遺憾的是,我知道 APIs.io 沒(méi)有得到維護。人們仍在向它添加 API,但如果 網(wǎng)站 出現故障,我想沒(méi)人能回家讓它恢復運行。網(wǎng)站 在 Red Hat 收購 3Scale,然后 IBM 收購 Red Hat 的洗牌中迷失了方向。雖然 網(wǎng)站 不是 API 發(fā)現對話(huà)的活躍部分,但它仍然在塑造討論中發(fā)揮作用。
  接口規范
  
  隨著(zhù)可編程 Web、RapidAPI 的發(fā)展以及 API.json 和 APIs.io 的引入,出現了各種有助于改進(jìn) API 生命周期的規范,這些都有助于使 API 更加有形并最終被發(fā)現。這些 API 規范中的每一個(gè)都使查找 API 變得更加容易,無(wú)論您是在 Web 上、通過(guò) Github 還是在本地網(wǎng)絡(luò )的某個(gè)地方查找它。
  在 API 發(fā)現方面,API 規范提供了一個(gè)非常關(guān)鍵的構建塊。這些機器可讀的規范描述了 API 的表面區域,同時(shí)提供了標題、描述和其他有助于使 API 更容易被發(fā)現的元數據。將 API 規范組織到市場(chǎng)、目錄或中心將是 API 發(fā)現對話(huà)中的下一個(gè)明確步驟。
  炫耀
  在 Smart Bear 將 Swag 作為 OpenAPI 放入 Linux Foundation 后,他們啟動(dòng)了 Swag Hub 以幫助 API 提供商發(fā)布他們的 OpenAPI,使它們可供發(fā)現。正如它所說(shuō),該平臺提供了一個(gè) swag 中心,現在是 OpenAPI。允許開(kāi)發(fā)人員發(fā)布和搜索不同類(lèi)型的 API,同時(shí)還能夠在整個(gè) API 生命周期中使用它們進(jìn)行編輯和編排。
  SwaggerHub 絕對是一個(gè) API 發(fā)現解決方案,但它從一個(gè)非常不同的位置關(guān)注它。它更多地是關(guān)于編輯和設計 API,然后使它們在 API 生命周期的多個(gè)站點(diǎn)可用,包括發(fā)現。以領(lǐng)先的 API 規范為基礎,但重點(diǎn)關(guān)注如何在整個(gè) API 生命周期中使用它。
  API大師
  與 SwaggerHub 類(lèi)似,API.guru 中出現了另一種更開(kāi)源的方法,它也聚合了 Swagger 和 OpenAPI 定義,但作為一個(gè) GitHub 存儲庫,在其上構建了一個(gè)簡(jiǎn)單的搜索 網(wǎng)站。為一些最著(zhù)名的 API 提供豐富的 OpenAPI 定義目錄。提供一個(gè)單一位置,您可以在其中下載或分叉 OpenAPI 以獲取各種 API,使搜索變得非常簡(jiǎn)單。
  我喜歡 API.guru 的方法。Github 上的 API Discovery 對我來(lái)說(shuō)很有意義。GitHub 不僅僅是管理代碼,還提供了豐富的功能,可以使用 OpenAPI 等規范來(lái)推廣不同的 API。您可以分叉整個(gè) API.guru OpenAPI 目錄,使其成為一個(gè)非常便攜且可分叉的 API 發(fā)現解決方案,您可以在任何地方運行。
  郵遞員網(wǎng)絡(luò )
  當所有這些其他事情發(fā)生時(shí),Postman 發(fā)布了他們自己的 API 目錄,稱(chēng)為 Postman API 網(wǎng)絡(luò )。提供由 Postman 自己的 API 規范定義的不同 API 的列表,稱(chēng)為集合。Postman 用戶(hù)可以將自己的采集發(fā)布到 API Network,消費者可以通過(guò)分類(lèi)瀏覽 API,或者通過(guò)關(guān)鍵字搜索 API。
  使用最新版本的 Postman 平臺,您現在可以在發(fā)布工作區中找到由 OpenAPI、RAML 或 GraphQL 定義的 API,以及集合、監視器、模擬服務(wù)器和其他組件。想想 Github 存儲庫,但專(zhuān)為 API 設計。此外,還開(kāi)發(fā)了對 Postman 網(wǎng)絡(luò )的搜索,以更詳細地了解公共 API 以及您在個(gè)人或團隊工作區中私下使用的 API。
  更多接口目錄
  然后,我們開(kāi)始看到更多 API 目錄和彈出目錄。最終消失的不止這些,但這顯示了已出現的 API 發(fā)現解決方案類(lèi)型的一個(gè)很好的橫截面——幫助我們所有人在我們的應用程序中找到我們需要的 API。
  大多數 API 目錄都會(huì )啟動(dòng),然后在休眠或完全消失之前收到一波又一波的更新。我自己創(chuàng )建了幾個(gè)目錄,只有在它們過(guò)時(shí)時(shí)才刪除它們。保持 API 目錄的最新和最新是一項大量的工作,而且確實(shí)沒(méi)有多少錢(qián)可以做——至少現在還沒(méi)有。
  有目的的 API 發(fā)現
  最近,我們開(kāi)始看到新一波 API 發(fā)現解決方案的出現,但這種解決方案不僅僅是尋找 API。它是關(guān)于尋找 API,以便您可以解決其他一些更緊迫的需求,例如安全性或合規性。這里有一些新穎的方法來(lái)尋找 API,幫助我們理解我們越來(lái)越依賴(lài)的非常抽象和無(wú)形的基礎設施,這些基礎設施在我們周?chē)手笖导壴鲩L(cháng)。
  您會(huì )明白為什么我們需要發(fā)現這里展示的整個(gè) API 產(chǎn)品組合。我覺(jué)得僅僅搜索 API 不足以將 API 發(fā)現提升到一個(gè)新的水平。我們需要其他原因來(lái)發(fā)現我們周?chē)霈F的 API 基礎設施。API 的增長(cháng)速度通常如此之快,以至于我們跟不上文檔和其他更傳統的查看和發(fā)現 API 的方法。
  只是谷歌它
  事實(shí)上,大多數 API 都是通過(guò)簡(jiǎn)單的 Google 搜索發(fā)現的。我認為這將永遠成為現實(shí),我認為谷歌將繼續投資幫助我們找到我們需要的 API。然而,這只會(huì )幫助我們找到我們正在尋找的公共 API。我們需要能夠幫助我們找到我們的公共 API 以及我們所依賴(lài)的私有和合作伙伴 API 的解決方案,這些 API 無(wú)法通過(guò) Google 搜索發(fā)現。
  
  享受尋找新 API 的樂(lè )趣
  事實(shí)上,定期引入新 API 的方法并不多。您可以通過(guò)閱讀 tech crunch、調整到 Twitterverse 或 Reddit 的正確部分來(lái)學(xué)習新的,但我會(huì )說(shuō)產(chǎn)品搜索。你也可以聽(tīng)聽(tīng)ProgramambleWeb,用新API的不斷滴灌來(lái)引入新的API,但我最終還是希望有更多的方式來(lái)引入API,但這可能是最不可能變現的方式。
  進(jìn)一步的發(fā)現語(yǔ)義
  本次討論的另一層是一些機器可讀的構建塊,它們可以幫助我們更好地描述我們通過(guò) API 提供的資源,從而推動(dòng)如何通過(guò) Google 和其他搜索引擎發(fā)現 API。有多種方法可以標記、添加元數據和提供更多詳細信息,以幫助默認情況下使我們的 API 更容易被發(fā)現。
  所有這些構建塊的挑戰在于,它們需要大量工作才能添加到我們的每個(gè) API,而且 API 提供商不太可能抽出時(shí)間來(lái)這樣做。因此,服務(wù)和工具提供商需要使用通用元素(例如 JSON-LD 和其他豐富的格式)標記內容和擴充 API 定義,以幫助我們了解我們提供的數字資源和功能。
  車(chē)道工程 API 發(fā)現的巔峰之作
  多年來(lái),我曾多次嘗試提供 API 發(fā)現解決方案,而 API.json 直到最近才開(kāi)始再次向前發(fā)展。我有一些其他的解決方案來(lái)來(lái)去去,最近的演變是我構建的內部平臺的一部分,我簡(jiǎn)稱(chēng)為 Laneworks。這項最新投資是關(guān)于 API 發(fā)現和在網(wǎng)絡(luò )上尋找新的和有趣的 API 并投資它們以收錄在目錄中。
  我將停用用于自動(dòng)發(fā)現 API 的 Laneworks 方法的 v1,并且我正在重新設計它以在公共工作區中運行。我將我的幾千個(gè) OpenAPI 和生成的集合移動(dòng)到幾千個(gè)公共工作區。然后,我會(huì )將這種自動(dòng)化重新設計到 Postman 集合中,這些集合作為監視器按計劃運行,允許我按工作區發(fā)現、收獲、解析、排序和組織以進(jìn)行發(fā)現。當我擁有它時(shí),它往往會(huì )發(fā)現很多有趣的 API,這些 API 可以很容易地編目,但對拋光和可用性的最后潤色總是需要時(shí)間,這是我過(guò)去從未有過(guò)的——誰(shuí)知道未來(lái)會(huì )怎樣。
  新的 API 發(fā)現工具
  我把它放在最后是因為它是幾周前才發(fā)生的,但它是 API 發(fā)現對話(huà)取得進(jìn)展的一個(gè)非常有希望的跡象。它是一種新的開(kāi)源發(fā)現解決方案,是我見(jiàn)過(guò)的最先進(jìn)的開(kāi)源方法,可幫助發(fā)現公共和私有 API。
  我一直想知道為什么 Google 沒(méi)有加入 API 發(fā)現游戲。他們擁有搜索市場(chǎng),并且他們已經(jīng)為他們的 API 堆棧提供了一個(gè)發(fā)現解決方案,但這種開(kāi)源方法顯示了更多的潛力。我仍然需要使用 Google API Registry 來(lái)了解它的作用,但我認為它非常重要,可以收錄在這個(gè) API 發(fā)現敘述中。
  要問(wèn)的重要問(wèn)題
  到目前為止,API 發(fā)現的最大挑戰是需要解決很多方面的問(wèn)題。這不僅僅是關(guān)于搜索或發(fā)現 API。這是關(guān)于被發(fā)現。這是關(guān)于你如何描述你所做的事情。這取決于你是誰(shuí)以及你的動(dòng)機是什么。我問(wèn)了幾個(gè)問(wèn)題來(lái)幫助我理解 API 發(fā)現對話(huà)的多個(gè)維度,這樣我就可以看到一切。
  這些問(wèn)題的答案將隨時(shí)改變 API 發(fā)現的狀態(tài)。還有許多其他事情需要考慮,但這些領(lǐng)域反映了我多年來(lái)看到的混淆 API 發(fā)現水域的常見(jiàn)方式。很難真正提供一個(gè)簡(jiǎn)單的解決方案或向人們解釋它的全部?jì)热?。老?shí)說(shuō),我需要定期檢查發(fā)生了什么,并定期刷新,這樣我才能理解一些東西。有時(shí)我覺(jué)得在 API 發(fā)現方面沒(méi)有發(fā)生任何事情,但是一旦我像這樣進(jìn)行刷新,我就會(huì )意識到發(fā)生了多少事情——它只是漸進(jìn)式的。
  接口發(fā)現驅動(dòng)程序
  既然我已經(jīng)把所有這些都記在腦子里了,我想想想是什么推動(dòng)了 API 發(fā)現。我想了解為什么人們想要發(fā)現 API,為什么擁有 API 的人想要發(fā)現它們,以及是什么促成了這些搜索。我希望了解生命周期 API 發(fā)現中最需要的地方。通過(guò)這個(gè) 文章,這里是我正在考慮的不同元素,因為我試圖了解我們在 2021 年的 API 發(fā)現方面所處的位置。
  在寫(xiě)更多之前,我必須孵化這些元素。API 發(fā)現當然不僅僅是將 API 組織到目錄中并提供搜索機制,但我仍然不確定 API 發(fā)現的下一個(gè)演變是什么。當我認為在過(guò)去十年中 API 發(fā)現沒(méi)有發(fā)生任何事情時(shí),我肯定感覺(jué)好多了——發(fā)生了很多事情。與往常一樣,在 API 領(lǐng)域,訣竅始終是將所有內容放在一起并閱讀茶葉以弄清楚發(fā)生了什么,并考慮 API 發(fā)布者和消費者的需求 - 這就是本博客 文章 的所有內容。
  我總是懷疑我對 API 發(fā)現的看法。我是 API 的分析師、發(fā)布者和消費者。我也沉迷于 API。這讓我在尋找 API 時(shí)完全不同。我認為普通的業(yè)務(wù)人員或技術(shù)人員并不關(guān)心 API——他們只是想在他們自己的世界里完成事情。我認為搜索是 API 發(fā)現的核心,但還有許多其他機制在起作用,這些機制將使該搜索與不同參與者的整體組合相關(guān)或不相關(guān),這些參與者通常對為什么要查找 API 或找到他們的原因有相互競爭的動(dòng)機應用程序接口。最后,我認為 API 發(fā)現的默認模式仍然只是“google it”。我不確定這是否更多地是關(guān)于網(wǎng)絡(luò )搜索和發(fā)現而不是 API 發(fā)現,或者是否有更深層次的問(wèn)題需要考慮。反正,
  參考資料: apievangelist
  解決方案:10款國內外常用的SEO優(yōu)化工具
  優(yōu)秀的SEO關(guān)鍵詞排名工具會(huì )讓你的SEO優(yōu)化更有效,作為一個(gè)SEOer,你不僅要知道如何網(wǎng)站優(yōu)化,還要知道如何使用SEO優(yōu)化工具來(lái)加快網(wǎng)站優(yōu)化的過(guò)程。今天, 推薦了十個(gè)實(shí)用網(wǎng)站SEO優(yōu)化工具,希望對大家有所幫助。
  1. 搜索引擎抓取內容模擬器
  它可以模擬蜘蛛抓取特定網(wǎng)頁(yè),包括文本、鏈接、關(guān)鍵字和描述
  2. 頁(yè)面相似度檢測工具
  檢查兩頁(yè)的相似度(如果相似度超過(guò)80%,可能會(huì )受到處罰)。
  網(wǎng)站地圖制作工具
  1. 在線(xiàn)制作小網(wǎng)站地圖文件
  2. 使用工具制作中型網(wǎng)站地圖
  這是一個(gè)非常好的免費網(wǎng)站地圖制作工具:站點(diǎn)地圖生成器
  官方下載地址:
  
  四、SEO優(yōu)化輔助工具
  中國切()。
  5. 百度指數
  顯示注意和
  指定關(guān)鍵詞的媒體關(guān)注以圖表的形式在百度中,登錄后可以定義列表。
  6. 關(guān)鍵詞熱門(mén)排名和指數
  百度排行榜:
  序曲關(guān)鍵詞工具:
  7. 網(wǎng)站站長(cháng)工具
  1. 搜索引擎優(yōu)化站長(cháng)工具:
  2. 愛(ài)站工具:
  
  3. 站長(cháng)助手:
  8. 網(wǎng)站流量統計工具
  1. 百度統計:
  2. CNZZ數據專(zhuān)家:
  *它是每個(gè)網(wǎng)站隨時(shí)監控自己網(wǎng)站流量的必備工具
  9. 無(wú)效的鏈接檢查工具
  1、賽努鏈接偵探()
  2、W3C 智能檢查器()
  10. 網(wǎng)站歷史查詢(xún)工具
  互聯(lián)網(wǎng)檔案館保存了自1996年以來(lái)使用Alexa搜索引擎獲得的網(wǎng)站材料
  以上就是 分享的十個(gè)SEO優(yōu)化工具,都非常實(shí)用,可以加速你的網(wǎng)站SEO效果。 查看全部

  解決方案:收集我對 API 發(fā)現的想法
  我正在嘗試將所有 API 發(fā)現體驗加載到我的腦海中,以便進(jìn)行一些即將到來(lái)的對話(huà)。因此,我坐下來(lái)總結了迄今為止的 API 發(fā)現研究,以幫助我重新記住發(fā)生了什么以及我們是如何走到這一步的。API 發(fā)現是 API 領(lǐng)域中我個(gè)人致力于幫助推動(dòng)事情向前發(fā)展的少數幾層之一,能夠看到所有移動(dòng)部分一起幫助我繼續這樣做。讓我們回顧一下我對過(guò)去 15 年 API 發(fā)現演變的記憶,這樣我就可以更連貫地與不同的人談?wù)撍羞@些。
  可編程網(wǎng)站
  Programmable Web 是第一個(gè)能夠發(fā)現 API 的來(lái)源,到 2020 年,它仍然是您尋找 API 的地方。ProgrammableWeb 在過(guò)去十五年中沒(méi)有太大變化,除了所有者和運營(yíng)商以及網(wǎng)站外觀(guān)和感覺(jué)。它仍然是您查找新 API 和現有 API 的地方,也是您在 Google 時(shí)查找 API 的地方。
  我對為 ModerableWeb 寫(xiě)作有著(zhù)美好的回憶,它 網(wǎng)站 對我來(lái)說(shuō)仍然是一個(gè)重要的信息來(lái)源,但我很沮喪 PW 多年來(lái)沒(méi)有以任何有趣的方式推進(jìn) API 發(fā)現對話(huà)。我只是認為這是一個(gè)錯失的機會(huì ),并且在 API 領(lǐng)域反映了很多,我認為這阻礙了我們所有人。
  混搭 -&gt; Express API
  在可編程 Web 之后,API 世界的下一個(gè)演變是 MASHAPE,現在稱(chēng)為 Rapid API。API市場(chǎng)誕生于A(yíng)PI管理時(shí)代,提供基礎管理功能和API發(fā)現服務(wù)。提供一組非常豐富的 API,您可以使用 Quick API Marketplace 搜索和加載這些 API。
  Marshall 和 Fast API 無(wú)疑推動(dòng)了 API 發(fā)現對話(huà),但就像可編程 Web 一樣,它就此止步。當談到 SEO 游戲時(shí),RapidAPI 肯定會(huì )與可編程網(wǎng)絡(luò )競爭,但除了簡(jiǎn)單 API 市場(chǎng)的基礎知識之外,RapidAPI 確實(shí)沒(méi)有太多東西——這很好,但我一直在瞭望臺向前移動(dòng)。
  美國聯(lián)邦政府 Data.json 索引
  接下來(lái),我將繞道而行,但我保證它與 API 發(fā)現有關(guān)。2013 年,我進(jìn)入奧巴馬政府工作,致力于幫助聯(lián)邦機構使用 API 發(fā)布其公共數據資產(chǎn)。我在退伍軍人事務(wù)部工作,但也花時(shí)間與其他機構合作,按照總統的授權在 15 個(gè)執行機構的 網(wǎng)站 域的根目錄中發(fā)布所謂的 data.json 文件 - 你仍然可以找到今天可用的 15 個(gè)文件。
  我已經(jīng)設置了一個(gè)工作區來(lái)提取所有 15 個(gè) data.json 文件,我正在研究它們以查看已發(fā)布的內容,并查看我在 2013 年開(kāi)始的工作的狀態(tài)。作為這項工作的一部分,我學(xué)到了很多關(guān)于數據發(fā)現的知識以及在大型官僚機構中進(jìn)行數據發(fā)現的實(shí)際情況,這是我在參觀(guān)后帶回家的東西,并開(kāi)始將我想看到的應用到主流 API 發(fā)現中。
  APIIs.json / APIs.yaml
  離開(kāi)華盛頓特區后不久,我與 Steve Wilmott 合作從 3Scale 創(chuàng )建了一種名為 API.json 的新 API 發(fā)現格式。與 data.json 文件一樣,API.json 將為 API 提供一種發(fā)現格式,但我會(huì )改進(jìn)以更好地適應我認為需要的格式,以幫助推進(jìn)政府內外的 API 發(fā)現對話(huà)。提供一種索引單個(gè) API、API 集合、工作流和其他我們發(fā)現 API 并使它們自動(dòng)和手動(dòng)工作所需的方法的方法。
  我即將將該規范推入下一個(gè)版本,并將繼續致力于規范的發(fā)展。我有超過(guò) 40K 個(gè) API.json 文件,用于我確定擁有 API、正在使用 API 或懷疑擁有 API 的公司、組織、機構和政府機構。隨著(zhù)我繼續擴展我抓取和發(fā)現 API 的方式,我將繼續嘗試遍歷列表中的每個(gè)條目。
  APIs.io
  當我們推出 API.json 時(shí),我們也推出了第一個(gè) API 搜索引擎。我們希望實(shí)施 API 發(fā)現規范,以展示推動(dòng) API 提供商了解更多信息并開(kāi)始發(fā)布規范作為其運營(yíng)一部分的潛力。APIs.io 還開(kāi)始輪詢(xún)其索引的 API.json 文件的更新,并開(kāi)始考慮如何搜索新文件。使其成為第一個(gè) API 搜索引擎,允許您在搜索 API 的同時(shí)以自動(dòng)方式查找更新和擴展目錄。
  遺憾的是,我知道 APIs.io 沒(méi)有得到維護。人們仍在向它添加 API,但如果 網(wǎng)站 出現故障,我想沒(méi)人能回家讓它恢復運行。網(wǎng)站 在 Red Hat 收購 3Scale,然后 IBM 收購 Red Hat 的洗牌中迷失了方向。雖然 網(wǎng)站 不是 API 發(fā)現對話(huà)的活躍部分,但它仍然在塑造討論中發(fā)揮作用。
  接口規范
  
  隨著(zhù)可編程 Web、RapidAPI 的發(fā)展以及 API.json 和 APIs.io 的引入,出現了各種有助于改進(jìn) API 生命周期的規范,這些都有助于使 API 更加有形并最終被發(fā)現。這些 API 規范中的每一個(gè)都使查找 API 變得更加容易,無(wú)論您是在 Web 上、通過(guò) Github 還是在本地網(wǎng)絡(luò )的某個(gè)地方查找它。
  在 API 發(fā)現方面,API 規范提供了一個(gè)非常關(guān)鍵的構建塊。這些機器可讀的規范描述了 API 的表面區域,同時(shí)提供了標題、描述和其他有助于使 API 更容易被發(fā)現的元數據。將 API 規范組織到市場(chǎng)、目錄或中心將是 API 發(fā)現對話(huà)中的下一個(gè)明確步驟。
  炫耀
  在 Smart Bear 將 Swag 作為 OpenAPI 放入 Linux Foundation 后,他們啟動(dòng)了 Swag Hub 以幫助 API 提供商發(fā)布他們的 OpenAPI,使它們可供發(fā)現。正如它所說(shuō),該平臺提供了一個(gè) swag 中心,現在是 OpenAPI。允許開(kāi)發(fā)人員發(fā)布和搜索不同類(lèi)型的 API,同時(shí)還能夠在整個(gè) API 生命周期中使用它們進(jìn)行編輯和編排。
  SwaggerHub 絕對是一個(gè) API 發(fā)現解決方案,但它從一個(gè)非常不同的位置關(guān)注它。它更多地是關(guān)于編輯和設計 API,然后使它們在 API 生命周期的多個(gè)站點(diǎn)可用,包括發(fā)現。以領(lǐng)先的 API 規范為基礎,但重點(diǎn)關(guān)注如何在整個(gè) API 生命周期中使用它。
  API大師
  與 SwaggerHub 類(lèi)似,API.guru 中出現了另一種更開(kāi)源的方法,它也聚合了 Swagger 和 OpenAPI 定義,但作為一個(gè) GitHub 存儲庫,在其上構建了一個(gè)簡(jiǎn)單的搜索 網(wǎng)站。為一些最著(zhù)名的 API 提供豐富的 OpenAPI 定義目錄。提供一個(gè)單一位置,您可以在其中下載或分叉 OpenAPI 以獲取各種 API,使搜索變得非常簡(jiǎn)單。
  我喜歡 API.guru 的方法。Github 上的 API Discovery 對我來(lái)說(shuō)很有意義。GitHub 不僅僅是管理代碼,還提供了豐富的功能,可以使用 OpenAPI 等規范來(lái)推廣不同的 API。您可以分叉整個(gè) API.guru OpenAPI 目錄,使其成為一個(gè)非常便攜且可分叉的 API 發(fā)現解決方案,您可以在任何地方運行。
  郵遞員網(wǎng)絡(luò )
  當所有這些其他事情發(fā)生時(shí),Postman 發(fā)布了他們自己的 API 目錄,稱(chēng)為 Postman API 網(wǎng)絡(luò )。提供由 Postman 自己的 API 規范定義的不同 API 的列表,稱(chēng)為集合。Postman 用戶(hù)可以將自己的采集發(fā)布到 API Network,消費者可以通過(guò)分類(lèi)瀏覽 API,或者通過(guò)關(guān)鍵字搜索 API。
  使用最新版本的 Postman 平臺,您現在可以在發(fā)布工作區中找到由 OpenAPI、RAML 或 GraphQL 定義的 API,以及集合、監視器、模擬服務(wù)器和其他組件。想想 Github 存儲庫,但專(zhuān)為 API 設計。此外,還開(kāi)發(fā)了對 Postman 網(wǎng)絡(luò )的搜索,以更詳細地了解公共 API 以及您在個(gè)人或團隊工作區中私下使用的 API。
  更多接口目錄
  然后,我們開(kāi)始看到更多 API 目錄和彈出目錄。最終消失的不止這些,但這顯示了已出現的 API 發(fā)現解決方案類(lèi)型的一個(gè)很好的橫截面——幫助我們所有人在我們的應用程序中找到我們需要的 API。
  大多數 API 目錄都會(huì )啟動(dòng),然后在休眠或完全消失之前收到一波又一波的更新。我自己創(chuàng )建了幾個(gè)目錄,只有在它們過(guò)時(shí)時(shí)才刪除它們。保持 API 目錄的最新和最新是一項大量的工作,而且確實(shí)沒(méi)有多少錢(qián)可以做——至少現在還沒(méi)有。
  有目的的 API 發(fā)現
  最近,我們開(kāi)始看到新一波 API 發(fā)現解決方案的出現,但這種解決方案不僅僅是尋找 API。它是關(guān)于尋找 API,以便您可以解決其他一些更緊迫的需求,例如安全性或合規性。這里有一些新穎的方法來(lái)尋找 API,幫助我們理解我們越來(lái)越依賴(lài)的非常抽象和無(wú)形的基礎設施,這些基礎設施在我們周?chē)手笖导壴鲩L(cháng)。
  您會(huì )明白為什么我們需要發(fā)現這里展示的整個(gè) API 產(chǎn)品組合。我覺(jué)得僅僅搜索 API 不足以將 API 發(fā)現提升到一個(gè)新的水平。我們需要其他原因來(lái)發(fā)現我們周?chē)霈F的 API 基礎設施。API 的增長(cháng)速度通常如此之快,以至于我們跟不上文檔和其他更傳統的查看和發(fā)現 API 的方法。
  只是谷歌它
  事實(shí)上,大多數 API 都是通過(guò)簡(jiǎn)單的 Google 搜索發(fā)現的。我認為這將永遠成為現實(shí),我認為谷歌將繼續投資幫助我們找到我們需要的 API。然而,這只會(huì )幫助我們找到我們正在尋找的公共 API。我們需要能夠幫助我們找到我們的公共 API 以及我們所依賴(lài)的私有和合作伙伴 API 的解決方案,這些 API 無(wú)法通過(guò) Google 搜索發(fā)現。
  
  享受尋找新 API 的樂(lè )趣
  事實(shí)上,定期引入新 API 的方法并不多。您可以通過(guò)閱讀 tech crunch、調整到 Twitterverse 或 Reddit 的正確部分來(lái)學(xué)習新的,但我會(huì )說(shuō)產(chǎn)品搜索。你也可以聽(tīng)聽(tīng)ProgramambleWeb,用新API的不斷滴灌來(lái)引入新的API,但我最終還是希望有更多的方式來(lái)引入API,但這可能是最不可能變現的方式。
  進(jìn)一步的發(fā)現語(yǔ)義
  本次討論的另一層是一些機器可讀的構建塊,它們可以幫助我們更好地描述我們通過(guò) API 提供的資源,從而推動(dòng)如何通過(guò) Google 和其他搜索引擎發(fā)現 API。有多種方法可以標記、添加元數據和提供更多詳細信息,以幫助默認情況下使我們的 API 更容易被發(fā)現。
  所有這些構建塊的挑戰在于,它們需要大量工作才能添加到我們的每個(gè) API,而且 API 提供商不太可能抽出時(shí)間來(lái)這樣做。因此,服務(wù)和工具提供商需要使用通用元素(例如 JSON-LD 和其他豐富的格式)標記內容和擴充 API 定義,以幫助我們了解我們提供的數字資源和功能。
  車(chē)道工程 API 發(fā)現的巔峰之作
  多年來(lái),我曾多次嘗試提供 API 發(fā)現解決方案,而 API.json 直到最近才開(kāi)始再次向前發(fā)展。我有一些其他的解決方案來(lái)來(lái)去去,最近的演變是我構建的內部平臺的一部分,我簡(jiǎn)稱(chēng)為 Laneworks。這項最新投資是關(guān)于 API 發(fā)現和在網(wǎng)絡(luò )上尋找新的和有趣的 API 并投資它們以收錄在目錄中。
  我將停用用于自動(dòng)發(fā)現 API 的 Laneworks 方法的 v1,并且我正在重新設計它以在公共工作區中運行。我將我的幾千個(gè) OpenAPI 和生成的集合移動(dòng)到幾千個(gè)公共工作區。然后,我會(huì )將這種自動(dòng)化重新設計到 Postman 集合中,這些集合作為監視器按計劃運行,允許我按工作區發(fā)現、收獲、解析、排序和組織以進(jìn)行發(fā)現。當我擁有它時(shí),它往往會(huì )發(fā)現很多有趣的 API,這些 API 可以很容易地編目,但對拋光和可用性的最后潤色總是需要時(shí)間,這是我過(guò)去從未有過(guò)的——誰(shuí)知道未來(lái)會(huì )怎樣。
  新的 API 發(fā)現工具
  我把它放在最后是因為它是幾周前才發(fā)生的,但它是 API 發(fā)現對話(huà)取得進(jìn)展的一個(gè)非常有希望的跡象。它是一種新的開(kāi)源發(fā)現解決方案,是我見(jiàn)過(guò)的最先進(jìn)的開(kāi)源方法,可幫助發(fā)現公共和私有 API。
  我一直想知道為什么 Google 沒(méi)有加入 API 發(fā)現游戲。他們擁有搜索市場(chǎng),并且他們已經(jīng)為他們的 API 堆棧提供了一個(gè)發(fā)現解決方案,但這種開(kāi)源方法顯示了更多的潛力。我仍然需要使用 Google API Registry 來(lái)了解它的作用,但我認為它非常重要,可以收錄在這個(gè) API 發(fā)現敘述中。
  要問(wèn)的重要問(wèn)題
  到目前為止,API 發(fā)現的最大挑戰是需要解決很多方面的問(wèn)題。這不僅僅是關(guān)于搜索或發(fā)現 API。這是關(guān)于被發(fā)現。這是關(guān)于你如何描述你所做的事情。這取決于你是誰(shuí)以及你的動(dòng)機是什么。我問(wèn)了幾個(gè)問(wèn)題來(lái)幫助我理解 API 發(fā)現對話(huà)的多個(gè)維度,這樣我就可以看到一切。
  這些問(wèn)題的答案將隨時(shí)改變 API 發(fā)現的狀態(tài)。還有許多其他事情需要考慮,但這些領(lǐng)域反映了我多年來(lái)看到的混淆 API 發(fā)現水域的常見(jiàn)方式。很難真正提供一個(gè)簡(jiǎn)單的解決方案或向人們解釋它的全部?jì)热?。老?shí)說(shuō),我需要定期檢查發(fā)生了什么,并定期刷新,這樣我才能理解一些東西。有時(shí)我覺(jué)得在 API 發(fā)現方面沒(méi)有發(fā)生任何事情,但是一旦我像這樣進(jìn)行刷新,我就會(huì )意識到發(fā)生了多少事情——它只是漸進(jìn)式的。
  接口發(fā)現驅動(dòng)程序
  既然我已經(jīng)把所有這些都記在腦子里了,我想想想是什么推動(dòng)了 API 發(fā)現。我想了解為什么人們想要發(fā)現 API,為什么擁有 API 的人想要發(fā)現它們,以及是什么促成了這些搜索。我希望了解生命周期 API 發(fā)現中最需要的地方。通過(guò)這個(gè) 文章,這里是我正在考慮的不同元素,因為我試圖了解我們在 2021 年的 API 發(fā)現方面所處的位置。
  在寫(xiě)更多之前,我必須孵化這些元素。API 發(fā)現當然不僅僅是將 API 組織到目錄中并提供搜索機制,但我仍然不確定 API 發(fā)現的下一個(gè)演變是什么。當我認為在過(guò)去十年中 API 發(fā)現沒(méi)有發(fā)生任何事情時(shí),我肯定感覺(jué)好多了——發(fā)生了很多事情。與往常一樣,在 API 領(lǐng)域,訣竅始終是將所有內容放在一起并閱讀茶葉以弄清楚發(fā)生了什么,并考慮 API 發(fā)布者和消費者的需求 - 這就是本博客 文章 的所有內容。
  我總是懷疑我對 API 發(fā)現的看法。我是 API 的分析師、發(fā)布者和消費者。我也沉迷于 API。這讓我在尋找 API 時(shí)完全不同。我認為普通的業(yè)務(wù)人員或技術(shù)人員并不關(guān)心 API——他們只是想在他們自己的世界里完成事情。我認為搜索是 API 發(fā)現的核心,但還有許多其他機制在起作用,這些機制將使該搜索與不同參與者的整體組合相關(guān)或不相關(guān),這些參與者通常對為什么要查找 API 或找到他們的原因有相互競爭的動(dòng)機應用程序接口。最后,我認為 API 發(fā)現的默認模式仍然只是“google it”。我不確定這是否更多地是關(guān)于網(wǎng)絡(luò )搜索和發(fā)現而不是 API 發(fā)現,或者是否有更深層次的問(wèn)題需要考慮。反正,
  參考資料: apievangelist
  解決方案:10款國內外常用的SEO優(yōu)化工具
  優(yōu)秀的SEO關(guān)鍵詞排名工具會(huì )讓你的SEO優(yōu)化更有效,作為一個(gè)SEOer,你不僅要知道如何網(wǎng)站優(yōu)化,還要知道如何使用SEO優(yōu)化工具來(lái)加快網(wǎng)站優(yōu)化的過(guò)程。今天, 推薦了十個(gè)實(shí)用網(wǎng)站SEO優(yōu)化工具,希望對大家有所幫助。
  1. 搜索引擎抓取內容模擬器
  它可以模擬蜘蛛抓取特定網(wǎng)頁(yè),包括文本、鏈接、關(guān)鍵字和描述
  2. 頁(yè)面相似度檢測工具
  檢查兩頁(yè)的相似度(如果相似度超過(guò)80%,可能會(huì )受到處罰)。
  網(wǎng)站地圖制作工具
  1. 在線(xiàn)制作小網(wǎng)站地圖文件
  2. 使用工具制作中型網(wǎng)站地圖
  這是一個(gè)非常好的免費網(wǎng)站地圖制作工具:站點(diǎn)地圖生成器
  官方下載地址:
  
  四、SEO優(yōu)化輔助工具
  中國切()。
  5. 百度指數
  顯示注意和
  指定關(guān)鍵詞的媒體關(guān)注以圖表的形式在百度中,登錄后可以定義列表。
  6. 關(guān)鍵詞熱門(mén)排名和指數
  百度排行榜:
  序曲關(guān)鍵詞工具:
  7. 網(wǎng)站站長(cháng)工具
  1. 搜索引擎優(yōu)化站長(cháng)工具:
  2. 愛(ài)站工具:
  
  3. 站長(cháng)助手:
  8. 網(wǎng)站流量統計工具
  1. 百度統計:
  2. CNZZ數據專(zhuān)家:
  *它是每個(gè)網(wǎng)站隨時(shí)監控自己網(wǎng)站流量的必備工具
  9. 無(wú)效的鏈接檢查工具
  1、賽努鏈接偵探()
  2、W3C 智能檢查器()
  10. 網(wǎng)站歷史查詢(xún)工具
  互聯(lián)網(wǎng)檔案館保存了自1996年以來(lái)使用Alexa搜索引擎獲得的網(wǎng)站材料
  以上就是 分享的十個(gè)SEO優(yōu)化工具,都非常實(shí)用,可以加速你的網(wǎng)站SEO效果。

解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 134 次瀏覽 ? 2022-11-11 18:24 ? 來(lái)自相關(guān)話(huà)題

  解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法
  在過(guò)去的幾個(gè)月里,我學(xué)習了一些新技術(shù),使用前端制作了幾個(gè)移動(dòng)應用程序,還學(xué)習了一些關(guān)于 java 和 android 開(kāi)發(fā)的知識。經(jīng)過(guò)對比,我發(fā)現使用前端開(kāi)發(fā)app的學(xué)習成本與原生開(kāi)發(fā)app相比。時(shí)間真的很短,很方便。
  我第一次做應用程序時(shí),我使用了 apicloud。我覺(jué)得使用這個(gè)平臺開(kāi)發(fā)應用程序真的很容易上手。我只花了一個(gè)上午學(xué)習就開(kāi)始開(kāi)發(fā)自己的項目。創(chuàng )建應用時(shí),可以選擇多個(gè)模板,文檔易于查看,功能也足夠豐富。
  模塊很多,使用起來(lái)非常方便。第一次做app,我用微信、微博、QQ登錄分享、支付寶和微信支付、高德地圖定位、極光推送這些模塊來(lái)實(shí)現想要的功能。(貌似公司第一次實(shí)現了push功能,默默的給自己點(diǎn)贊和鼓勵。平臺官方推薦的vue框架也是我非常喜歡的一個(gè)框架。在做整個(gè)app的過(guò)程中,基本沒(méi)有原生js操作,dom樹(shù)的行為,所有功能都是通過(guò)數據綁定的方式實(shí)現的比如execScript方法,可以很方便的執行其他頁(yè)面的功能,
  
  五一假期,我很感興趣,花了一個(gè)下午開(kāi)發(fā)了一個(gè)粗糙的應用圖靈聊天機器人來(lái)玩。
  用apicloud完成app后,再學(xué)習dcloud,開(kāi)發(fā)下一個(gè)app。與apicloud相比,dcloud的體驗讓我更不舒服。dcloud 文檔大部分是 mui 文檔和 plus 文檔。因為我還是想用vue框架,所以在開(kāi)發(fā)過(guò)程中出現了很多問(wèn)題。vue框架mounted生命周期開(kāi)始時(shí)執行的事件與dcloud的plus ready事件沖突相同,導致頁(yè)面加載順序問(wèn)題。當頁(yè)面剛打開(kāi)時(shí),頁(yè)面中會(huì )出現vue的{{}}雙括號。一些樣式的mui也和自己的頁(yè)面有沖突,這使得android ios手機出現各種問(wèn)題。有些功能實(shí)現起來(lái)比較復雜,有的甚至需要了解原生的java和android開(kāi)發(fā)語(yǔ)言,然后使用js調用開(kāi)發(fā)。個(gè)人dcloud體驗比較差,這也可能是我技術(shù)水平還比較低的原因。
  接下來(lái)總結一些我認為apicloud優(yōu)于dcloud的方法和優(yōu)勢。
  1.上拉加載下拉刷新。在aplcud中實(shí)現比dcloud方便很多,文檔也很詳細。
  2.頁(yè)面加載、跳轉、重新加載和刷新,頁(yè)面一些慣性效果的實(shí)現。
  3、分享方面,dcloud只有微信、新浪、微博分享,QQ和騰訊微博分享的兩個(gè)例子。apicloud 在實(shí)現上沒(méi)有自由。
  
  4. 支付。dcloud的支付需要將原生sdk放入并引用。由于甲方的背景,目前還沒(méi)有實(shí)現。apicloud的支付實(shí)現起來(lái)很簡(jiǎn)單。
  5. dcloud 在部分安卓版本較低的機型(如安卓4.4)上不支持es6語(yǔ)法。
  6、dcloud的生態(tài)環(huán)境不如apicloud。如果你在社區提出問(wèn)題,apicloud 可以很快得到答案并解決它,但在 dcloud 社區中存在問(wèn)題。
  7.對于框架支持,我用vue比較多,在apicloud上比較完美。
  8. dcloud上還有一些問(wèn)題沒(méi)有解決。根據文檔,據說(shuō)DOM節點(diǎn)過(guò)多時(shí)會(huì )出現問(wèn)題。
  9、dcloud中mui框架的一些方法還是需要在dom節點(diǎn)上操作,這和vue的概念有沖突。作為一個(gè)重度vue用戶(hù),原生js不熟悉dom節點(diǎn)的操作,開(kāi)發(fā)過(guò)程中有數據綁定。擁有原生 js 似乎有點(diǎn)不和諧和不舒服。
  我暫時(shí)想到了這些問(wèn)題。如果不是業(yè)務(wù)需求,我更傾向于apicloud。下一個(gè)項目,甲方仍然需要使用dcloud進(jìn)行開(kāi)發(fā)。希望在接下來(lái)的開(kāi)發(fā)中,能學(xué)到更多的知識,找到dcloud。很棒的地方。
  解決方案:騰訊云微服務(wù)引擎 TSE 10月產(chǎn)品動(dòng)態(tài)
  十月動(dòng)態(tài)云原生網(wǎng)關(guān)
  【新特性】Kong網(wǎng)關(guān)支持彈性伸縮:Kong會(huì )根據系統指標(CPU利用率)自動(dòng)擴容和縮容,可以配置彈性伸縮策略,Kong會(huì )自動(dòng)伸縮節點(diǎn)。
  【新增功能】Kong網(wǎng)關(guān)支持使用Kong Ingress Controller:Kong可以在線(xiàn)使用Kong Ingress Controller能力,方便接入你的騰訊云容器集群。
  【新增功能】Kong網(wǎng)關(guān)支持高級限流:Kong推出了高級限流插件,支持分布式限流和多時(shí)間多資源維度的請求排隊。
  【新特性】Nginx Ingress 支持使用原生 YAML 創(chuàng )建 Ingress 資源: Ingress 新流程優(yōu)化,支持 YAML 和表單兩種方式上傳。
  【新功能】Nginx Ingress 支持域名管理和證書(shū)管理:Nginx Ingress 支持管理你的域名和證書(shū)。
  注冊配置中心
  【遷移能力】 Nacos 雙注冊雙發(fā)現工具支持 Nacos Client 2.1.0 版本。
  
  【新增功能】Nacos 2.1.0.x 版本支持grpc認證。
  【新體驗】修復開(kāi)源Nacos各節點(diǎn)訂閱數據不同步的問(wèn)題。
  【新增功能】Eureka支持公網(wǎng)訪(fǎng)問(wèn)白名單:為了您的訪(fǎng)問(wèn)安全,可以在開(kāi)啟公網(wǎng)訪(fǎng)問(wèn)時(shí)配置IP白名單。
  【新增功能】Eureka支持客戶(hù)端認證:在參數配置中,支持開(kāi)啟客戶(hù)端認證功能,設置用戶(hù)賬號密碼。
  【新功能】Apollo支持修改管理員密碼和Token。
  【商業(yè)化】新增法蘭克福、東京、硅谷地區。
  服務(wù)管理中心
  【新特性】支持通過(guò)XDS v3標準協(xié)議訪(fǎng)問(wèn)官方開(kāi)源的Envoy。
  【新增功能】新增分布式限流能力,助您輕松應對流量高峰。
  
  【新增功能】新增對自定義路由規則的支持,幫助您更好地實(shí)現灰度發(fā)布等場(chǎng)景。
  【新功能】增加附近的訪(fǎng)問(wèn)能力,以幫助減少您的網(wǎng)絡(luò )延遲。
  彈性微服務(wù)
  【新特性】彈性微服務(wù)增加查看資源原生YAML功能的支持。
  【新特性】彈性微服務(wù)支持通過(guò)標簽進(jìn)行資源管理、權限配置和基于標簽的計費管理。
  【新特性】彈性微服務(wù)新增日志抽取方式,支持在log采集規則中配置JSON、單行完全正則和多行完全正則抽取模式。
  11月,宣布云原生網(wǎng)關(guān)Kong將支持根據TCP連接數進(jìn)行彈性伸縮,幫助您更好地應對流量高峰。云原生網(wǎng)關(guān) Kong 即將支持斷路器,有效保護您的后端服務(wù)。云原生網(wǎng)關(guān) Kong 即將支持高級參數重寫(xiě)功能,您可以使用運行時(shí)變量來(lái)重寫(xiě)請求/響應參數。云原生網(wǎng)關(guān) Nginx Ingress 即將支持自定義日志格式。您可以根據需要配置日志格式內容。云原生網(wǎng)關(guān) Nginx Ingress 即將支持直連彈性微服務(wù)引擎,簡(jiǎn)化您的使用。注冊與配置中心注冊與配置中心即將支持Prometheus監控,提供更多維度、更精細的可觀(guān)察性能力,幫助您及時(shí)發(fā)現業(yè)務(wù)問(wèn)題。注冊配置中心支持日志服務(wù)CLS,提供持久化日志存儲和多種采集模式配置。Nacos新增遷移功能:即將加入遷移工具的產(chǎn)品化能力,讓您輕松將自建注冊中心遷移到云端。Nacos新增監控概覽:支持查看關(guān)鍵系統和業(yè)務(wù)指標以及配置告警。Nacos 2.1.0.2 支持配置多個(gè)灰度發(fā)布。服務(wù)治理中心支持SpringCloud+eureka/nacos/consul應用無(wú)縫遷移到Polaris(javaagent)。服務(wù)管理中心即將支持接口級熔斷。Polaris 控制臺將很快支持用戶(hù)操作記錄。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。 查看全部

  解決方案:前端開(kāi)發(fā)app,關(guān)于apicloud與dcloud的我的一些看法
  在過(guò)去的幾個(gè)月里,我學(xué)習了一些新技術(shù),使用前端制作了幾個(gè)移動(dòng)應用程序,還學(xué)習了一些關(guān)于 java 和 android 開(kāi)發(fā)的知識。經(jīng)過(guò)對比,我發(fā)現使用前端開(kāi)發(fā)app的學(xué)習成本與原生開(kāi)發(fā)app相比。時(shí)間真的很短,很方便。
  我第一次做應用程序時(shí),我使用了 apicloud。我覺(jué)得使用這個(gè)平臺開(kāi)發(fā)應用程序真的很容易上手。我只花了一個(gè)上午學(xué)習就開(kāi)始開(kāi)發(fā)自己的項目。創(chuàng )建應用時(shí),可以選擇多個(gè)模板,文檔易于查看,功能也足夠豐富。
  模塊很多,使用起來(lái)非常方便。第一次做app,我用微信、微博、QQ登錄分享、支付寶和微信支付、高德地圖定位、極光推送這些模塊來(lái)實(shí)現想要的功能。(貌似公司第一次實(shí)現了push功能,默默的給自己點(diǎn)贊和鼓勵。平臺官方推薦的vue框架也是我非常喜歡的一個(gè)框架。在做整個(gè)app的過(guò)程中,基本沒(méi)有原生js操作,dom樹(shù)的行為,所有功能都是通過(guò)數據綁定的方式實(shí)現的比如execScript方法,可以很方便的執行其他頁(yè)面的功能,
  
  五一假期,我很感興趣,花了一個(gè)下午開(kāi)發(fā)了一個(gè)粗糙的應用圖靈聊天機器人來(lái)玩。
  用apicloud完成app后,再學(xué)習dcloud,開(kāi)發(fā)下一個(gè)app。與apicloud相比,dcloud的體驗讓我更不舒服。dcloud 文檔大部分是 mui 文檔和 plus 文檔。因為我還是想用vue框架,所以在開(kāi)發(fā)過(guò)程中出現了很多問(wèn)題。vue框架mounted生命周期開(kāi)始時(shí)執行的事件與dcloud的plus ready事件沖突相同,導致頁(yè)面加載順序問(wèn)題。當頁(yè)面剛打開(kāi)時(shí),頁(yè)面中會(huì )出現vue的{{}}雙括號。一些樣式的mui也和自己的頁(yè)面有沖突,這使得android ios手機出現各種問(wèn)題。有些功能實(shí)現起來(lái)比較復雜,有的甚至需要了解原生的java和android開(kāi)發(fā)語(yǔ)言,然后使用js調用開(kāi)發(fā)。個(gè)人dcloud體驗比較差,這也可能是我技術(shù)水平還比較低的原因。
  接下來(lái)總結一些我認為apicloud優(yōu)于dcloud的方法和優(yōu)勢。
  1.上拉加載下拉刷新。在aplcud中實(shí)現比dcloud方便很多,文檔也很詳細。
  2.頁(yè)面加載、跳轉、重新加載和刷新,頁(yè)面一些慣性效果的實(shí)現。
  3、分享方面,dcloud只有微信、新浪、微博分享,QQ和騰訊微博分享的兩個(gè)例子。apicloud 在實(shí)現上沒(méi)有自由。
  
  4. 支付。dcloud的支付需要將原生sdk放入并引用。由于甲方的背景,目前還沒(méi)有實(shí)現。apicloud的支付實(shí)現起來(lái)很簡(jiǎn)單。
  5. dcloud 在部分安卓版本較低的機型(如安卓4.4)上不支持es6語(yǔ)法。
  6、dcloud的生態(tài)環(huán)境不如apicloud。如果你在社區提出問(wèn)題,apicloud 可以很快得到答案并解決它,但在 dcloud 社區中存在問(wèn)題。
  7.對于框架支持,我用vue比較多,在apicloud上比較完美。
  8. dcloud上還有一些問(wèn)題沒(méi)有解決。根據文檔,據說(shuō)DOM節點(diǎn)過(guò)多時(shí)會(huì )出現問(wèn)題。
  9、dcloud中mui框架的一些方法還是需要在dom節點(diǎn)上操作,這和vue的概念有沖突。作為一個(gè)重度vue用戶(hù),原生js不熟悉dom節點(diǎn)的操作,開(kāi)發(fā)過(guò)程中有數據綁定。擁有原生 js 似乎有點(diǎn)不和諧和不舒服。
  我暫時(shí)想到了這些問(wèn)題。如果不是業(yè)務(wù)需求,我更傾向于apicloud。下一個(gè)項目,甲方仍然需要使用dcloud進(jìn)行開(kāi)發(fā)。希望在接下來(lái)的開(kāi)發(fā)中,能學(xué)到更多的知識,找到dcloud。很棒的地方。
  解決方案:騰訊云微服務(wù)引擎 TSE 10月產(chǎn)品動(dòng)態(tài)
  十月動(dòng)態(tài)云原生網(wǎng)關(guān)
  【新特性】Kong網(wǎng)關(guān)支持彈性伸縮:Kong會(huì )根據系統指標(CPU利用率)自動(dòng)擴容和縮容,可以配置彈性伸縮策略,Kong會(huì )自動(dòng)伸縮節點(diǎn)。
  【新增功能】Kong網(wǎng)關(guān)支持使用Kong Ingress Controller:Kong可以在線(xiàn)使用Kong Ingress Controller能力,方便接入你的騰訊云容器集群。
  【新增功能】Kong網(wǎng)關(guān)支持高級限流:Kong推出了高級限流插件,支持分布式限流和多時(shí)間多資源維度的請求排隊。
  【新特性】Nginx Ingress 支持使用原生 YAML 創(chuàng )建 Ingress 資源: Ingress 新流程優(yōu)化,支持 YAML 和表單兩種方式上傳。
  【新功能】Nginx Ingress 支持域名管理和證書(shū)管理:Nginx Ingress 支持管理你的域名和證書(shū)。
  注冊配置中心
  【遷移能力】 Nacos 雙注冊雙發(fā)現工具支持 Nacos Client 2.1.0 版本。
  
  【新增功能】Nacos 2.1.0.x 版本支持grpc認證。
  【新體驗】修復開(kāi)源Nacos各節點(diǎn)訂閱數據不同步的問(wèn)題。
  【新增功能】Eureka支持公網(wǎng)訪(fǎng)問(wèn)白名單:為了您的訪(fǎng)問(wèn)安全,可以在開(kāi)啟公網(wǎng)訪(fǎng)問(wèn)時(shí)配置IP白名單。
  【新增功能】Eureka支持客戶(hù)端認證:在參數配置中,支持開(kāi)啟客戶(hù)端認證功能,設置用戶(hù)賬號密碼。
  【新功能】Apollo支持修改管理員密碼和Token。
  【商業(yè)化】新增法蘭克福、東京、硅谷地區。
  服務(wù)管理中心
  【新特性】支持通過(guò)XDS v3標準協(xié)議訪(fǎng)問(wèn)官方開(kāi)源的Envoy。
  【新增功能】新增分布式限流能力,助您輕松應對流量高峰。
  
  【新增功能】新增對自定義路由規則的支持,幫助您更好地實(shí)現灰度發(fā)布等場(chǎng)景。
  【新功能】增加附近的訪(fǎng)問(wèn)能力,以幫助減少您的網(wǎng)絡(luò )延遲。
  彈性微服務(wù)
  【新特性】彈性微服務(wù)增加查看資源原生YAML功能的支持。
  【新特性】彈性微服務(wù)支持通過(guò)標簽進(jìn)行資源管理、權限配置和基于標簽的計費管理。
  【新特性】彈性微服務(wù)新增日志抽取方式,支持在log采集規則中配置JSON、單行完全正則和多行完全正則抽取模式。
  11月,宣布云原生網(wǎng)關(guān)Kong將支持根據TCP連接數進(jìn)行彈性伸縮,幫助您更好地應對流量高峰。云原生網(wǎng)關(guān) Kong 即將支持斷路器,有效保護您的后端服務(wù)。云原生網(wǎng)關(guān) Kong 即將支持高級參數重寫(xiě)功能,您可以使用運行時(shí)變量來(lái)重寫(xiě)請求/響應參數。云原生網(wǎng)關(guān) Nginx Ingress 即將支持自定義日志格式。您可以根據需要配置日志格式內容。云原生網(wǎng)關(guān) Nginx Ingress 即將支持直連彈性微服務(wù)引擎,簡(jiǎn)化您的使用。注冊與配置中心注冊與配置中心即將支持Prometheus監控,提供更多維度、更精細的可觀(guān)察性能力,幫助您及時(shí)發(fā)現業(yè)務(wù)問(wèn)題。注冊配置中心支持日志服務(wù)CLS,提供持久化日志存儲和多種采集模式配置。Nacos新增遷移功能:即將加入遷移工具的產(chǎn)品化能力,讓您輕松將自建注冊中心遷移到云端。Nacos新增監控概覽:支持查看關(guān)鍵系統和業(yè)務(wù)指標以及配置告警。Nacos 2.1.0.2 支持配置多個(gè)灰度發(fā)布。服務(wù)治理中心支持SpringCloud+eureka/nacos/consul應用無(wú)縫遷移到Polaris(javaagent)。服務(wù)管理中心即將支持接口級熔斷。Polaris 控制臺將很快支持用戶(hù)操作記錄。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù) 彈性微服務(wù)即將推出,采用按月預留的優(yōu)惠券計費模式。您可以通過(guò)預付費以更優(yōu)惠的價(jià)格使用彈性微服務(wù)。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將很快支持權限管理功能。您可以通過(guò)控制臺管理業(yè)務(wù)中不同角色的資源和操作權限范圍。彈性微服務(wù)將很快通過(guò)使用 K8s 來(lái)支持資源管理。您可以通過(guò)編輯 YAML 文件來(lái)管理彈性微服務(wù)中的資源。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。彈性微服務(wù)將增加更多彈性規則指標。您可以通過(guò)CPU、內存、網(wǎng)絡(luò )、硬盤(pán)相關(guān)指標設置和應用彈性伸縮策略。

解讀:再談 API 的撰寫(xiě) - 總覽

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2022-11-08 14:37 ? 來(lái)自相關(guān)話(huà)題

  解讀:再談 API 的撰寫(xiě) - 總覽
  背景
  去年我寫(xiě)了一篇文章 文章:編寫(xiě)合格的 REST API。當時(shí),Juniper 在德州裁掉了我們十多人的團隊。在過(guò)去的六個(gè)月里,該團隊中有一半人一直在研究 REST API。當我接手工作時(shí),我發(fā)現那些 API 寫(xiě)得很業(yè)余,沒(méi)有考慮幾個(gè)基本的 HTTP/1.1 RFC(2616、7232、5988 等)的實(shí)現,所以我花了一些時(shí)間重寫(xiě)并寫(xiě)了 文章。
  從今天來(lái)看,我當時(shí)搭建的系統也有很多問(wèn)題,很多API之外的問(wèn)題都沒(méi)有考慮:
  理想情況下,一旦編寫(xiě)了 API,它應該能夠自動(dòng)生成文檔和測試用例,并且 API 系統還應該提供一整套用于生成指標的統計 API。默認情況下,API 系統本身應該采集很多指標,例如每個(gè) API 的響應時(shí)間、狀態(tài)碼等,使用 collectd/statd 來(lái)采集信息,并可以進(jìn)一步發(fā)送給 datadog/new relic 等 APM 系統。
  在 adRise,我們有一個(gè)運行了幾年的 API 系統,不符合 RFC,(幾乎)未記錄,(幾乎)未測試,(幾乎)未監控,最糟糕的是,它既不具備開(kāi)發(fā)效率,也不具備高運營(yíng)效率。所以,在過(guò)去的一兩個(gè)月里,我領(lǐng)導了一個(gè)全新的 API 系統的開(kāi)發(fā)。
  目標
  在建立一個(gè)新的系統之前,我們需要建立一些目標。以下是我在設計 API 時(shí)寫(xiě)下的一些目標:
  其中,內省收錄兩層含義:
  選擇
  有了以上目標,下一步就是進(jìn)行技術(shù)選型。技術(shù)選擇不能獨立于團隊來(lái)完成。如果我個(gè)人選擇基礎語(yǔ)言和框架的話(huà),我可能會(huì )選擇基于 Erlang/OTP 的 Phoenix,使用 Elixir 開(kāi)發(fā)的 Phoenix,或者干脆使用 Plug(Phoenix 的基石)。因為 Plug/Phoenix 通過(guò)組合構建管道的方式符合我的思路,Elixir 對宏的支持以及 Erlang 語(yǔ)言核心的模式匹配使得路由等子系統高效、簡(jiǎn)潔、美觀(guān),而 Erlang/OTP 在高并發(fā)下具有健壯性又是一個(gè) API 系統努力的方向。
  但是,我需要考慮團隊的實(shí)際情況。在 adRise,我們使用 node.js 作為后端的主要技術(shù)棧(以及一些 PHP/Python/scala),所以 API 系統最好基于 node.js 來(lái)完成。node.js下適合寫(xiě)API的框架有很多,比如express、restify、hapi、loopback、sails.js等,綜合回顧了這些框架后,我選擇restify有三個(gè)原因:
  事實(shí)證明,這是一個(gè)相當不錯的選擇。
  基本框架設置好之后,接下來(lái)就是選擇核心組件了。第一個(gè)是驗證器。很多人在搭建系統的時(shí)候不關(guān)注驗證者,或者沒(méi)有統一的視角去看待驗證者,這樣不好。任何系統的運行環(huán)境都是一個(gè)骯臟的世界,到處都是鬼、鬼、污;而我們希望系統本身是清凈的,是極樂(lè )凈土,我們該怎么辦?
  簡(jiǎn)單、干凈的輸入和輸出。對于 API,允許使用哪些標頭、正文和查詢(xún)字符串?什么樣的響應機構有資格?這需要明確定義。所以我們需要一個(gè)合適的驗證器。如果說(shuō)選幀就像Shiro的選秀姑娘,換飛燕手會(huì )讓你眼花繚亂,選擇validator就像姜維的觀(guān)點(diǎn)??磥?lái)只能用王平和廖化了。在github上逛了半天,最后只能用joi和json schema。
  json schema其實(shí)很好用,非常接近各種API工具的schema(swagger直接使用json schema),可惜太冗長(cháng)了,讓程序員寫(xiě)這個(gè)有點(diǎn)太冗長(cháng)了:
  {
"title": "Example Schema",
"type": "object",
<p>
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}</p>
  而joi是hapi提供的validator,界面非常人性化,同樣的schema,描述的代碼量只有前者的1/3:
  joi.object().keys({
firstName: joi.string().required(),
lastName: joi.string().required(),
<p>
age: joi.number().min(0).description(&#39;Age in years&#39;),
});</p>
  而且它還可以很方便的將輸出(當然需要各種適配)反向輸出為json schema。輸出為 json 模式有什么好處?可以用來(lái)生成swagger doc!swagger 是一種 API 描述語(yǔ)言,它定義了客戶(hù)端和服務(wù)器之間的協(xié)議。swagger doc 可以生成 API 文檔和測試 UI,例如:
  在接下來(lái)的 文章 中,我將詳細介紹 swagger。
  讓我們再看看ORM。經(jīng)常使用 express 的同學(xué)應該明白,express 本身并不會(huì )過(guò)多地干擾您訪(fǎng)問(wèn)數據的方式。任何人都可以根據自己的需要使用自己需要的數據訪(fǎng)問(wèn)方式:可以是raw db access,也可以是ORM。在團隊中工作時(shí),這種靈活性會(huì )受到傷害。它使每個(gè)人都可以輕松地編寫(xiě)風(fēng)格非常不一致的代碼。而且,數據庫寫(xiě)入和讀取數據的規范化也將在沒(méi)有 ORM 的情況下帶來(lái)好處。大量的臨時(shí)代碼。因此,盡管帶有所有臭名昭著(zhù)的 ORM,我還是想在涉及數據訪(fǎng)問(wèn)的級別使用 ORM。
  我們系統的數據庫是異構的。因此,只對一種類(lèi)型的數據庫有效的純種 ORM,例如 Mongoose / Sequelize,是不適合的。最好的選擇是接口支持多種不同的數據庫。當需要特殊查詢(xún)或者操作時(shí)可以切換到原生的ORM。這樣,工程師的效率和系統的效率就達到了平衡。在 node.js 下,這樣的 ORM 并不多,似乎只有 waterline 可用。waterline 是sails.js 的開(kāi)源ORM,支持多種數據庫的混合使用。在各個(gè)數據庫無(wú)法統一的操作界面上(比如mongodb的upsert),可以很方便的將其生成的模型轉成native,直接使用數據庫。界面。
  另外,水線(xiàn)模型的schema采用json描述,便于在系統導入導出時(shí)轉換成joi schema進(jìn)行校驗。
  // waterline schema
const attributes = {
user_id: { type: &#39;integer&#39;, required: true },
content_id: { type: &#39;integer&#39;, required: true },
content_type: { type: &#39;string&#39;, required: true },
}
  接下來(lái)是日志系統。一個(gè) API 系統可能收錄多個(gè)服務(wù)器,因此需要集中采集、處理和可視化日志。一般來(lái)說(shuō),我們可以使用ELK,或者第三方服務(wù)。如果在系統設計之初就考慮日志的集中管理,那么日志的采集應該考慮結構化的結構而不是字符串。雖然用grok可以處理字符串,但畢竟效率低下,而且必須為每個(gè)日志編寫(xiě)grok表達式。由于node restify默認使用bunyan做日志,而bunyan可以生成json格式的日志,直接滿(mǎn)足了我們的需求。
  最后,讓我們看一下測試框架。一個(gè)合格的系統離不開(kāi)一個(gè)合適的測試框架。我的選擇是 ava/rewire/supertest/nyc。ava是一個(gè)單元測試框架,類(lèi)似于mocha/tape等常見(jiàn)的測試框架,解決了同樣的問(wèn)題,但是ava可以并發(fā)執行,效率很高,對es6有很好的支持,測試用例可以返回Promise,ava處理剩下的事情。有時(shí)我們需要測試一個(gè)模塊中沒(méi)有導出的函數,或者在測試的時(shí)候Mock一些我們不關(guān)心的函數。Rewire 可以輕松處理此類(lèi)問(wèn)題。supertest可以做API級別的測試,也就是功能測試,可以用nyc做測試覆蓋。
  今天就講這么多,下一次講如何構建一個(gè)API系統。
  解讀:學(xué)會(huì )這一點(diǎn),無(wú)視優(yōu)采云采集規則自動(dòng)采集發(fā)布
  做過(guò)網(wǎng)站的SEO網(wǎng)站管理員知道,如果他們想始終如一地輸出網(wǎng)站高質(zhì)量的內容。不建議靠人工編輯,一站還是可以堅持的,10、50個(gè)都很難堅持,所以我們需要用優(yōu)采云采集器這樣的文章采集器。
  首先,我們來(lái)談?wù)剝?yōu)采云車(chē)采集器,作為一款老牌采集工具,作為一款老牌采集工具,在互聯(lián)網(wǎng)采集行業(yè)站穩了腳跟。然而,隨著(zhù)互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,不便之處開(kāi)始出現。
  優(yōu)采云采集器是收費的。你可能會(huì )說(shuō)我可以使用優(yōu)采云采集器的破解版本。好吧,你可以這么說(shuō),但是使用過(guò)優(yōu)采云采集器的網(wǎng)站管理員知道,使用優(yōu)采云采集需要我們編寫(xiě)采集規則。說(shuō)哪些站長(cháng)會(huì )編碼是可以的,但大多數站長(cháng)都不懂所謂的采集規則,更別說(shuō)正則表達式了。這已經(jīng)讓不少小白站長(cháng)望而生畏。另一個(gè)原因是使用優(yōu)采云采集器采集需要的配置參數太多。例如采集批量采集頁(yè)面鏈接被添加到需要指定第一項、容差和項目數的需要中。當需要大量具有不同參數和不同頁(yè)面的采集數據時(shí),不可能為每個(gè)任務(wù)手動(dòng)設置。
  
  市場(chǎng)上有方便且功能強大的免費采集工具嗎?有些人一定有,最近找到了優(yōu)采云采集器替代產(chǎn)品,使用起來(lái)非常方便,可以采集任何新聞來(lái)源,最重要的是,它永遠免費,因為開(kāi)發(fā)人員厭倦了哪些采集軟件打著(zhù)免費的旗號,做一些有償的事情。他看穿了自己受不了了,所以干脆自己寫(xiě)了一套免費的采集工具。這里只是SEO分享,沒(méi)有推薦。
  首先,通過(guò)設置關(guān)鍵詞,選擇
  
  采集數據源,選擇文章 采集的存儲路徑,選擇關(guān)鍵詞采集中的文章數,然后鍵入并接收,整個(gè)過(guò)程不到1分鐘。每天掛斷電話(huà)采集還要同步完成發(fā)布任務(wù)和推送任務(wù)。
  搜索引擎優(yōu)化是多維的。我們需要做好SEO站內優(yōu)化和站外華,我們站長(cháng)的每一個(gè)環(huán)節都做得很好,那么你網(wǎng)站不被搜索引擎喜歡就沒(méi)有意義了。這就是今天分享的全部?jì)热?,或者那句?huà)我受到啟發(fā)成為一名 SEO 布道者,我對分享 SEO 是認真的。不明白可以留言評論區,點(diǎn)贊關(guān)注,下期我會(huì )分享更多SEO相關(guān)的干貨! 查看全部

  解讀:再談 API 的撰寫(xiě) - 總覽
  背景
  去年我寫(xiě)了一篇文章 文章:編寫(xiě)合格的 REST API。當時(shí),Juniper 在德州裁掉了我們十多人的團隊。在過(guò)去的六個(gè)月里,該團隊中有一半人一直在研究 REST API。當我接手工作時(shí),我發(fā)現那些 API 寫(xiě)得很業(yè)余,沒(méi)有考慮幾個(gè)基本的 HTTP/1.1 RFC(2616、7232、5988 等)的實(shí)現,所以我花了一些時(shí)間重寫(xiě)并寫(xiě)了 文章。
  從今天來(lái)看,我當時(shí)搭建的系統也有很多問(wèn)題,很多API之外的問(wèn)題都沒(méi)有考慮:
  理想情況下,一旦編寫(xiě)了 API,它應該能夠自動(dòng)生成文檔和測試用例,并且 API 系統還應該提供一整套用于生成指標的統計 API。默認情況下,API 系統本身應該采集很多指標,例如每個(gè) API 的響應時(shí)間、狀態(tài)碼等,使用 collectd/statd 來(lái)采集信息,并可以進(jìn)一步發(fā)送給 datadog/new relic 等 APM 系統。
  在 adRise,我們有一個(gè)運行了幾年的 API 系統,不符合 RFC,(幾乎)未記錄,(幾乎)未測試,(幾乎)未監控,最糟糕的是,它既不具備開(kāi)發(fā)效率,也不具備高運營(yíng)效率。所以,在過(guò)去的一兩個(gè)月里,我領(lǐng)導了一個(gè)全新的 API 系統的開(kāi)發(fā)。
  目標
  在建立一個(gè)新的系統之前,我們需要建立一些目標。以下是我在設計 API 時(shí)寫(xiě)下的一些目標:
  其中,內省收錄兩層含義:
  選擇
  有了以上目標,下一步就是進(jìn)行技術(shù)選型。技術(shù)選擇不能獨立于團隊來(lái)完成。如果我個(gè)人選擇基礎語(yǔ)言和框架的話(huà),我可能會(huì )選擇基于 Erlang/OTP 的 Phoenix,使用 Elixir 開(kāi)發(fā)的 Phoenix,或者干脆使用 Plug(Phoenix 的基石)。因為 Plug/Phoenix 通過(guò)組合構建管道的方式符合我的思路,Elixir 對宏的支持以及 Erlang 語(yǔ)言核心的模式匹配使得路由等子系統高效、簡(jiǎn)潔、美觀(guān),而 Erlang/OTP 在高并發(fā)下具有健壯性又是一個(gè) API 系統努力的方向。
  但是,我需要考慮團隊的實(shí)際情況。在 adRise,我們使用 node.js 作為后端的主要技術(shù)棧(以及一些 PHP/Python/scala),所以 API 系統最好基于 node.js 來(lái)完成。node.js下適合寫(xiě)API的框架有很多,比如express、restify、hapi、loopback、sails.js等,綜合回顧了這些框架后,我選擇restify有三個(gè)原因:
  事實(shí)證明,這是一個(gè)相當不錯的選擇。
  基本框架設置好之后,接下來(lái)就是選擇核心組件了。第一個(gè)是驗證器。很多人在搭建系統的時(shí)候不關(guān)注驗證者,或者沒(méi)有統一的視角去看待驗證者,這樣不好。任何系統的運行環(huán)境都是一個(gè)骯臟的世界,到處都是鬼、鬼、污;而我們希望系統本身是清凈的,是極樂(lè )凈土,我們該怎么辦?
  簡(jiǎn)單、干凈的輸入和輸出。對于 API,允許使用哪些標頭、正文和查詢(xún)字符串?什么樣的響應機構有資格?這需要明確定義。所以我們需要一個(gè)合適的驗證器。如果說(shuō)選幀就像Shiro的選秀姑娘,換飛燕手會(huì )讓你眼花繚亂,選擇validator就像姜維的觀(guān)點(diǎn)??磥?lái)只能用王平和廖化了。在github上逛了半天,最后只能用joi和json schema。
  json schema其實(shí)很好用,非常接近各種API工具的schema(swagger直接使用json schema),可惜太冗長(cháng)了,讓程序員寫(xiě)這個(gè)有點(diǎn)太冗長(cháng)了:
  {
"title": "Example Schema",
"type": "object",
<p>
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}</p>
  而joi是hapi提供的validator,界面非常人性化,同樣的schema,描述的代碼量只有前者的1/3:
  joi.object().keys({
firstName: joi.string().required(),
lastName: joi.string().required(),
<p>
age: joi.number().min(0).description(&#39;Age in years&#39;),
});</p>
  而且它還可以很方便的將輸出(當然需要各種適配)反向輸出為json schema。輸出為 json 模式有什么好處?可以用來(lái)生成swagger doc!swagger 是一種 API 描述語(yǔ)言,它定義了客戶(hù)端和服務(wù)器之間的協(xié)議。swagger doc 可以生成 API 文檔和測試 UI,例如:
  在接下來(lái)的 文章 中,我將詳細介紹 swagger。
  讓我們再看看ORM。經(jīng)常使用 express 的同學(xué)應該明白,express 本身并不會(huì )過(guò)多地干擾您訪(fǎng)問(wèn)數據的方式。任何人都可以根據自己的需要使用自己需要的數據訪(fǎng)問(wèn)方式:可以是raw db access,也可以是ORM。在團隊中工作時(shí),這種靈活性會(huì )受到傷害。它使每個(gè)人都可以輕松地編寫(xiě)風(fēng)格非常不一致的代碼。而且,數據庫寫(xiě)入和讀取數據的規范化也將在沒(méi)有 ORM 的情況下帶來(lái)好處。大量的臨時(shí)代碼。因此,盡管帶有所有臭名昭著(zhù)的 ORM,我還是想在涉及數據訪(fǎng)問(wèn)的級別使用 ORM。
  我們系統的數據庫是異構的。因此,只對一種類(lèi)型的數據庫有效的純種 ORM,例如 Mongoose / Sequelize,是不適合的。最好的選擇是接口支持多種不同的數據庫。當需要特殊查詢(xún)或者操作時(shí)可以切換到原生的ORM。這樣,工程師的效率和系統的效率就達到了平衡。在 node.js 下,這樣的 ORM 并不多,似乎只有 waterline 可用。waterline 是sails.js 的開(kāi)源ORM,支持多種數據庫的混合使用。在各個(gè)數據庫無(wú)法統一的操作界面上(比如mongodb的upsert),可以很方便的將其生成的模型轉成native,直接使用數據庫。界面。
  另外,水線(xiàn)模型的schema采用json描述,便于在系統導入導出時(shí)轉換成joi schema進(jìn)行校驗。
  // waterline schema
const attributes = {
user_id: { type: &#39;integer&#39;, required: true },
content_id: { type: &#39;integer&#39;, required: true },
content_type: { type: &#39;string&#39;, required: true },
}
  接下來(lái)是日志系統。一個(gè) API 系統可能收錄多個(gè)服務(wù)器,因此需要集中采集、處理和可視化日志。一般來(lái)說(shuō),我們可以使用ELK,或者第三方服務(wù)。如果在系統設計之初就考慮日志的集中管理,那么日志的采集應該考慮結構化的結構而不是字符串。雖然用grok可以處理字符串,但畢竟效率低下,而且必須為每個(gè)日志編寫(xiě)grok表達式。由于node restify默認使用bunyan做日志,而bunyan可以生成json格式的日志,直接滿(mǎn)足了我們的需求。
  最后,讓我們看一下測試框架。一個(gè)合格的系統離不開(kāi)一個(gè)合適的測試框架。我的選擇是 ava/rewire/supertest/nyc。ava是一個(gè)單元測試框架,類(lèi)似于mocha/tape等常見(jiàn)的測試框架,解決了同樣的問(wèn)題,但是ava可以并發(fā)執行,效率很高,對es6有很好的支持,測試用例可以返回Promise,ava處理剩下的事情。有時(shí)我們需要測試一個(gè)模塊中沒(méi)有導出的函數,或者在測試的時(shí)候Mock一些我們不關(guān)心的函數。Rewire 可以輕松處理此類(lèi)問(wèn)題。supertest可以做API級別的測試,也就是功能測試,可以用nyc做測試覆蓋。
  今天就講這么多,下一次講如何構建一個(gè)API系統。
  解讀:學(xué)會(huì )這一點(diǎn),無(wú)視優(yōu)采云采集規則自動(dòng)采集發(fā)布
  做過(guò)網(wǎng)站的SEO網(wǎng)站管理員知道,如果他們想始終如一地輸出網(wǎng)站高質(zhì)量的內容。不建議靠人工編輯,一站還是可以堅持的,10、50個(gè)都很難堅持,所以我們需要用優(yōu)采云采集器這樣的文章采集器。
  首先,我們來(lái)談?wù)剝?yōu)采云車(chē)采集器,作為一款老牌采集工具,作為一款老牌采集工具,在互聯(lián)網(wǎng)采集行業(yè)站穩了腳跟。然而,隨著(zhù)互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,不便之處開(kāi)始出現。
  優(yōu)采云采集器是收費的。你可能會(huì )說(shuō)我可以使用優(yōu)采云采集器的破解版本。好吧,你可以這么說(shuō),但是使用過(guò)優(yōu)采云采集器的網(wǎng)站管理員知道,使用優(yōu)采云采集需要我們編寫(xiě)采集規則。說(shuō)哪些站長(cháng)會(huì )編碼是可以的,但大多數站長(cháng)都不懂所謂的采集規則,更別說(shuō)正則表達式了。這已經(jīng)讓不少小白站長(cháng)望而生畏。另一個(gè)原因是使用優(yōu)采云采集器采集需要的配置參數太多。例如采集批量采集頁(yè)面鏈接被添加到需要指定第一項、容差和項目數的需要中。當需要大量具有不同參數和不同頁(yè)面的采集數據時(shí),不可能為每個(gè)任務(wù)手動(dòng)設置。
  
  市場(chǎng)上有方便且功能強大的免費采集工具嗎?有些人一定有,最近找到了優(yōu)采云采集器替代產(chǎn)品,使用起來(lái)非常方便,可以采集任何新聞來(lái)源,最重要的是,它永遠免費,因為開(kāi)發(fā)人員厭倦了哪些采集軟件打著(zhù)免費的旗號,做一些有償的事情。他看穿了自己受不了了,所以干脆自己寫(xiě)了一套免費的采集工具。這里只是SEO分享,沒(méi)有推薦。
  首先,通過(guò)設置關(guān)鍵詞,選擇
  
  采集數據源,選擇文章 采集的存儲路徑,選擇關(guān)鍵詞采集中的文章數,然后鍵入并接收,整個(gè)過(guò)程不到1分鐘。每天掛斷電話(huà)采集還要同步完成發(fā)布任務(wù)和推送任務(wù)。
  搜索引擎優(yōu)化是多維的。我們需要做好SEO站內優(yōu)化和站外華,我們站長(cháng)的每一個(gè)環(huán)節都做得很好,那么你網(wǎng)站不被搜索引擎喜歡就沒(méi)有意義了。這就是今天分享的全部?jì)热?,或者那句?huà)我受到啟發(fā)成為一名 SEO 布道者,我對分享 SEO 是認真的。不明白可以留言評論區,點(diǎn)贊關(guān)注,下期我會(huì )分享更多SEO相關(guān)的干貨!

完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-11-07 17:14 ? 來(lái)自相關(guān)話(huà)題

  完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單
  本文分享自華為云社區《我用凱天平臺做一個(gè)字符串校驗API【凱天aPaaS之戰】-云社區-華為云》,作者:星星閃耀。
  1 開(kāi)天集成工作臺概述
  據華為官方文檔介紹,所謂華為云開(kāi)天集成工作臺是基于華為豐富的數字化轉型經(jīng)驗,為企業(yè)開(kāi)發(fā)者提供基于元數據的可擴展集成框架,減少應用間集成的工作量,沉淀連接器、業(yè)務(wù)模型、行業(yè)API等多種集成資產(chǎn),幫助客戶(hù)快速建立SaaS應用之間的連接通道,打破信息孤島和“煙囪”架構,實(shí)現快速搭建上線(xiàn)應用,不斷提升用戶(hù)體驗。
  該產(chǎn)品的官方網(wǎng)站是:. 凱天集成工作臺整體架構示意圖如下圖所示:
  凱天集成工作臺使合作伙伴能夠高效地將SaaS上云,與合作伙伴共同構建行業(yè)解決方案,共同積累和分享行業(yè)經(jīng)驗。開(kāi)天集成工作臺提供以下核心能力:
  (01) 標準數據模型管理:領(lǐng)域信息模型的采集、定義、管理能力支持建立行業(yè)標準領(lǐng)域信息模型庫,行業(yè)各廠(chǎng)商應用依托用于互連的標準域信息模型。
  (02) 靈活的API生命周期管理:支持合作伙伴的API設計、實(shí)現、測試、發(fā)布、運維、消費和運營(yíng),可以封裝成連接器和流,方便編排。
  (03) 可擴展的連接器管理:是擴展集成工作臺的流程編排能力的唯一途徑,提供豐富的預設連接器,用戶(hù)也可以基于A(yíng)PI自定義連接器。
  (04) 可視化流管理:基于連接器,以可視化的方式進(jìn)行流組合,實(shí)現一體化流編排。該擴展支持各種形式的編排,例如流程編排、事件編排等。
  凱天集成工作臺的優(yōu)勢如下:
  (01)豐富的行業(yè)經(jīng)驗:面向行業(yè)的業(yè)務(wù)模型庫,連接管理者、業(yè)務(wù)人員和IT人員。行業(yè)能力基于A(yíng)PI,覆蓋行業(yè)、城市治理、教育、辦公、消息、地圖、移動(dòng)應用等領(lǐng)域。SaaS應用之間的集成資產(chǎn)多樣化,開(kāi)箱即用,降低交付復雜度。
  (02) 靈活易用的集成:基于標準業(yè)務(wù)模型的集成模式,每個(gè)應用只需集成一次,使XYZ變成X+Y+Z。開(kāi)放的連接框架可以靈活定義各種連接器和流,以適應企業(yè)的業(yè)務(wù)邏輯。
  2 凱天集成工作臺用戶(hù)及應用場(chǎng)景
  凱天集成工作臺是一個(gè)“開(kāi)放、共生、智能、協(xié)同”的平臺,是開(kāi)發(fā)者、系統集成商和客戶(hù)之間的“橋梁”和“紐帶”。具體來(lái)說(shuō),用戶(hù)可以分為以下幾類(lèi):
  (01) 面向行業(yè)API開(kāi)發(fā)者:一站式完成行業(yè)API設計、編排、測試、發(fā)布、消費,打造API商業(yè)經(jīng)濟。
  (02) 面向行業(yè)應用開(kāi)發(fā)者:以低代碼或零代碼的方式輕松構建面向行業(yè)的SaaS應用,加速業(yè)務(wù)創(chuàng )新。
  (03) 對于系統集成商:與客戶(hù)無(wú)縫對接、集成開(kāi)發(fā)、項目交付和運維支持。同時(shí)積累云項目的綜合資產(chǎn),提高交付效率。
 ?。?4)以客戶(hù)為中心:企業(yè)集成資產(chǎn)的使用和管理,與系統集成商等生態(tài)資源合作,完成企業(yè)數字化平臺建設。
  凱天集成工作臺的應用場(chǎng)景也非常豐富,主要可以分為三類(lèi)應用場(chǎng)景:
 ?。?1)行業(yè)能力開(kāi)放場(chǎng)景。企業(yè)以API服務(wù)的形式開(kāi)放能力,通過(guò)API連接應用開(kāi)發(fā)者、系統集成商等,服務(wù)更多業(yè)務(wù)場(chǎng)景,快速形成產(chǎn)業(yè)鏈,讓企業(yè)用最低成本。滿(mǎn)足客戶(hù)分散且不斷增長(cháng)的需求。
  (02) 賦能行業(yè)應用創(chuàng )新場(chǎng)景,合作伙伴可以通過(guò)集成工作臺提供的低代碼/零代碼方式,輕松利用行業(yè)API、業(yè)務(wù)模型、連接器等各種資產(chǎn)完成應用開(kāi)發(fā)和部署;賦能不同層次的開(kāi)發(fā)者,大大提升企業(yè)應用的供給能力。
  (03) SaaS應用互聯(lián)場(chǎng)景下,企業(yè)應用建設隨著(zhù)業(yè)務(wù)發(fā)展逐步展開(kāi),需要解決現有企業(yè)應用與新應用的協(xié)同。通過(guò)在應用程序之間建立水管,價(jià)值信息可以在企業(yè)內部和企業(yè)之間流動(dòng)。通過(guò)集成工作臺,可以實(shí)現云應用、云應用和企業(yè)內部應用的集成??梢杂孟聢D來(lái)說(shuō)明:
  3 字符串檢查 API 快速構建
  首先在集成工作臺中進(jìn)入API生命周期管理的API組,點(diǎn)擊右上角新建組,輸入名稱(chēng)和描述。創(chuàng )建群組后,點(diǎn)擊API管理,進(jìn)入新建群組下的API管理頁(yè)面。
  
  進(jìn)入API管理頁(yè)面后,我們可以先在右上角創(chuàng )建一個(gè)API,進(jìn)入API創(chuàng )建頁(yè)面。
  根據您的需要輸入所有信息。
  這里的認證方式可以根據自己的需要定制。此處,為簡(jiǎn)單起見(jiàn),不選擇身份驗證(不推薦)。
  然后點(diǎn)擊下一步,自定義訪(fǎng)問(wèn)API的路徑,以及請求方式,是否支持跨域,底部的參數定義也很重要,根據需要選擇參數位置、名稱(chēng)、類(lèi)型、選項等.
  定義參數后,圖像類(lèi)似于下圖。
  單擊下一步以定義后端服務(wù)。這里有三個(gè)選項,一個(gè)是后端服務(wù),也就是API接口,一個(gè)是華為云中定義的功能流程圖,另一個(gè)是mock(我不太了解),這里我用的是華為CLOUD 的功能流程圖。
  可以看到這里需要選擇函數,但是此時(shí)我們沒(méi)有函數可以選擇,所以我們需要先創(chuàng )建一個(gè)函數。
  在添加選項的彈出頁(yè)面左上角點(diǎn)擊創(chuàng )建函數,進(jìn)入函數創(chuàng )建頁(yè)面。
  這里我們選擇相關(guān)信息,選擇事件函數。此處delegate暫時(shí)不可用,因此我們選擇不使用任何delegate和python3.x的環(huán)境運行時(shí)。當然,這里我們可以看到按用量收費的提示。按照華為云的規則,每個(gè)月的請求數都在百萬(wàn)以上,所以這里只是我們個(gè)人的開(kāi)發(fā)和早期使用,不用擔心收費問(wèn)題。
  創(chuàng )建完成后,進(jìn)入功能管理頁(yè)面,
  下面我們可以寫(xiě)函數,我們可以寫(xiě)一個(gè)簡(jiǎn)單的字符串檢查函數。
  `# -
  - 編碼:utf-8 -
  -
  導入json
  從集合導入計數器
  #自定義函數
  def is_anagram(s1, s2):
  返回計數器(s1)==計數器(s2)
  def 處理程序(事件,上下文):
  query=event.get("queryStringParameters")
  s1 = str(查詢(xún)["word1"])
  s2 = str(查詢(xún)["word2"])
  
  res = '%s 和 %s 是 %s' % (s1, s2, is_anagram(s1, s2))
  返回 {
  “狀態(tài)碼”:200,
  “isBase64Encoded”:錯誤,
  “身體”:水庫,
  “標題”:{
  “內容類(lèi)型”:“應用程序/json”
  }
  }`
  在這個(gè)handler的預定義函數及其定義的兩個(gè)形參中,event是代表請求的信息,比如body、headers等(上下文暫時(shí)不太了解)。至于queryStringParameters的鍵名,是根據華為云的文檔找到的。這個(gè)地方也琢磨了很久,之前定義的query中的數據之前都沒(méi)有拿到。
  看這里:
  然后單擊、設置、選擇觸發(fā)器,并創(chuàng )建一個(gè)新觸發(fā)器。
  根據需要定義,但為簡(jiǎn)單起見(jiàn)仍選擇不進(jìn)行身份驗證。創(chuàng )建完成后,可以獲取調用url的地址。
  復制網(wǎng)址并在瀏覽器中進(jìn)行測試。
  得到了答案。
  這與我們定義的預期結果一致。
  至此,函數工作流創(chuàng )建完成,我們回到之前的API創(chuàng )建頁(yè)面。
  在骨灰盒選擇頁(yè)面我們選擇剛才定義的函數流。
  并在底部定義前后端功能映射。
  單擊下一步,我們定義一個(gè) API 相應地是成功還是失敗的示例。
  至此,API 就創(chuàng )建好了。我們可以直接點(diǎn)擊發(fā)布API,進(jìn)入API的管理頁(yè)面。我們可以查看API的url。同樣,我們可以在瀏覽器中測試和使用它。
  點(diǎn)擊下方,第一時(shí)間了解華為云新技術(shù)~
  華為云博客_大數據博客_AI博客_云計算博客_開(kāi)發(fā)者中心-華為云
  教程:英文偽原創(chuàng )怎么做? 3個(gè)步驟搞定
  做英文網(wǎng)站 SEO必然會(huì )提到英文內容創(chuàng )作。但是作為一個(gè)中國人,我的英文不好,寫(xiě)不出高質(zhì)量的內容,很是苦惱。不過(guò)沒(méi)關(guān)系,如果你能掌握英文偽原創(chuàng )技巧,你也可以用蹩腳的英文寫(xiě)出高質(zhì)量的內容,獲得更好的關(guān)鍵詞排名。
  下面我們來(lái)看看英文偽原創(chuàng )應該怎么做,有哪些需要注意的地方。
  偽原創(chuàng )關(guān)于英文內容大致可以分為三個(gè)部分。
  文字變化;形式的變化;偽原創(chuàng ) 圖片。1. 換字的具體方法 方法#1 使用工具進(jìn)行機械改寫(xiě)
  這里我們會(huì )用到一個(gè)工具:Small SEO tools的文章重寫(xiě)工具(需要科學(xué)上網(wǎng))。這是一個(gè)免費的 文章 自動(dòng)重寫(xiě)工具,可以將任何指定的文本內容重寫(xiě)為可讀文本。
  使用方法:將別人的全文放入輸入框,點(diǎn)擊【重寫(xiě)文章】按鈕。該工具可以對 文章 中的常用名詞進(jìn)行同義詞替換。同時(shí),在某些情況下,語(yǔ)句的形式也可以改變。
  彩色部分是本工具改寫(xiě)的內容
  目前只支持英文,不支持其他小語(yǔ)種。
  使用此工具重寫(xiě)的文本實(shí)際上不是特別可讀。所以你仍然可以手動(dòng)完成。
  如果你有時(shí)間,我建議你使用文字 偽原創(chuàng ) 的第二種方法。
  方法 #2 使用 LSI關(guān)鍵詞 手動(dòng)重寫(xiě)
  這種方法是在別人的文字內容的基礎上增加更多的相關(guān)詞(LSI關(guān)鍵詞),從而實(shí)現內容偽原創(chuàng )。
  
  比如我們現在找到這樣一個(gè)關(guān)鍵詞[太陽(yáng)能熱水器]和別人的一段文字,如下圖:
  別人的文字
  現在找到【太陽(yáng)能熱水器】的LSI關(guān)鍵詞,自然添加,或者改寫(xiě)成原文。
  重寫(xiě)后結果的彩色部分是 LSI關(guān)鍵詞
  這種方法的缺點(diǎn):它會(huì )花費更長(cháng)的時(shí)間,但這也是它的優(yōu)點(diǎn) - 內容會(huì )更相關(guān)。
  2. 文章形式的變化
  文本的形式有很多變化。例如,您可以將其他人的段落替換為列表、列表替換為表格,或者將表格替換為文本段落。例如,假設您引用競爭對手的產(chǎn)品參數部分,這是一個(gè)表格。這時(shí)可以以文本段落(句子)等形式改寫(xiě)表格中的參數。
  做B端產(chǎn)品的人應該都知道阿里巴巴國際站吧?也許你可以搜索一個(gè)詞,你可以看到阿里巴巴國際站的排名。
  有很多人會(huì )說(shuō):“廢話(huà),其他用戶(hù)會(huì )寫(xiě)頁(yè)面,內容很多”。
  我可以告訴你:阿里巴巴國際站50%的頁(yè)面不是UGC頁(yè)面,而是阿里巴巴自己生成的搜索聚合頁(yè)面!同時(shí),那些頁(yè)面上的內容不是阿里員工一一手工打出來(lái)的,而是機器生成的,基本是0時(shí)間!
  想知道怎么做?事實(shí)上,它是一種變化形式。想了解詳情的可以加我微信(mbkf6666),一句話(huà)解惑。
  
  3. 偽原創(chuàng ) 圖片
  內容不僅僅是文字,還包括圖片、視頻、音頻等。因此,內容的偽原創(chuàng )和圖片的偽原創(chuàng )的核心。這一點(diǎn)在學(xué)習谷歌SEO的時(shí)候一定要牢記。有些頁(yè)面沒(méi)有流量(沒(méi)有排名)。其實(shí)問(wèn)題不在于文字或外鏈,而在于圖片。
  經(jīng)常采集的朋友會(huì )經(jīng)常采集和別人的照片網(wǎng)站。但是你有沒(méi)有發(fā)現,你的采集后面的圖片在被爬取之后其實(shí)并沒(méi)有被谷歌索引,或者索引率很低。
  當您對圖片進(jìn)行一些調整時(shí),無(wú)論圖片索引如何,附加頁(yè)面也會(huì )被索引,您仍然可以參與排名。
  這時(shí)候你肯定想說(shuō):“我不能一張一張修改圖片嗎?”。當然不是,但是有了圖片,你確實(shí)需要花一些時(shí)間來(lái)處理它。
  如何處理?我給你一個(gè)更好的方法:拼圖。
  通過(guò)拼接兩個(gè)具有相似背景顏色(最好相同)的圖像來(lái)創(chuàng )建一個(gè)新圖像。這個(gè)做法已經(jīng)試過(guò)了,搜索引擎不識別為偽原創(chuàng ),相關(guān)性還不錯。
  一點(diǎn)建議
  很多人可能認為英文內容偽原創(chuàng )消耗的時(shí)間少,所以偽原創(chuàng )可能是最好的選擇。
  其實(shí)不,我給你的建議是自己制作有價(jià)值的內容,而不是一味的模仿和抄襲。建議大家閱讀文章《如何用英文做內容原創(chuàng )》一文,相信你會(huì )有一些啟發(fā)。
  同時(shí),在效率方面,自己制作內容的效率其實(shí)會(huì )更高。畢竟,最了解產(chǎn)品的不是機器,而是你自己。
  相關(guān)性 文章LSI關(guān)鍵詞 – 為什么暴力會(huì )增加英語(yǔ)中的相關(guān)性 關(guān)鍵詞 單數和復數形式的排名不同?英文原創(chuàng )文章英文怎么寫(xiě)不容易寫(xiě)原創(chuàng ) 查看全部

  完美:我用開(kāi)天平臺做了一個(gè)字符串檢查API,hin 簡(jiǎn)單
  本文分享自華為云社區《我用凱天平臺做一個(gè)字符串校驗API【凱天aPaaS之戰】-云社區-華為云》,作者:星星閃耀。
  1 開(kāi)天集成工作臺概述
  據華為官方文檔介紹,所謂華為云開(kāi)天集成工作臺是基于華為豐富的數字化轉型經(jīng)驗,為企業(yè)開(kāi)發(fā)者提供基于元數據的可擴展集成框架,減少應用間集成的工作量,沉淀連接器、業(yè)務(wù)模型、行業(yè)API等多種集成資產(chǎn),幫助客戶(hù)快速建立SaaS應用之間的連接通道,打破信息孤島和“煙囪”架構,實(shí)現快速搭建上線(xiàn)應用,不斷提升用戶(hù)體驗。
  該產(chǎn)品的官方網(wǎng)站是:. 凱天集成工作臺整體架構示意圖如下圖所示:
  凱天集成工作臺使合作伙伴能夠高效地將SaaS上云,與合作伙伴共同構建行業(yè)解決方案,共同積累和分享行業(yè)經(jīng)驗。開(kāi)天集成工作臺提供以下核心能力:
  (01) 標準數據模型管理:領(lǐng)域信息模型的采集、定義、管理能力支持建立行業(yè)標準領(lǐng)域信息模型庫,行業(yè)各廠(chǎng)商應用依托用于互連的標準域信息模型。
  (02) 靈活的API生命周期管理:支持合作伙伴的API設計、實(shí)現、測試、發(fā)布、運維、消費和運營(yíng),可以封裝成連接器和流,方便編排。
  (03) 可擴展的連接器管理:是擴展集成工作臺的流程編排能力的唯一途徑,提供豐富的預設連接器,用戶(hù)也可以基于A(yíng)PI自定義連接器。
  (04) 可視化流管理:基于連接器,以可視化的方式進(jìn)行流組合,實(shí)現一體化流編排。該擴展支持各種形式的編排,例如流程編排、事件編排等。
  凱天集成工作臺的優(yōu)勢如下:
  (01)豐富的行業(yè)經(jīng)驗:面向行業(yè)的業(yè)務(wù)模型庫,連接管理者、業(yè)務(wù)人員和IT人員。行業(yè)能力基于A(yíng)PI,覆蓋行業(yè)、城市治理、教育、辦公、消息、地圖、移動(dòng)應用等領(lǐng)域。SaaS應用之間的集成資產(chǎn)多樣化,開(kāi)箱即用,降低交付復雜度。
  (02) 靈活易用的集成:基于標準業(yè)務(wù)模型的集成模式,每個(gè)應用只需集成一次,使XYZ變成X+Y+Z。開(kāi)放的連接框架可以靈活定義各種連接器和流,以適應企業(yè)的業(yè)務(wù)邏輯。
  2 凱天集成工作臺用戶(hù)及應用場(chǎng)景
  凱天集成工作臺是一個(gè)“開(kāi)放、共生、智能、協(xié)同”的平臺,是開(kāi)發(fā)者、系統集成商和客戶(hù)之間的“橋梁”和“紐帶”。具體來(lái)說(shuō),用戶(hù)可以分為以下幾類(lèi):
  (01) 面向行業(yè)API開(kāi)發(fā)者:一站式完成行業(yè)API設計、編排、測試、發(fā)布、消費,打造API商業(yè)經(jīng)濟。
  (02) 面向行業(yè)應用開(kāi)發(fā)者:以低代碼或零代碼的方式輕松構建面向行業(yè)的SaaS應用,加速業(yè)務(wù)創(chuàng )新。
  (03) 對于系統集成商:與客戶(hù)無(wú)縫對接、集成開(kāi)發(fā)、項目交付和運維支持。同時(shí)積累云項目的綜合資產(chǎn),提高交付效率。
 ?。?4)以客戶(hù)為中心:企業(yè)集成資產(chǎn)的使用和管理,與系統集成商等生態(tài)資源合作,完成企業(yè)數字化平臺建設。
  凱天集成工作臺的應用場(chǎng)景也非常豐富,主要可以分為三類(lèi)應用場(chǎng)景:
 ?。?1)行業(yè)能力開(kāi)放場(chǎng)景。企業(yè)以API服務(wù)的形式開(kāi)放能力,通過(guò)API連接應用開(kāi)發(fā)者、系統集成商等,服務(wù)更多業(yè)務(wù)場(chǎng)景,快速形成產(chǎn)業(yè)鏈,讓企業(yè)用最低成本。滿(mǎn)足客戶(hù)分散且不斷增長(cháng)的需求。
  (02) 賦能行業(yè)應用創(chuàng )新場(chǎng)景,合作伙伴可以通過(guò)集成工作臺提供的低代碼/零代碼方式,輕松利用行業(yè)API、業(yè)務(wù)模型、連接器等各種資產(chǎn)完成應用開(kāi)發(fā)和部署;賦能不同層次的開(kāi)發(fā)者,大大提升企業(yè)應用的供給能力。
  (03) SaaS應用互聯(lián)場(chǎng)景下,企業(yè)應用建設隨著(zhù)業(yè)務(wù)發(fā)展逐步展開(kāi),需要解決現有企業(yè)應用與新應用的協(xié)同。通過(guò)在應用程序之間建立水管,價(jià)值信息可以在企業(yè)內部和企業(yè)之間流動(dòng)。通過(guò)集成工作臺,可以實(shí)現云應用、云應用和企業(yè)內部應用的集成??梢杂孟聢D來(lái)說(shuō)明:
  3 字符串檢查 API 快速構建
  首先在集成工作臺中進(jìn)入API生命周期管理的API組,點(diǎn)擊右上角新建組,輸入名稱(chēng)和描述。創(chuàng )建群組后,點(diǎn)擊API管理,進(jìn)入新建群組下的API管理頁(yè)面。
  
  進(jìn)入API管理頁(yè)面后,我們可以先在右上角創(chuàng )建一個(gè)API,進(jìn)入API創(chuàng )建頁(yè)面。
  根據您的需要輸入所有信息。
  這里的認證方式可以根據自己的需要定制。此處,為簡(jiǎn)單起見(jiàn),不選擇身份驗證(不推薦)。
  然后點(diǎn)擊下一步,自定義訪(fǎng)問(wèn)API的路徑,以及請求方式,是否支持跨域,底部的參數定義也很重要,根據需要選擇參數位置、名稱(chēng)、類(lèi)型、選項等.
  定義參數后,圖像類(lèi)似于下圖。
  單擊下一步以定義后端服務(wù)。這里有三個(gè)選項,一個(gè)是后端服務(wù),也就是API接口,一個(gè)是華為云中定義的功能流程圖,另一個(gè)是mock(我不太了解),這里我用的是華為CLOUD 的功能流程圖。
  可以看到這里需要選擇函數,但是此時(shí)我們沒(méi)有函數可以選擇,所以我們需要先創(chuàng )建一個(gè)函數。
  在添加選項的彈出頁(yè)面左上角點(diǎn)擊創(chuàng )建函數,進(jìn)入函數創(chuàng )建頁(yè)面。
  這里我們選擇相關(guān)信息,選擇事件函數。此處delegate暫時(shí)不可用,因此我們選擇不使用任何delegate和python3.x的環(huán)境運行時(shí)。當然,這里我們可以看到按用量收費的提示。按照華為云的規則,每個(gè)月的請求數都在百萬(wàn)以上,所以這里只是我們個(gè)人的開(kāi)發(fā)和早期使用,不用擔心收費問(wèn)題。
  創(chuàng )建完成后,進(jìn)入功能管理頁(yè)面,
  下面我們可以寫(xiě)函數,我們可以寫(xiě)一個(gè)簡(jiǎn)單的字符串檢查函數。
  `# -
  - 編碼:utf-8 -
  -
  導入json
  從集合導入計數器
  #自定義函數
  def is_anagram(s1, s2):
  返回計數器(s1)==計數器(s2)
  def 處理程序(事件,上下文):
  query=event.get("queryStringParameters")
  s1 = str(查詢(xún)["word1"])
  s2 = str(查詢(xún)["word2"])
  
  res = '%s 和 %s 是 %s' % (s1, s2, is_anagram(s1, s2))
  返回 {
  “狀態(tài)碼”:200,
  “isBase64Encoded”:錯誤,
  “身體”:水庫,
  “標題”:{
  “內容類(lèi)型”:“應用程序/json”
  }
  }`
  在這個(gè)handler的預定義函數及其定義的兩個(gè)形參中,event是代表請求的信息,比如body、headers等(上下文暫時(shí)不太了解)。至于queryStringParameters的鍵名,是根據華為云的文檔找到的。這個(gè)地方也琢磨了很久,之前定義的query中的數據之前都沒(méi)有拿到。
  看這里:
  然后單擊、設置、選擇觸發(fā)器,并創(chuàng )建一個(gè)新觸發(fā)器。
  根據需要定義,但為簡(jiǎn)單起見(jiàn)仍選擇不進(jìn)行身份驗證。創(chuàng )建完成后,可以獲取調用url的地址。
  復制網(wǎng)址并在瀏覽器中進(jìn)行測試。
  得到了答案。
  這與我們定義的預期結果一致。
  至此,函數工作流創(chuàng )建完成,我們回到之前的API創(chuàng )建頁(yè)面。
  在骨灰盒選擇頁(yè)面我們選擇剛才定義的函數流。
  并在底部定義前后端功能映射。
  單擊下一步,我們定義一個(gè) API 相應地是成功還是失敗的示例。
  至此,API 就創(chuàng )建好了。我們可以直接點(diǎn)擊發(fā)布API,進(jìn)入API的管理頁(yè)面。我們可以查看API的url。同樣,我們可以在瀏覽器中測試和使用它。
  點(diǎn)擊下方,第一時(shí)間了解華為云新技術(shù)~
  華為云博客_大數據博客_AI博客_云計算博客_開(kāi)發(fā)者中心-華為云
  教程:英文偽原創(chuàng )怎么做? 3個(gè)步驟搞定
  做英文網(wǎng)站 SEO必然會(huì )提到英文內容創(chuàng )作。但是作為一個(gè)中國人,我的英文不好,寫(xiě)不出高質(zhì)量的內容,很是苦惱。不過(guò)沒(méi)關(guān)系,如果你能掌握英文偽原創(chuàng )技巧,你也可以用蹩腳的英文寫(xiě)出高質(zhì)量的內容,獲得更好的關(guān)鍵詞排名。
  下面我們來(lái)看看英文偽原創(chuàng )應該怎么做,有哪些需要注意的地方。
  偽原創(chuàng )關(guān)于英文內容大致可以分為三個(gè)部分。
  文字變化;形式的變化;偽原創(chuàng ) 圖片。1. 換字的具體方法 方法#1 使用工具進(jìn)行機械改寫(xiě)
  這里我們會(huì )用到一個(gè)工具:Small SEO tools的文章重寫(xiě)工具(需要科學(xué)上網(wǎng))。這是一個(gè)免費的 文章 自動(dòng)重寫(xiě)工具,可以將任何指定的文本內容重寫(xiě)為可讀文本。
  使用方法:將別人的全文放入輸入框,點(diǎn)擊【重寫(xiě)文章】按鈕。該工具可以對 文章 中的常用名詞進(jìn)行同義詞替換。同時(shí),在某些情況下,語(yǔ)句的形式也可以改變。
  彩色部分是本工具改寫(xiě)的內容
  目前只支持英文,不支持其他小語(yǔ)種。
  使用此工具重寫(xiě)的文本實(shí)際上不是特別可讀。所以你仍然可以手動(dòng)完成。
  如果你有時(shí)間,我建議你使用文字 偽原創(chuàng ) 的第二種方法。
  方法 #2 使用 LSI關(guān)鍵詞 手動(dòng)重寫(xiě)
  這種方法是在別人的文字內容的基礎上增加更多的相關(guān)詞(LSI關(guān)鍵詞),從而實(shí)現內容偽原創(chuàng )。
  
  比如我們現在找到這樣一個(gè)關(guān)鍵詞[太陽(yáng)能熱水器]和別人的一段文字,如下圖:
  別人的文字
  現在找到【太陽(yáng)能熱水器】的LSI關(guān)鍵詞,自然添加,或者改寫(xiě)成原文。
  重寫(xiě)后結果的彩色部分是 LSI關(guān)鍵詞
  這種方法的缺點(diǎn):它會(huì )花費更長(cháng)的時(shí)間,但這也是它的優(yōu)點(diǎn) - 內容會(huì )更相關(guān)。
  2. 文章形式的變化
  文本的形式有很多變化。例如,您可以將其他人的段落替換為列表、列表替換為表格,或者將表格替換為文本段落。例如,假設您引用競爭對手的產(chǎn)品參數部分,這是一個(gè)表格。這時(shí)可以以文本段落(句子)等形式改寫(xiě)表格中的參數。
  做B端產(chǎn)品的人應該都知道阿里巴巴國際站吧?也許你可以搜索一個(gè)詞,你可以看到阿里巴巴國際站的排名。
  有很多人會(huì )說(shuō):“廢話(huà),其他用戶(hù)會(huì )寫(xiě)頁(yè)面,內容很多”。
  我可以告訴你:阿里巴巴國際站50%的頁(yè)面不是UGC頁(yè)面,而是阿里巴巴自己生成的搜索聚合頁(yè)面!同時(shí),那些頁(yè)面上的內容不是阿里員工一一手工打出來(lái)的,而是機器生成的,基本是0時(shí)間!
  想知道怎么做?事實(shí)上,它是一種變化形式。想了解詳情的可以加我微信(mbkf6666),一句話(huà)解惑。
  
  3. 偽原創(chuàng ) 圖片
  內容不僅僅是文字,還包括圖片、視頻、音頻等。因此,內容的偽原創(chuàng )和圖片的偽原創(chuàng )的核心。這一點(diǎn)在學(xué)習谷歌SEO的時(shí)候一定要牢記。有些頁(yè)面沒(méi)有流量(沒(méi)有排名)。其實(shí)問(wèn)題不在于文字或外鏈,而在于圖片。
  經(jīng)常采集的朋友會(huì )經(jīng)常采集和別人的照片網(wǎng)站。但是你有沒(méi)有發(fā)現,你的采集后面的圖片在被爬取之后其實(shí)并沒(méi)有被谷歌索引,或者索引率很低。
  當您對圖片進(jìn)行一些調整時(shí),無(wú)論圖片索引如何,附加頁(yè)面也會(huì )被索引,您仍然可以參與排名。
  這時(shí)候你肯定想說(shuō):“我不能一張一張修改圖片嗎?”。當然不是,但是有了圖片,你確實(shí)需要花一些時(shí)間來(lái)處理它。
  如何處理?我給你一個(gè)更好的方法:拼圖。
  通過(guò)拼接兩個(gè)具有相似背景顏色(最好相同)的圖像來(lái)創(chuàng )建一個(gè)新圖像。這個(gè)做法已經(jīng)試過(guò)了,搜索引擎不識別為偽原創(chuàng ),相關(guān)性還不錯。
  一點(diǎn)建議
  很多人可能認為英文內容偽原創(chuàng )消耗的時(shí)間少,所以偽原創(chuàng )可能是最好的選擇。
  其實(shí)不,我給你的建議是自己制作有價(jià)值的內容,而不是一味的模仿和抄襲。建議大家閱讀文章《如何用英文做內容原創(chuàng )》一文,相信你會(huì )有一些啟發(fā)。
  同時(shí),在效率方面,自己制作內容的效率其實(shí)會(huì )更高。畢竟,最了解產(chǎn)品的不是機器,而是你自己。
  相關(guān)性 文章LSI關(guān)鍵詞 – 為什么暴力會(huì )增加英語(yǔ)中的相關(guān)性 關(guān)鍵詞 單數和復數形式的排名不同?英文原創(chuàng )文章英文怎么寫(xiě)不容易寫(xiě)原創(chuàng )

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久