云計算與大數據課程筆記(一)云計算背景與介紹

如何實現一個簡易搜索引擎?

實現一個簡易的搜索引擎可以分為幾個基本步驟:數據收集(爬蟲)、數據處理(索引)、查詢處理和結果呈現。下面是一個概括的實現流程:

1. 數據收集(爬蟲)

  • 目標:從互聯網上收集信息,這通常通過編寫爬蟲程序實現,爬蟲會訪問網頁,讀取內容,然后將這些內容存儲起來無論是簡單還是復雜的搜索引擎,其頁面、視頻、圖片等數據都不是現查現展示的,那樣效率非常慢。這就涉及到像頁面數據這種半結構化數據的存儲問題,數據量越來越大的時候,云計算就發揮出了作用
  • 實現:選擇合適的編程語言(如Python),使用爬蟲庫(如Scrapy或BeautifulSoup)來開發爬蟲腳本。爬蟲程序會根據預定的規則自動瀏覽網頁,提取有用信息,并將這些信息保存到數據庫或文件系統中。

2. 數據處理(索引)

  • 目標:對收集到的數據進行處理,生成可以快速查詢的索引。索引的目的是加快搜索速度,類似于書的目錄。
  • 實現:處理包括文本清洗(去除HTML標簽等)、分詞(將文本分割成關鍵詞)、建立倒排索引等。倒排索引是一種將關鍵詞映射到包含該關鍵詞的文檔列表的數據結構。可以使用Elasticsearch、Apache Lucene等工具來實現索引。

3. 查詢處理

  • 目標:接收用戶的查詢請求,根據索引快速找到匹配的結果
  • 實現:開發一個簡單的查詢接口,接收用戶的搜索請求,然后根據倒排索引查找相關的文檔。這一步可以通過簡單的關鍵詞匹配,也可以采用更復雜的算法(如TF-IDF、向量空間模型等)來提高搜索的相關性和準確性。

4. 結果呈現

  • 目標:將搜索結果以友好的方式呈現給用戶。
  • 實現:設計一個簡單的網頁界面,顯示搜索結果。這通常包括結果列表,每個結果有標題、摘要、鏈接等信息。可以使用HTML、CSS和JavaScript等前端技術來實現界面設計。

谷歌又是如何實現搜索引擎的?

谷歌搜索引擎的實現相比于簡易搜索引擎要復雜得多,它涵蓋了大規模數據處理、復雜算法、用戶行為分析、機器學習等眾多領域。谷歌搜索引擎的核心包括以下幾個方面:

1. 爬蟲系統(Googlebot)

谷歌使用一個高效的網絡爬蟲(Googlebot)來不斷地爬取互聯網上的內容。這個過程包括新網頁的發現和已知網頁的更新。Googlebot高效地處理巨量的網頁,使用分布式系統來存儲和管理這些數據。

2. 索引構建

谷歌對爬取到的網頁內容進行處理,包括解析HTML內容、執行JavaScript(以獲取動態生成的內容)、提取文本和關鍵數據等。然后,谷歌構建一個巨大的倒排索引,將關鍵詞與它們出現的網頁相關聯,這個索引是分布式存儲的,以支持快速查詢

3. 排名算法(PageRank及其他)

谷歌使用PageRank算法及其它多種算法來評估網頁的重要性和相關性。PageRank算法基于網頁之間的鏈接結構,給網頁一個全球重要性的評分。除了PageRank,谷歌還考慮了數百個其它因素(如網頁的相關性、內容質量、用戶行為、頁面速度等)來綜合排名搜索結果

4. 查詢處理

當用戶提交查詢時,谷歌使用復雜的算法來解析查詢意圖,可能包括自然語言處理技術來理解查詢的真正意圖。然后,系統會在倒排索引中查找與查詢相關的網頁,并使用排名算法對這些結果進行排序。

5. 個性化和上下文相關搜索

谷歌還會考慮用戶的搜索歷史、地理位置、設備類型等因素來個性化搜索結果。這意味著不同的用戶在輸入相同查詢時可能會看到不同的搜索結果。

6. 用戶界面和體驗

谷歌不斷地優化其搜索界面和用戶體驗,包括快速的響應時間、清晰的結果展示、以及對移動設備的優化。

7. 安全性和隱私

谷歌還非常重視搜索過程中的安全性和用戶隱私,包括使用HTTPS加密搜索請求和結果,以及提供透明的隱私控制選項給用戶。

