整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          基于Goaccess生成日志的HTML頁面搭建日志實時分析系統(tǒng)

          從goaccess的官網(wǎng)我們可以看到有提供生成html頁面的功能,今天就在這個基礎上演示下怎么做一個實時的日志分析。


          1、 修改配置

          1.1、查看當前配置

          #egrep -v "^#|^$" /usr/local/etc/goaccess/goaccess.conf
          

          由上可見默認配置中并無時間參數(shù),需要在配置中添加時間參數(shù)。

          1.2、添加時間參數(shù)

          # cat >>goaccess.conf<<EOF
          time-format %H:%M:%S
          date-format %d/%b/%Y
          #NCSA Combined Log Format
          log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
          EOF
          #cp -a goaccess.conf ../
          


          2、添加定時任務

          30 * * * * goaccess /var/log/nginx/access.log -o /etc/nginx/html/report.html --real-time-html --time-format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED 
          

          3、nginx配置

          修改nginx.conf文件

          location /report.html {
           #指定個人配置的目錄
           root html;
           index report.html index.htm;
           }
          

          4、檢查生產(chǎn)頁面

          https://服務器IP/report.html

          頁面展示如下:


          覺得有用的朋友多幫忙轉發(fā)哦!后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關注下~

          薦系統(tǒng)介紹

          自從1992年施樂的科學家為了解決信息負載的問題,第一次提出協(xié)同過濾算法,個性化推薦已經(jīng)經(jīng)過了二十幾年的發(fā)展。1998年,林登和他的同事申請了“item-to-item”協(xié)同過濾技術的專利,經(jīng)過多年的實踐,亞馬遜宣稱銷售的推薦占比可以占到整個銷售GMV(Gross Merchandise Volume,即年度成交總額)的30%以上。隨后Netflix舉辦的推薦算法優(yōu)化競賽,吸引了數(shù)萬個團隊參與角逐,期間有上百種的算法進行融合嘗試,加快了推薦系統(tǒng)的發(fā)展,其中SVD(Sigular Value Decomposition,即奇異值分解,一種正交矩陣分解法)和Gavin Potter跨界的引入心理學的方法進行建模,在諸多算法中脫穎而出。其中,矩陣分解的核心是將一個非常稀疏的用戶評分矩陣R分解為兩個矩陣:User特性的矩陣P和Item特性的矩陣Q,用P和Q相乘的結果R'來擬合原來的評分矩陣R,使得矩陣R'在R的非零元素那些位置上的值盡量接近R中的元素,通過定義R和R'之間的距離,把矩陣分解轉化成梯度下降等求解的局部最優(yōu)解問題。Netflix最新的實時推薦系統(tǒng)如圖9-5所示。

          圖9-5 NetFlix的實時推薦系統(tǒng)系統(tǒng)架構圖(來源:http://techblog.netflix.com/2013/03/system-architectures-for.html)

          與此同時,Pandora、LinkedIn、Hulu、Last.fm等一些網(wǎng)站在個性化推薦領域都展開了不同程度的嘗試,使得推薦系統(tǒng)在垂直領域有了不少突破性進展,但是在全品類的電商、綜合的廣告營銷上,進展還是緩慢,仍然有很多的工作需要探索。特別是在全品類的電商中,單個模型在母嬰品類的效果還比較好,但在其他品類就可能很差,很多時候需要根據(jù)品類、推薦欄位、場景等不同,設計不同的模型。同時由于用戶、SKU不停地增加,需要定期對數(shù)據(jù)進行重新分析,對模型進行更新,但是定期對模型進行更新,無法保證推薦的實時性,一段時間后,由于模型訓練也要相當時間,可能傳統(tǒng)的批處理的Hadoop的方法,無法再縮短更新頻率,最終推薦效果會因為實時性問題達到一個瓶頸。

          推薦算法主要有基于人口統(tǒng)計學的推薦、基于內(nèi)容的推薦、基于協(xié)同過濾的推薦等,而協(xié)同過濾算法又有基于鄰域的方法(又稱基于記憶的方法)、隱語義模型、基于圖的隨機游走算法等?;趦?nèi)容的推薦解決了商品的冷啟動問題,但是解決不了用戶的冷啟動問題,并且存在過擬合問題(往往在訓練集上有比較好的表現(xiàn),但在實際預測中效果大打折扣),對領域知識要求也比較高,通用性和移植性比較差,換一個產(chǎn)品形態(tài),往往需要重新構建一套,對于多媒體文件信息特征提取難度又比較大,往往只能通過人工標準信息?;卩徲虻膮f(xié)同過濾算法,雖然也有冷啟動問題和數(shù)據(jù)稀疏性等問題,但是沒有領域知識要求,算法通用性好,增加推薦的新穎性,并且對行為豐富的商品,推薦準確度較高?;谀P偷膮f(xié)同過濾算法在一定程度上解決了基于鄰域的推薦算法面臨的一些問題,在RMSE(Root Mean Squared Error,即均方根誤差)等推薦評價指標上更優(yōu),但是通常算法復雜,計算開銷大,所以目前基于鄰域的協(xié)同過濾算法仍然是最為流行的推薦算法。

          基于鄰域的協(xié)同過濾主要分為User CF和Item CF,根據(jù)以下條件不同,各自又有不同的使用場景。

          計算量大小不同。基于鄰域的協(xié)同過濾的時間復雜度為

          , 其中n為用戶數(shù),m為產(chǎn)品數(shù),應用SVD等降維方法可以降低算法復雜度,但是分解矩陣又會花費一定的時間。

          數(shù)據(jù)稀疏性傾斜度不同。例如,User CF主要基于用戶對共同項目的評分,如果用戶遠遠多于物品,沒有足夠評分將導致兩個用戶很少有共同評分的項目,找最近鄰用戶非常的不準確,雖然通過基于BP神經(jīng)網(wǎng)絡、樸素貝葉斯分類、基于內(nèi)容的預測等方法可以填充矩陣,但是都會不同程度地帶來的計算時間。

          對于用戶數(shù)量遠遠大于產(chǎn)品,并且產(chǎn)品相對穩(wěn)定的電商系統(tǒng),計算產(chǎn)品相似度計算量小,適用Item CF,否則用戶量大,并且如果用戶購買頻繁,計算用戶相似度計算量很大,極端情況下,100個用戶對應2個產(chǎn)品,一個要計算C1002次相似度,一個只要計算C22,即一次相似度;反之,對于更新頻繁,物品數(shù)量海量的新聞、博客、微博等系統(tǒng),User CF效果更好。

          當然,雖然SVD在分解矩陣上花費了一定時間,同時降維也會導致用戶-項目矩陣中的信息丟失,但是用戶-項目矩陣降維后, 運算復雜度大大降低,同時矩陣稀疏性問題得到了較好地解決,作為Netflix比賽中最終提升效果較好的兩個方法之一,被眾多網(wǎng)站采用。用戶-項目矩陣中的信息丟失問題可以通過選取合適的保留維數(shù)k在一定程度上得到緩解。

          在一個電商系統(tǒng)中,有商品、類目、品牌、團購、閃購、搜索、店鋪、廣告、促銷活動、抵用券等諸多實體;有首頁的大輪播、猜你喜歡欄位,詳情頁的看了還看、看了還買、推薦品牌等欄位,購物車頁面的買了還買、湊單免郵等欄位。如何在不同的欄位融入不同的推薦算法給用戶推薦相應的實體,構建出屬于電商自己的場景引擎,實現(xiàn)全站精準化,讓網(wǎng)站的GMV或者利潤達到最高,是每一個電商需要思考的問題。在實際中,很多推薦算法不一定要求實時,實時推薦在哪些場景下能帶給欄位更高的GMV轉化率,也是需要一定時間摸索和試錯的。

          目前基于用戶畫像的推薦,主要用在基于內(nèi)容的推薦,從最近的RecSys大會(ACM Recommender Systems)上來看,不少公司和研究者也在嘗試基于用戶畫像做Context-Aware的推薦(情境感知,又稱上下文感知)。利用用戶的畫像,結合時間、天氣等上下文信息,給用戶做一些更加精準化的推薦是一個不錯的方向。

          實時推薦系統(tǒng)的方法

          目前的商用推薦系統(tǒng),當用戶數(shù)和商品數(shù)達到一定數(shù)目時,推薦算法都面臨嚴重的可擴展性問題,推薦的實效性變得非常差,如何在算法和架構上提高推薦速度是很多公司不得不思考的問題。目前,在算法上主要通過引入聚類技術和改進實時協(xié)同過濾算法提高推薦速度;在架構上,目前實時推薦主要有基于Spark、Kiji框架和Storm的流式計算3種方法。

          1.聚類技術和實時協(xié)同過濾算法

          在算法上,一般采用EM(Expectation-Maximization)、K-means、吉布斯(Gibbs Sampling)、模糊聚類等聚類技術提高推薦速度。因為使用聚類技術可以大大縮小用戶或項目的最近鄰居搜索范圍,從而提高推薦的實時性,如表9-1所示。

          除此之外,實時協(xié)同過濾算法本身一直是人們研究的熱點,早在2003年,Edward F. Harrington就第一次提出了基于感知器的實時協(xié)同過濾算法,但是這種方法需要所有用戶的偏好,實用性較差;2010年,楊強等提出了實時進化的協(xié)同過濾算法,給予新得分更高的權重來增量更新User和Item的相似度;2011年,UC Berkeley的Jacob Abernethy等人提出了OCF-SGD算法,我們知道傳統(tǒng)的矩陣分解把用戶評分矩陣R分解成多個矩陣,比如R≈P*Q,該方法提出當新來一個User到Item的得分,把更新R矩陣的問題轉換成更新P和Q矩陣,從而達到實時協(xié)同過濾;近幾年的RecSys大會上,實時協(xié)同過濾也是討論的熱點,OCF-SGD算法每次只考慮一個用戶,忽略了用戶之間的關系,Jialei Wang等人提出了基于多任務學習的實時協(xié)同過濾算法,把每一個用戶當做一個任務,定義一個表示各個任務間相似性和交互程度的矩陣A,當新來一個User到Item的得分,通過矩陣A來更新其他用戶的得分。

          2.基于Spark的方式

          在架構上,第一種是使用Spark把模型計算放在內(nèi)存中,加快模型計算速度,Hadoop中作業(yè)的中間輸出結果是放到硬盤的HDFS中,而Spark是直接保存在內(nèi)存中,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學習等需要迭代的模型計算,如表9-2所示。

          (來源:http://www.csdn.net/article/2014-05-19/2819831-TDW-Shuffle/2)

          3.基于Kiji框架的方式

          第二種是使用Kiji,它是一個用來構建大數(shù)據(jù)應用和實時推薦系統(tǒng)的開源框架,本質上是對HBase上層的一個封裝,用Avro來承載對象化的數(shù)據(jù),使得用戶能更容易地用HBase管理結構化的數(shù)據(jù),使得用戶姓名、地址等基礎信息和點擊、購買等動態(tài)信息都能存儲到一行,在傳統(tǒng)數(shù)據(jù)庫中,往往需要建立多張表,在計算的時候要關聯(lián)多張表,影響實時性。Kiji與HBase的映射關系如表9-3所示。

          Kiji提供了一個KijiScoring模塊,它可以定義數(shù)據(jù)的過期策略,如綜合產(chǎn)品點擊次數(shù)和上次的點擊時間,設置數(shù)據(jù)的過期策略把數(shù)據(jù)刷新到KijiScoring服務器中,并且根據(jù)自己定義的規(guī)則,決定是否需要重新計算得分。如用戶有上千萬瀏覽記錄,一次的行為不會影響多少總體得分,不需要重新計算,但如果用戶僅有幾次瀏覽記錄,一次的行為,可能就要重新訓練模型。Kiji也提供了一個Kiji模型庫,使得改進的模型部署到生產(chǎn)環(huán)境時不用停掉應用程序,讓開發(fā)者可以輕松更新其底層的模型。

          4.基于Storm的方式

          最后一種基于 Storm 的實時推薦系統(tǒng)。在實時推薦上,算法本身不能設計的太復雜,并且很多網(wǎng)站的數(shù)據(jù)庫是TB、PB級別,實時讀寫大表比較耗時。可以把算法分成離線部分和實時部分,利用Hadoop離線任務盡量把查詢數(shù)據(jù)庫比較多的、可以預先計算的模型先訓練好,或者把計算的中間數(shù)據(jù)先計算好,比如,線性分類器的參數(shù)、聚類算法的群集位置或者協(xié)同過濾中條目的相似性矩陣,然后把少量更新的計算留給Storm實時計算,一般是具體的評分階段。

          基于Storm的實時推薦系統(tǒng)

          基于本章前面的學習,我們可以設計圖9-6所示的實時推薦系統(tǒng)。

          圖9-6 實時推薦系統(tǒng)(圖片來源PRANAB GHOSH,Big Data Cloud meetup。版權歸原書作者所有)

          用HBase或HDFS存儲歷史的瀏覽、購買行為信息,用Hadoop基于User CF的協(xié)同過濾,先把用戶的相似度離線生成好,用戶到商品的矩陣往往比較大,運算比較耗時,把耗時的運行先離線計算好,實時調用離線的結果進行輕量級的計算有助于提高產(chǎn)品的實時性。

          我們來簡單回顧一下協(xié)同過濾算法(如圖9-7所示):首先程序獲取用戶和產(chǎn)品的歷史偏好,得到用戶到產(chǎn)品的偏好矩陣,利用Jaccard相似系數(shù)(Jaccard coefficient)、向量空間余弦相似度(Cosine similarity)、皮爾遜相關系數(shù)(Pearson correlation coefficient)等相似度計算方法,得到相鄰的用戶(User CF)或相似商品(Item CF)。在User CF中,基于用戶歷史偏好的相似度得到鄰居用戶,將鄰居用戶偏好的產(chǎn)品推薦給該用戶;在Item CF中,基于用戶對物品的偏好向量得到相似產(chǎn)品,然后把這款產(chǎn)品推薦給喜歡相似產(chǎn)品的其他用戶。

          圖9-7 協(xié)同過濾算法過程

          然后通過Kafka或者Redis隊列,保存前端的最新瀏覽等事件流,在Storm的Topology中實時讀取里面的信息,同時獲取緩存中用戶topN個鄰居用戶,把鄰居用戶喜歡的商品存到緩存中,前端從緩存中取出商品,根據(jù)一定的策略,組裝成推薦商品列表。

          當然除了相似性矩陣,其他模型大體實現(xiàn)也相似,比如實際的全品類電商中不同的品類和欄位,往往要求不同的推薦算法,如母嬰產(chǎn)品,如圖9-8所示,如果結合商品之間的序列模式和母嬰年齡段的序列模式,效果會比較好,可以把模型通過Hadoop預先生成好,然后通過Storm實時計算來預測用戶會買哪些產(chǎn)品。

          圖9-8 序列模式在母嬰類目推薦中的應用

          本文摘自《Storm技術內(nèi)幕與大數(shù)據(jù)實踐》

          本書先介紹實時大數(shù)據(jù)平臺架構上的一些知識和難點,然后引入Storm來解決其中的問題。開始介紹Storm開發(fā),再分享Storm集群中性能調優(yōu)、資源隔離的一些知識和經(jīng)驗,然后加入Storm監(jiān)控和日志的內(nèi)容。后面介紹如何通過Storm構建公司的基礎數(shù)據(jù)層;如何通過良好的架構設計實時更新基礎數(shù)據(jù)層的用戶畫像、分布式索引等,最后依托實時更新的基礎數(shù)據(jù)層,介紹如何構建各類個性化應用。

          家好,很高興又見面了,我是"高級前端?進階?",由我?guī)е蠹乙黄痍P注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發(fā),您的支持是我不斷創(chuàng)作的動力。

          1. 什么是 Mojo CSS?

          Mojo CSS 是一個原子 CSS 框架,其基于 HTML 實時生成 CSS,并且運行時間接近零。Mojo CSS 提供了創(chuàng)建自定義、美觀且響應式布局的最快方法,而無需編寫一行 CSS。 全套實用程序可幫助開發(fā)者充分發(fā)揮網(wǎng)頁的性能。

          目前 Mojo CSS 在 Github 通過 MIT 協(xié)議開源,代表了下一代原子 CSS 框架,無需交付任何 CSS 即可打造華麗的 UI。

          2.Mojo CSS 有什么突出優(yōu)勢

          2.1 按需添加樣式

          當其他框架和庫將 CSS 生成靜態(tài)文件時,Mojo 會實時處理一切。 其會自動掃描 HTML,查找使用的實用程序,并僅生成這些實用程序所需的 CSS。

          Mojo 不斷掃描網(wǎng)頁,并在每次檢測到 DOM 變化時生成所需的 CSS。比如,當用戶輸入 class="bg-c-blue",Mojo CSS 會自動編譯生成以下樣式:

          <style>
          .bg-c-blue {
              ...
          }
          </style>

          這樣方式不僅可以節(jié)省文件大小、實現(xiàn)快速渲染,并且能夠實時設置 HTML 樣式,因為瀏覽器會立即接收到更改,而無需重新加載頁面。

          2.2 文件大小

          與其他框架不同,Mojo 提供了一種獨特的樣式方法,使其有別于傳統(tǒng)的 CSS 框架。雖然普通項目通常需要至少 100kb 的 CSS 來處理樣式,但 Mojo 只需要一個約 50kb(15kb gzip 壓縮)的 JS 文件即可處理任何規(guī)模項目的樣式。

          // Import Mojo CSS
          import mojo from 'mojocss'
          // Initialize
          mojo()

          這種方法可以顯著減少頁面加載時間并提高性能。 Mojo 不是加載大型 CSS 文件并將樣式應用到頁面上的所有元素,而是使用單個 JavaScript 文件實時設置元素樣式,這意味著僅加載頁面上當前可見元素所需的樣式。

          Mojo CSS 無需每次加載頁面時下載數(shù)百 KB 的代碼,從而縮短頁面加載時間并提高網(wǎng)站性能。

          2.3 原子 CSS

          Mojo 遵循 Atomic CSS 方法,這意味著其專注于提供一組可用于構建自定義用戶界面的底層 CSS 實用程序。

          Mojo 不提供自定義的 UI 工具包,而是讓開發(fā)人員能夠靈活地使用提供的實用程序創(chuàng)建自己的 UI 設計。以下是使用 Mojo 實用程序的 qoute 卡的示例。

          <div class="bg-c-body:+2 pa-5 border-left-3 border-c-primary rounded-right-5">
              <quote class="text-c-stronginvert">
                  “Any sufficiently advanced technology is
                  indistinguishable from magic”
              </quote>
              <div class="mt-4">
                  Arthur C. Clarke
              </div>
          </div>

          Mojo 是另一個典型的 Atomic CSS 框架嗎?不是! Mojo 通過引入屬性變體而脫穎而出,使 Atomic CSS 更具可讀性且更易于維護。下面將 Mojo 與傳統(tǒng)的 Atomic CSS 框架進行比較:

          <!-- Typical Atomic CSS frameworks -->
          <div class="bg-red-400 px-5 hover:bg-red-600 hover:px-8">
              ...
          </div>
          
          <!-- Mojo CSS -->
          <div class="bg-c-red px-5" hover="bg-c-red:+2 px-8">
              ...
          </div>

          由于擔心多次重復代碼,使用原子設計的想法似乎仍然沒有吸引力,然而利用組合實用程序的概念卻與眾不同。

          3.Mojo CSS 組件抽離

          當構建項目時,開發(fā)者可能會發(fā)現(xiàn)自己一遍又一遍地重復相同的實用程序模式,從而 使代碼難以維護和更新。

          通過創(chuàng)建使用 Mojo 實用程序的自定義組件,可以保持代碼 DRY(Don't Repeat Yourself)并更輕松地維護和更新項目。

          以一個按鈕為例:

          <button class="bg-c-primary text-c-white py-2 px-4 rounded-4" hover="bg-c-primary:+5">
              Button
          </button>

          3.1 使用 JavaScript 框架

          使用 React、Vue 或 Angular 等 JavaScript 框架時,建議創(chuàng)建使用 Mojo 實用程序的自定義組件。

          這允許開發(fā)者利用框架的強大功能來創(chuàng)建動態(tài)和交互式用戶界面,同時仍然利用 Mojo 的實用程序來處理組件的樣式。

          例如,如果在 Vue 中構建按鈕組件,則可以創(chuàng)建如下自定義組件:

          <template>
            <button class="bg-c-primary text-c-white py-2 px-4 rounded-4" hover="bg-c-primary:+5">
              <slot></slot>
            </button>
          </template>
          
          <script>
              export default {
                  name: "custom-button"
              }
          </script>

          然后在 Vue 模板中使用:

          <custom-button>
            <!-- button content -->
          </custom-button>

          3.2 使用模式 (Pattern)

          如果不使用 JS 框架,則可以使用 Mojo 的模式。 模式提供了一種將一組實用程序封裝到一個類中的方法,然后可以在整個項目中重復使用該類。

          以按鈕為例:

          mojo({
           patterns : {
              '.btn': {
                  idle : 'bg-c-primary text-c-white py-2 px-4 rounded-4',
                  hover: 'bg-c-primary:+5'
              }
            },
          })

          接著就可以在 HTML 中如下引入:

          button class="btn">
            <!-- button content -->
          </button>

          參考資料

          https://mojocss.com/docs/guide/component-abstraction

          https://github.com/mojocss/mojocss


          主站蜘蛛池模板: 亚洲一区二区三区国产精品| 国产丝袜无码一区二区三区视频| 精品一区二区三区影院在线午夜 | 国内精品视频一区二区三区| 国产成人综合精品一区| 无码中文字幕人妻在线一区二区三区| 深夜福利一区二区| 国产视频一区二区在线观看| 精品女同一区二区三区免费站| 国产亚洲日韩一区二区三区 | 影院无码人妻精品一区二区| 中文字幕人妻AV一区二区| 亚洲第一区香蕉_国产a| 免费看一区二区三区四区| 午夜精品一区二区三区在线观看| 手机福利视频一区二区| 午夜性色一区二区三区免费不卡视频| 亚洲乱码一区二区三区在线观看 | 亚洲精品色播一区二区| 国模私拍福利一区二区| 在线精品国产一区二区| 中文字幕一区二区三区精彩视频 | 美女毛片一区二区三区四区| 久久亚洲国产精品一区二区| 中文日韩字幕一区在线观看| 日韩精品人妻一区二区中文八零| 精品一区二区三区免费观看| 中文字幕一区二区免费| 国产精品一区二区久久国产| 内射女校花一区二区三区| 亚洲色欲一区二区三区在线观看| 国产av成人一区二区三区| 精品乱人伦一区二区三区| 国产精品无码AV一区二区三区| 成人免费区一区二区三区| 一区二区免费视频| 亚洲AV无码一区二区三区在线| 精品无码综合一区二区三区| 日本韩国一区二区三区| 亚洲AⅤ视频一区二区三区| 国精品无码一区二区三区左线|