Sistem Rekomendasi Acara
Desain Bisnis
- Untuk merancang sistem rekomendasi acara berbasis personalisasi untuk pencarian acara.
Instruksi Umum
- Rancang layanan web dengan
RESTful APIs
di Java untuk menangani permintaan dan respons HTTP - Frontend: halaman web interaktif dengan teknologi
AJAX
yang diimplementasikan dengan HTML
, CSS
, dan JavaScript
. Situs Web Rekomendasi Acara mewujudkan tiga fungsi utama:- Cari acara di sekitar pengguna
- Acara favorit yang mereka sukai dan juga menghapus acara yang tidak mereka sukai lagi
- Dapatkan rekomendasi acara sekitar berdasarkan sejarah favorit mereka dan jarak ke tempat acara akan diadakan
- Backend: gunakan
Java
untuk memproses permintaan logika, dan beberapa dukungannya adalah sebagai berikut:- Dibangun dengan database relasional dan database NoSQL (
MySQL
dan MongoDB
) untuk mendukung penyimpanan data dari pengguna dan item yang dicari di API TicketMaster - Rancang algoritma rekomendasi berbasis konten untuk rekomendasi acara
- Terapkan server situs web di
Amazon EC2
: Sistem Rekomendasi Acara - Analisis lalu lintas situs web baik online maupun offline dengan ELK (
ElasticSearch
, Logstash
, dan Kibana
) dan MapReduce
di MongoDB
Desain Infrastruktur
- Arsitektur 3 tingkat
- Tingkat presentasi: HTML, CSS, JavaScript
- Tingkat data: MySQL, MongoDB
- Tingkat logika: Java
- Lingkungan pengembangan lokal dan terpencil
Lingkungan pengembangan lokal
Lingkungan pengembangan jarak jauh
Desain API
- Tingkat logika (Java Servlet ke RPC)
- Mencari
- item pencarian
- API Master Tiket
- parsing dan bersihkan data, simpanItems
- tanggapan kembali
- Sejarah
- dapatkan, atur, hapus item favorit
- basis data kueri
- tanggapan kembali
- Rekomendasi
- merekomendasikanItem
- dapatkan sejarah favorit
- mencari acara serupa, menyortir
- tanggapan kembali
- Login
- DAPATKAN: periksa apakah sesi sudah masuk
- POST: verifikasi nama pengguna dan kata sandi, atur waktu sesi dan ditandai sebagai login
- database kueri untuk diverifikasi
- tanggapan kembali
- Keluar
- DAPATKAN: batalkan sesi jika ada dan arahkan ke
index.html
- POST: sama dengan GET
- tanggapan kembali
- Daftar
- Tetapkan pengguna baru ke dalam tabel/koleksi pengguna di database
- tanggapan kembali
Desain API di tingkat logika
- Dokumen Resmi TicketMasterAPI - Discovery API
- Desain Algoritma Rekomendasi
- Rekomendasi Berbasis Konten : temukan kategori dari profil item dari favorit pengguna, dan rekomendasikan item serupa dengan kategori yang sama.
- Sajikan item yang direkomendasikan dengan peringkat berdasarkan jarak (geolokasi pengguna)
Proses permintaan rekomendasi
Desain Basis Data
- MySQL
- pengguna - menyimpan informasi pengguna.
- item - menyimpan informasi item.
- kategori - menyimpan hubungan kategori item
- history - menyimpan riwayat favorit pengguna
Desain basis data MySQL
- MongoDB
- pengguna - menyimpan informasi pengguna dan riwayat favorit. = (pengguna + riwayat)
- item - menyimpan informasi item dan hubungan kategori item. = (item + kategori)
- logs – menyimpan informasi log
Detail Implementasi
- Pola desain
- Pola pembuat :
Item.java
- Saat mengonversi acara dari TicketMasterAPI ke Item Java, gunakan pola pembuat untuk menambahkan kolom secara bebas.
- Pola pabrik :
ExternalAPIFactory.java
, DBConnectionFactory.java
-
ExternalAPIFactory.java
: mendukung berbagai fungsi seperti rekomendasi acara, restoran, berita, pekerjaan… cukup tautkan ke API publik yang berbeda seperti TicketMasterAPI. Meningkatkan kemampuan ekstensi. -
DBConnectionFactory.java
: mendukung banyak database seperti MySQL dan MongoDB. Meningkatkan kemampuan ekstensi.
- Pola tunggal :
MySQLConnection.java
, MongoDBConnection.java
- Hanya buat sejumlah instance database tertentu, dan kelas dapat mengontrol instance itu sendiri, dan memberikan akses global ke kelas luar
Analisis Perilaku Pengguna
- Daring ( ElasticSearch , Logstash , Kibana )
- Gunakan Logstash untuk mengambil log (dalam bentuk seperti NoSQL), lalu menyimpan data di ElasticSearch, terakhir gunakan Kibana untuk menganalisis data di ElasticSearch, mendapatkan beberapa tabel dan grafik seperti penggunaan API, status permintaan, geolokasi pengunjung, dll.
Lingkungan pengembangan jarak jauh
- Offline ( MapReduce di MongoDB )
- Salin-tempel beberapa log dari server Tomcat
- Bersihkan data log dan simpan di MongoDB
- Lakukan
mapreduce()
di MongoDB - Dapatkan daftar timebucket-count dalam urutan hitungan menurun, lalu temukan waktu puncak lalu lintas situs web