water8394/flink-recommandSystem-demo
:helicopter::rocket:基于Flink实现的商品实时推荐系统。flink统计商品热度,放入redis缓存,分析日志信息,将画像标签和实时记录放入Hbase。在用户发起推荐请求后,根据用户画像重排序热度榜,并结合协同过滤和标签两个推荐模块为新生成的榜单的每一个产品添加关联产品,最后返回新的用户列表。
해결하는 문제
이 프로젝트는 전자상거래를 위한 실시간 제품 추천 시스템의 완전하고 실행 가능한 데모입니다. 인기, 아이템 기반 협업 필터링, 제품 프로필 유사성, 사용자 관심 컨텍스트 등 여러 추천 전략을 결합하고 웹 페이지를 통해 제공하는 방법을 보여줍니다. 단일 알고리즘만 보여주는 대신, 사용자 행동이 스트리밍될 때 서로 다른 신호를 병합하고 실시간으로 갱신하는 방법을 시연합니다.
작동 방식
시스템은 사용자 행동 로그(조회, 즐겨찾기, 구매)를 Kafka로 스트리밍합니다. 6개의 Flink 작업이 이러한 로그를 소비하고 파생 데이터를 HBase와 Redis에 씁니다. 별도의 스케줄러 작업이 아이템 간 유사성 점수를 계산합니다. Spring Boot 웹 모듈은 이러한 저장소에서 읽고 세 가지 추천 열을 표시합니다: 실시간 인기 순위, 협업 필터링 제안, 제품 프로필 기반 제안.
6개의 Flink 작업은 각각 로직의 일부를 처리합니다: 원시 로그 저장, 사용자-제품 기록, 사용자 관심 감지(행동 간 시간 간격 기반), 사용자 프로필(색상/국가/스타일 선호도), 제품 프로필(연령대 및 성별), 그리고 Redis에 저장된 60초 슬라이딩 윈도우 인기 보드.
제품 간 유사성은 두 가지 방식으로 계산됩니다: 제품 프로필 특징(색상, 국가, 스타일)의 코사인 유사성과 사용자-제품 기록 기반 협업 필터링 공식입니다. 웹 UI는 또한 인기 보드 및 시간별 로그 볼륨과 같은 실시간 지표를 표시하는 관리 대시보드를 제공합니다.
저장소에는 모든 종속성(MySQL, HBase, Kafka, Redis, Flink)을 시작하고, 컴파일하고, 작업을 실행하고, 테스트 데이터를 주입하고, 웹사이트를 시작하는 Docker Compose 파일과 셸 스크립트가 포함되어 있습니다. README는 또한 localhost의 IPv6 문제, JDK 버전 제한, Docker 네트워크 내에서 Flink 작업을 실행해서는 안 되는 이유와 같은 일반적인 함정을 문서화합니다.
대상 독자
Apache Flink와 현대적인 데이터 저장소를 사용한 완전하고 작동하는 실시간 추천 파이프라인 예제를 보고 싶은 개발자와 데이터 엔지니어. 또한 단일 프로젝트에서 스트리밍 분석과 오프라인 스타일 추천 알고리즘을 결합하는 방법을 배우는 모든 사람에게 유용합니다.
하이라이트
- 6개의 별도 Flink 작업이 각각 특정 추천 하위 작업(기록, 관심, 프로필, 인기)을 처리합니다.
- 두 가지 유사성 방법이 구현되었습니다: 제품 프로필 코사인 유사성 및 아이템 기반 협업 필터링.
- 실시간 인기 계산은 5초마다 슬라이딩하는 60초 이벤트 시간 창을 사용합니다.
- Docker Compose는 하나의 스크립트로 전체 스택(MySQL, HBase, Kafka, Redis, Flink)을 시작합니다.
- 셸 스크립트는 컴파일, 작업 제출, 테스트 데이터 생성, 웹사이트 시작을 자동화합니다.
- 자세한 문제 해결 섹션은 네트워크, JDK 및 초기화 문제를 다룹니다.
- 추천 페이지는 인기, 협업 필터링, 제품 프로필 기반 결과의 세 열을 나란히 표시합니다.
- 관리 대시보드는 별도 페이지에서 실시간 추천 지표를 표시합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트