How wentao2024/feed-syetem works
Feed System is a JWT-authenticated social-feed backend. Users register, follow accounts, and create or interact with posts; post and follow events drive asynchronous feed maintenance, while reads combine pushed timelines with pulls from large accounts and return cursor-paginated results. The README documents the hybrid push/pull strategy and caching; sampled source confirms service responsibilities, Feign lookups, persistence operations and event publishing. Feed listener wiring and storage/configuration details are only represented where supported by the tree or README.
Main entry points: GatewayApplication.java API Gateway · PostService.java Post service · UserService.java User service · FeedService.java Hybrid feed engine
Components 22
API access
- API Gateway
api-gateway/src/main/java/com/feedsystem/gateway/GatewayApplication.java - JWT validation
api-gateway/src/main/java/com/feedsystem/gateway/filter/JwtAuthFilter.java
Accounts
- User API
user-service/src/main/java/com/feedsystem/user/controller/UserController.java - User service
user-service/src/main/java/com/feedsystem/user/service/UserService.java - Internal user API
user-service/src/main/java/com/feedsystem/user/controller/InternalUserController.java - User database
user-service/src/main/java/com/feedsystem/user/mapper/UserMapper.java - Follow database
user-service/src/main/java/com/feedsystem/user/mapper/FollowMapper.java
Posts
- Post API
post-service/src/main/java/com/feedsystem/post/controller/PostController.java - Post service
post-service/src/main/java/com/feedsystem/post/service/PostService.java - Internal post API
post-service/src/main/java/com/feedsystem/post/controller/InternalPostController.java - Post database
post-service/src/main/java/com/feedsystem/post/mapper/PostMapper.java - Like database
post-service/src/main/java/com/feedsystem/post/mapper/LikeMapper.java - Image storage
post-service/src/main/java/com/feedsystem/post/service/FileStorageService.java
Personalized feeds
- Feed API
feed-service/src/main/java/com/feedsystem/feed/controller/FeedController.java - Hybrid feed engine
feed-service/src/main/java/com/feedsystem/feed/service/FeedService.java - Feed event listener
feed-service/src/main/java/com/feedsystem/feed/listener/FeedEventListener.java - Redis timelines and caches
- Post service client
feed-service/src/main/java/com/feedsystem/feed/client/PostServiceClient.java - User service client
feed-service/src/main/java/com/feedsystem/feed/client/UserServiceClient.java
Shared messaging
- RabbitMQ
- Eureka discovery
eureka-server/src/main/java/com/feedsystem/eureka/EurekaServerApplication.java
Other components
- Client
Connections 25
- Client → API Gateway: sends requests
- API Gateway → JWT validation: validates JWT
- API Gateway → User API: routes requests
- API Gateway → Post API: routes requests
- API Gateway → Feed API: routes requests
- User API → User service: handles account actions
- User service → User database: reads and writes users
- User service → Follow database: reads and writes follows
- User service → RabbitMQ: publishes follow events
- Internal user API → User service: serves feed lookups
- Post API → Post service: handles post actions
- Post service → Post database: reads and writes posts
- Post service → Like database: reads and writes likes
- Post service → Image storage: stores post images
- Post service → RabbitMQ: publishes post events
- Internal post API → Post service: serves feed queries
- Feed API → Hybrid feed engine: retrieves feed page
- RabbitMQ → Feed event listener: delivers events
- Feed event listener → Hybrid feed engine: dispatches feed updates
- Hybrid feed engine → Redis timelines and caches: reads and updates timelines and caches
- Hybrid feed engine → User service client: requests follower data
- User service client → Internal user API: fetches feed metadata
- Hybrid feed engine → Post service client: requests post data
- Post service client → Internal post API: fetches posts
- API Gateway → Eureka discovery: discovers services