How liyupi/yu-like works
This is a Vue frontend and Spring Boot backend for blog browsing, user login, and high-volume blog likes. The main workflow runs from a user action through the frontend API and backend controller to like processing: Redis records the immediate state, Pulsar carries asynchronous events, and a consumer synchronizes durable records and counts. Blog browsing and session-based login are separate user-facing flows; scheduled jobs provide synchronization and reconciliation. The README also documents monitoring and alerting, but their implementation is not present in the supplied tree. Some subsystem links are omitted where the sampled code does not establish wiring.
Main entry points: services.js Frontend API · ThumbServiceMQImpl.java Async like service · ThumbServiceImpl.java Local-cache service · ThumbController.java Like API
Components 22
Web frontend
- Vue app
thumb-front/src/main.js - Blog views
thumb-front/src/views/Home.vue - Like button
thumb-front/src/components/ThumbButton.vue - Pinia stores
thumb-front/src/stores/thumb.js - Frontend API
thumb-front/src/api/services.js
API and domain
- Blog API
src/main/java/com/yuyuan/thumb/controller/BlogController.java - User API
src/main/java/com/yuyuan/thumb/controller/UserController.java - Like API
src/main/java/com/yuyuan/thumb/controller/ThumbController.java - Blog service
src/main/java/com/yuyuan/thumb/service/impl/BlogServiceImpl.java - User service
src/main/java/com/yuyuan/thumb/service/impl/UserServiceImpl.java
Like processing
- Async like service
src/main/java/com/yuyuan/thumb/service/impl/ThumbServiceMQImpl.java - Local-cache service
src/main/java/com/yuyuan/thumb/service/impl/ThumbServiceImpl.java - Like consumer
src/main/java/com/yuyuan/thumb/listener/thumb/ThumbConsumer.java - Hot-key cache
src/main/java/com/yuyuan/thumb/manager/cache/CacheManager.java
State and recovery
- Redis
- Pulsar
- Relational DB
- Sync jobs
src/main/java/com/yuyuan/thumb/job/SyncThumb2DBJob.java - Reconcile jobs
src/main/java/com/yuyuan/thumb/job/ThumbReconcileJob.java
Observability
- Metrics and alerts
src/main/java/com/yuyuan/thumb/controller - Prometheus / Grafana
Other components
- User
Connections 25
- User → Vue app: uses
- Vue app → Blog views: routes to
- User → Like button: acts on
- Like button → Pinia stores: updates
- Blog views → Frontend API: requests blogs
- Pinia stores → Frontend API: requests likes
- Frontend API → Blog API: calls blog API
- Frontend API → User API: calls user API
- Frontend API → Like API: calls like API
- Blog API → Blog service: delegates
- User API → User service: loads user
- Like API → Async like service: delegates
- Async like service → User service: gets session user
- Async like service → Redis: runs Lua scripts
- Async like service → Pulsar: sends events
- Pulsar → Like consumer: dispatches events
- Like consumer → Relational DB: persists batches
- Local-cache service → Hot-key cache: reads cache
- Local-cache service → Redis: reads and writes
- Local-cache service → Relational DB: updates records
- Hot-key cache → Redis: reads hashes
- Sync jobs → Relational DB: synchronizes data
- Reconcile jobs → Relational DB: reconciles state
- Like API → Metrics and alerts: increments counters
- Prometheus / Grafana → Metrics and alerts: scrapes metrics