技術和工具

谷歌的搜索引擎背后使用了大量的自研技術和開源工具,涵蓋了大數據處理(如Bigtable和MapReduce)、機器學習(如TensorFlow)、高性能網絡架構等多個方面。

谷歌搜索引擎的實現涉及廣泛的技術棧和復雜的系統設計。它不僅僅是一個簡單的文本搜索問題,而是一個涉及大規模數據處理、算法優化、用戶體驗和隱私保護等多個領域的綜合系統。隨著互聯網技術的發展,谷歌不斷地更新和優化其搜索引擎,以提供更快、更準確、更個性化的搜索結果。


云計算背景

大數據一般是半結構化數據和非結構化數據

  • 解釋:大數據通常包括三種類型的數據:結構化數據、半結構化數據和非結構化數據。
    • 結構化數據:指的是可以在關系型數據庫中存儲、查詢和分析的數據,如表格數據。
    • 半結構化數據:不符合關系型數據庫的結構,但包含標簽或其它標記性語言來識別數據的某些元素。例如,JSON和XML文件。
    • 非結構化數據:沒有預定義數據模型,也不易在傳統數據庫中存儲或管理。如文本文件、圖片、視頻等。
  • 大數據環境下,非結構化和半結構化數據占據了數據總量的大部分,這對數據存儲、處理和分析提出了更高的要求。

網頁數據修改不頻繁,和表的業務特征是不一樣的

  • 解釋:這句話提到了數據的變化頻率,特別是指網頁數據相比于數據庫中表的數據,更新或修改的頻率不高。
    • 網頁數據:往往是靜態或半靜態的,如公司信息、新聞發布等,這些信息不經常變化。
    • 數據庫表數據:在業務應用中,如電商平臺的訂單信息、用戶數據等,這些數據變化頻繁,需要實時或近實時更新。
  • 數據的變化頻率直接影響了數據存儲和管理系統的設計和優化策略。

現在新興的很多云原生數據庫對傳統數據庫造成很大沖擊

  • 解釋:隨著云計算技術的發展,云原生數據庫成為了新興的數據庫解決方案,它們為分布式環境和云平臺優化,提供了高可擴展性、高可用性和全球分布式的能力。
    • 云原生數據庫:如Amazon DynamoDB、Google Cloud Spanner等,它們天生為云設計,支持彈性伸縮、跨地域復制等功能。
    • 傳統數據庫:如Oracle、MySQL等,雖然也可以部署在云環境中,但它們最初是為單一物理環境設計的,可能在可擴展性、分布式處理方面存在局限。無外乎還是歷史和出身變了,時代啊……
  • 云原生數據庫的興起對傳統數據庫市場和使用模式造成了沖擊,促使傳統數據庫不斷創新和適應云計算的要求。

大數據價值密度低!06年谷歌公司提出云計算的概念,之前用的是關系型數據庫

  • 解釋:這句話指出大數據的一個特點是“價值密度低”,意味著在大量的數據中,有價值的信息可能只占很小的比例。這個觀點在谷歌等公司的實踐中得到了體現,它們發現使用傳統的關系型數據庫處理大數據時面臨著效率和成本的挑戰。
    • 價值密度低:需要通過大規模的數據處理和分析,才能從大量數據中提取有價值的信息。
    • 關系型數據庫:雖然在事務處理、數據一致性等方面有優勢,但在處理非結構化數據、實現高度可擴展的分布式存儲和計算時可能不夠高效。
  • 谷歌等公司的實踐促進了NoSQL數據庫(如Google Bigtable)和分布式計算平臺(如Hadoop)的發展,這些技術更適合處理大數據的特點。

云計算介紹

云計算是一種革命性的技術,它改變了企業和個人獲取和使用計算資源的方式。作為一種工業界的導向,云計算提供了一種商業服務,通過大量計算機構成的分布式系統資源,形成了資源池,允許用戶按需訪問計算力、存儲空間和各種服務,而無需關心底層的物理硬件。

云計算資源的本質

云計算背后提供的計算力本質上是物理CPU和GPU等資源的集合。這些資源通過虛擬化技術被封裝,使得用戶可以靈活地使用它們進行計算任務。虛擬化技術解決了操作系統(OS)和主機之間緊耦合的問題,允許在同一硬件上運行多個虛擬機,每個虛擬機都可以運行不同的操作系統和應用。

