我正在使用 Spring-boot 或 Spring-Cloud Framework 来开发 Web 应用程序。系统将主要处理来自客户端的 HTTP Restful 请求,然后将它们保存到 MySQL 数据库中。
但我计划使其更具可扩展性。它应该能够启动每个服务的更多实例,并使系统可以处理更多的传入请求。
但是我不确定我做的是否正确,有没有人可以帮我检查一下我目前的方法是否合理,或者在我的方法中提出任何潜在的风险。
我正在做的是:
服务 A 在其控制器中接收请求,然后将它们异步写入 RocketMQ。RocketMQ 用于削峰。
然后服务 B 订阅服务 A 写入的 RocketMQ 主题,并将消息以列表的形式缓存到 Redis 中。
服务 C 启动一个守护线程检查 Redis 中的消息编号。如果缓存列表大小达到一定值,它会将所有消息拉取并保存到 MySQL 中,然后刷新 Redis 中的缓存。