基於 Flink 實現的商品實時推薦系統 -附源碼-

前言

之前一直給大家推薦的是關於 Flink 的介紹和知識點,可以在歷史文章搜索瞭解。總的來說,現在還挺缺這種真正實戰的項目分享出來,尤其是把源代碼分享出來的,近期我在 GitHub 觀察到一個不錯的 Flink 項目,然後也和作者交流了下,於是在這裏做一個分享。所以,那些平時問我有沒有 Flink 項目的可以看過來了。地址在 :https://github.com/CheckChe0803/flink-recommandSystem-demo 下面介紹下這個項目。

  1. 系統架構 v2.0

2. 推薦引擎邏輯說明

3. 前臺推薦頁面

當前推薦結果分爲 3 列, 分別是熱度榜推薦, 協同過濾推薦和產品畫像推薦

4. 後臺數據大屏

在後臺上顯示推薦系統的實時數據, 數據來自其他 Flink 計算模塊的結果. 目前包含熱度榜和 1 小時日誌接入量兩個指標. 
真實數據位置在 resource/database.sql

5. 部署說明

以下的部署均使用 Docker,對於搭建一套複雜的系統,使用 docker 來部署各種服務中間件再合適不過了。這裏有一套簡單的 Docker 入門系列

需要的服務有:Mysql、Redis、Hbase 和 Kafka

Mysql

docker pull mysql:5.7

docker run --name local-mysql -p 3308:3306  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

簡單介紹一下命令,先拉取鏡像,然後指定參數啓動容器

Redis

$ docker run --name local-redis -p 6379:6379 -d redis

Hbase

docker pull harisekhon/hbase

docker run -d -h base-server \
        -p 2181:2181 \
        -p 8080:8080 \
        -p 8085:8085 \
        -p 9090:9090 \
        -p 9000:9000 \
        -p 9095:9095 \
        -p 16000:16000 \
        -p 16010:16010 \
        -p 16201:16201 \
        -p 16301:16301 \
        -p 16020:16020\
        --name hbase \
        harisekhon/hbase

Hbase 用到的端口, 可以參考一下詳細教程
啓動成功之後我們可以訪問http://localhost:16010/master-status登錄 Web 界面

:point_right: 快速實現 SpringBoot 集成 Hbase

Kafka

考慮到更好的區別這些端口,我這裏啓動了一個虛擬機,在虛擬機中在用 dokcer 安裝 Kafka,過程如下

## pull images
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
docker pull sheepkiller/kafka-manager

docker run -d --name zookeeper --publish 2181:2181 \
  --volume /etc/localtime:/etc/localtime \
  --restart=always \
  wurstmeister/zookeeper


## run kafka
docker run --name kafka \
  -p 9092:9092 \
  --link zookeeper:zookeeper \
  -e KAFKA_ADVERTISED_HOST_NAME=192.168.1.8 \
  -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
  -d  wurstmeister/kafka  

## run kafka manager
docker run -d \
  --link zookeeper:zookeeper \
  -p 9000:9000  \
  -e ZK_HOSTS="zookeeper:2181" \
  hlebalbau/kafka-manager:stable \
  -Dpidfile.path=/dev/null

如果想設置 webui 的權限,可以這樣設置

KAFKA_MANAGER_AUTH_ENABLED: "true"
KAFKA_MANAGER_USERNAME: username
KAFKA_MANAGER_PASSWORD: password

容器啓動成功之後就可以在頁面訪問localhost:9000查看 Kafkfa 的管理界面。

:point_right: 快速實現 SpringBoot 集成 Kafka

啓動服務

以下的操作是在 IDEA 下完成

1、將上述部署的幾個服務的 ip 和端口號分別配置在 flink-2-hbase 和 web 服務中;

2、在 flink-2-hbase 中的根目錄執行mvn clean install,目的是將其打包並放置在本地倉庫中;

3、分別啓動 task 目錄下的 task(直接在 idea 中右鍵啓動就行了);

4、把 SchedulerJob 啓動起來,定時的去計算協同過濾和用戶畫像所需要的分數;

5、在 idea 中打開 web 項目,等待其自動引入 flink-2-hbase 生成的 jar 包之後,再啓動服務就 ok 了;

注意:所有的服務啓動後,因爲沒有任何的點擊記錄,所以就是隨機從數據庫取得產品,這裏需要你在推薦頁面隨便點擊,等有了一定的歷史數據之後,就能實現實時推薦的效果了

6. 下一步工作

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/9EZP2zxvRHk2X61Natj60w