云計算三種基本服務模式

云計算的應用場景

云計算的應用場景多樣,包括但不限于:

  • 定點計算:主要用于處理事務數據和超大規模數據處理。適用于需要高可靠性和一致性的場景,如金融交易、大型數據庫管理等。
  • 浮點計算:主要用于峰值計算和超速計算機,如科學計算、圖形處理和機器學習等領域,其中需要大量的浮點運算來處理復雜的計算任務。

云計算服務的提供商

云計算服務的提供商眾多,其中包括阿里云、華為云、亞馬遜AWS等。每個提供商根據自身的企業導向和專長,提供不同的云計算服務:

  • 阿里云:作為電商巨頭,阿里巴巴提供了強大的云計算資源,支持其龐大的電商業務。同時,阿里云也支持其他企業和服務,比如為中國鐵路客戶服務中心(12306)提供巨大的云計算資源支持,保障其在高峰期的穩定運行。
  • 華為云:華為云在政務和企業服務領域有較多應用,提供包括云服務器、云數據庫、云安全等全面的服務,幫助政府和企業實現數字化轉型。

云計算技術的發展受到了前期研究和實踐的啟發,其中Hadoop就是一個典型的例子。Hadoop的開發源于雅虎的幾位程序員受到谷歌的GFS(Google File System)、MapReduce和BigTable幾篇論文的啟發。Hadoop成為了處理大數據的一個重要工具,體現了云計算在數據處理方面的能力。

云計算總結

云計算作為一種商業服務,通過虛擬化技術和分布式系統將龐大的計算資源匯集成資源池,為用戶提供按需可擴展的服務。它在不同的行業和領域內發揮著重要作用,無論是支持電商平臺的大規模運營,還是為政府部門提供云服務,云計算都在推動著數字化轉型和技術創新。隨著技術的不斷進步和應用場景的拓展,云計算將繼續在工業界引領新的變革。


云計算相關公司盈利模式

亞馬遜、谷歌是一種互連網公司,它們的盈利模式是什么?微軟的盈利應該主要靠軟件售賣與AI算力支持投入吧?

亞馬遜、谷歌和微軟是互聯網時代的三大巨頭,它們的盈利模式覆蓋了廣泛的領域,包括但不限于電子商務、廣告、云計算、軟件銷售和人工智能。下面是對它們各自盈利模式的簡要分析:

亞馬遜

亞馬遜的盈利模式多元化,包括:

  • 電子商務:亞馬遜通過在線銷售商品賺取收入,包括自營和第三方賣家的產品。
  • 云計算:亞馬遜云計算服務(Amazon Web Services, AWS)是全球最大的云服務提供商之一,為企業提供服務器、存儲、數據庫、分析、機器學習、和其他云服務。
  • 訂閱服務:包括Amazon Prime會員服務、音樂和視頻流媒體服務等。
  • 廣告業務:通過其龐大的電商平臺,亞馬遜還提供廣告服務給賣家和品牌。
  • 其他服務:包括Kindle電子書、Alexa智能家居設備等。

谷歌

谷歌(Alphabet Inc.的一部分)的盈利模式主要基于廣告,同時也涉及其他多個領域:

  • 廣告:谷歌搜索引擎、YouTube視頻平臺、Google Maps等服務通過廣告賺取大部分收入。
  • 云計算:Google Cloud Platform提供各種云服務,包括計算、數據存儲、機器學習等。
  • 軟件和服務:包括Android操作系統、Google Play應用商店、G Suite辦公軟件等。
  • 硬件:包括Pixel手機、Nest智能家居產品等。

微軟

微軟的盈利模式也是多元化的,并不僅限于軟件銷售和AI算力支持,它的云計算服務、訂閱服務和硬件銷售也是重要的收入來源。

主要包括:

  • 軟件銷售:Windows操作系統、Office辦公軟件套件是微軟的傳統盈利來源。
  • 訂閱服務:Office 365、Microsoft 365等訂閱服務為微軟提供了穩定的收入流。
  • 云計算:通過Azure提供的云服務,微軟在全球云計算市場中占據重要地位。
  • 硬件:包括Surface系列設備、Xbox游戲機等。
  • 人工智能和其他技術投入:微軟在人工智能領域有大量投入,包括云AI服務、GitHub等開發者服務。

另一種分布式計算形式——網格計算

