【发布时间】:2019-08-01 12:35:53
【问题描述】:
我正在使用 Spring-boot 或 Spring-Cloud Framework 开发 Web 应用程序。 系统主要用于处理来自客户端的 HTTP Restful 请求,然后保存到 MySQL 数据库中。
但我计划使其更具可扩展性。它应该能够启动每个服务的更多实例,并使系统可以处理更多的传入请求。
但我不确定我的做法是否正确,谁能来帮我检查一下我目前的做法是否合理,或在我的做法中引发任何潜在风险。
我正在做的是:
Service A 在其控制器中接收请求,然后将请求异步写入 RocketMQ。 RocketMQ 用于削峰。
然后Service B订阅Service A写入的RocketMQ主题,并将消息以list的形式缓存到Redis中。
服务 C 启动一个守护线程检查 Redis 中的消息编号。如果缓存列表大小达到一定值,就会拉取所有消息并保存到 MySQL 中,然后刷新 Redis 中的缓存。
【问题讨论】:
-
只要你 a) 使用 Spring Boot,并且 b) 想要可扩展性......然后想想“微服务”。将您的应用程序划分为可以部署在container(如 Docker)中的微服务,并让 Kubernetes(或等效的)处理“可扩展性”。只是一个想法......
标签: spring performance spring-boot rocketmq