網格計算(Grid Computing)是一種分布式計算形式,它涉及將計算任務分解成更小的部分,然后在跨越多個計算資源(如個人計算機、服務器或者數據中心內的服務器)的網絡上并行處理這些部分。網格計算的目的是通過利用網絡連接的不同計算資源來解決大規模的計算問題,特別是那些對單個計算機或本地網絡資源來說過于復雜的任務。

網格計算與云計算的區別

網格計算和云計算雖然都是分布式計算的形式,但它們在目標、架構和應用場景上有所不同:

  • 目標和用途:網格計算主要關注于大規模科學、工程企業級計算任務的處理,特別是那些需要大量計算資源但不一定需要存儲資源的任務。云計算則提供了一種更為通用的計算模型,支持各種類型的應用,包括數據存儲、處理、分析和托管服務。

  • 資源管理:網格計算通常涉及將任務分配給網絡中的多個計算資源,這些資源可能屬于不同的組織,并由各自獨立管理。云計算則由單一的服務提供商提供資源,用戶可以通過網絡按需獲取計算資源,無需關心資源的物理位置或底層架構。

  • 使用模式:網格計算的用戶通常是科研機構和大學等,它們需要處理復雜的計算任務,如氣候模擬、基因序列分析等。而云計算服務面向更廣泛的用戶群體,從個人到企業,覆蓋了從簡單的網站托管到復雜的企業應用。

  • 計費模式:云計算通常基于用戶實際使用的資源(如計算時間、存儲空間)來計費,提供彈性伸縮的服務模型。網格計算則更多關注于資源共享和合作,計費模式不是主要考慮的因素。(我覺得這種高尚的初衷最后導致的成本問題也是網格計算不能很好落地實施的主要原因之一)

網格計算的應用

網格計算被用于解決一系列需要巨大計算能力的問題,包括:

  • 科學研究:如蛋白質折疊、宇宙學研究、氣候變化模擬等。
  • 工程問題:如大型結構分析、流體動力學模擬等。
  • 金融建模:如風險分析、復雜的金融衍生品定價等。

網格計算是一種旨在通過網絡連接的多個計算資源來解決復雜計算問題的技術。與云計算相比,網格計算更注重于計算能力的共享,特別適用于科學研究和復雜工程計算等領域。隨著云計算的發展,一些原本網格計算的應用場景已經開始轉向更為靈活和易于管理的云計算平臺,但網格計算在某些特定領域仍然有其獨特的價值和應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java實戰:Spring Boot項目中如何利用Redis實現用戶IP接口限流

引言 在高并發的Web應用中,接口限流是一項至關重要的技術手段,它有助于保護系統資源,防止因瞬間流量高峰導致服務崩潰。本文將深入探討如何在Spring Boot項目中借助Redis實現用戶IP級別的接口限流策略,通過具體的代碼示例&#x…

大數據概述

學習大數據有什么用? 2010年:大數據技術體系開始在國內火熱 2015年:國務院印發《促進大數據發展行動綱要》 2016年:發改委發布關于組織實施促進大數據發展重大工程的通知 2017年:工信部印發大數據產業規劃(2016-20…

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1 Bash (Bourne Again Shell) 是一個解釋器,負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件,并于 1989 年發布的免費軟件,作為 Sh (Bourne Shell) 的替代品。 您…

Nginx高級技巧:實現負載均衡和反向代理

文章目錄 Nginx概述Nginx作用正向代理反向代理負載均衡動靜分離 Nginx的安裝 -->Docker3.1 安裝Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源碼安裝nginx常用命令nginx配置文件配置文件位置配置文件結構詳情 Nginx的反向代理【重點】基于Nginx實現反向代理4…

C語言冒泡排序(高級版)

目錄: 冒泡排序的原理 主函數 "冒泡排序函數" 比較函數 交換函數 最終輸出 完整代碼 冒泡排序的原理: 冒泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右…

Windows上構建一個和Linux類似的Terminal

preview 目的是在Windows上構建一個和Linux類似的Terminal,讓Windows煉丹和Linux一樣舒適,同是讓Terminal取代Xshell完成遠程鏈接。 預覽如下圖 在Linux下我們使用zsh和oh-my-zsh結合,Windows下我們使用powershell7和oh-my-posh結合。 前提…

Vue 前端開發 v-for和v-if兩個指令不能混合使用

原由: 在進行項目開發的時候因為在一個標簽上同時使用了v-for和v-if兩個指令導致的報錯。 提示錯誤:The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

nginx------------緩存功能 ip透傳 負載均衡 (六)

一、http 協議反向代理 (一)反向代理示例:緩存功能 緩存功能可以加速訪問,如果沒有緩存關閉后端服務器后,圖片將無法訪問,緩存功能默認關閉,需要開啟。 ? proxy_cache zone_name | off; 默認off #指明調…

基于Springboot純凈水配送和商城系統設計與實現 開題報告參考

博主介紹:黃菊華老師《Vue.js入門與商城開發實戰》《微信小程序商城開發》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程&#xff…

2023 版王道單科書勘誤匯總(3.30)

注:因2023版對題目編號做了優化“歷年真題全部放最后、且按年份排序”,以方便大家根據需要保留某些年份的真題作為最后的模擬。所以造成了一些題目和解析的編號錯誤。 數據結構: P11 P20 P56 P278 P326 “2.”中第 3 行”題 5改成”9”,第6行”題 8”改成…

css3詳解

一.什么是CSS3 CSS3是Cascading Style Sheets的第三個版本,是一種用于描述文檔樣式的語言(CSS3是CSS(層疊樣式表)技術的升級版本)。它是前端開發中用于控制網頁布局和樣式的技術之一。CSS3引入了許多新的特性和功能&a…

Linux常用操作命令大全

Linux常用操作命令大全 Linux,作為一款開源的操作系統,深受全世界開發者和系統管理員的喜愛。在Linux環境下,用戶通過命令行界面可以執行各種操作,從而實現對系統的全面控制。本文將詳細介紹Linux中常用的操作命令,幫助讀者更好地理解和運用這些命令。 一、文件操作命令…

hexo圖片顯示不出且圖片路徑錯誤/.com//

參考博客: hexo 圖片顯示問題及使用typora設置圖片路徑-CSDN博客 javascript - hexo 圖片路徑錯誤/.com// - SegmentFault 思否 先說如何讓hexo圖片成功地顯示出來 Step1: 修改config設置 將 _config.yml 設置文件中的 post_asset_folder 修改為 true 這一步的作…

平衡二叉樹,二叉樹的路徑,左葉子之和

第六章 二叉樹part04 今日內容: 110.平衡二叉樹 257. 二叉樹的所有路徑 404.左葉子之和 110.平衡二叉樹 (優先掌握遞歸) 給定一個二叉樹,判斷它是否是高度平衡的二叉樹。 本題中,一棵高度平衡二叉樹定義為&am…

【不可不知的考研復試秘籍 1】

----------------------------------------------------------------------------------------------------- 考研復試科研背景提升班 教你快速深入了解掌握考研復試面試中的常見問題以及注意事項,系統的教你如何在短期內快速提升自己的專業知識水平和編程以及英語…

windows下安裝cnpm

cnpm是淘寶團隊開發的一個針對中國用戶的npm鏡像源,它是npm的一個定制版本。由于國外的npm源在國內訪問速度較慢,所以cnpm鏡像源可以提供更快的下載速度。cnpm的使用方式與npm基本相同,只需將npm替換為cnpm即可。 要想使用cnpm等先安裝node.…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打開題目 題目源碼&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

每日一題 KY148還是暢通工程

某省調查鄉村交通狀況&#xff0c;得到的統計表中列出了任意兩村莊間的距離。省政府“暢通工程”的目標是使全省任何兩個村莊間都可以實現公路交通&#xff08;但不一定有直接的公路相連&#xff0c;只要能間接通過公路可達即可&#xff09;&#xff0c;并要求鋪設的公路總長度…

PostgreSQL對已有表增加自增序列

對已有表增加自增序列&#xff1a; 1、在PostgreSQL當中&#xff0c;我們要實現對已有表的ID字段自增。 首先需創建一個關聯序列&#xff0c;以下sql語句是創建一個序列&#xff1a; CREATE SEQUENCE menu_id_seq START 6000001; 序列名稱是menu_id_seq&#xff0c;起始…

sizeof 和 strlen的區別

sizeof sizeof是單目操作符,sizeof計算變量所棧內存空間大小,單位是字節,如果操作數是類型的話,會計算類型所占大小,sizeof指在乎占用內存空間大小不在乎內容是什么. int main() {int a 0;printf("%zd\n", sizeof(a));printf("%zd\n", sizeof a );printf…