【发布时间】:2019-12-03 07:56:40
【问题描述】:
我正在开发一个示例微服务项目。 我有教师服务、学生服务、学习服务和体育服务。 我使用每个服务模式的数据库
一位老师有很多学生 一个学生有很多学习数据和运动数据 老师可能会因学生而改变
- 如何处理关系?
老师想查看学生的学习和运动数据
- 在微服务中处理这种情况的最佳方法是什么
我尝试将学生 ID 存储在教师服务中
|---------------------|------------------|
| teacher_id | student_id |
|---------------------|------------------|
| 12 | 34 |
|---------------------|------------------|
但在学习服务和体育服务中,我只存储 student_id。
获取老师的学生学习和运动数据。我从教师服务中获取教师的所有学生 ID,并将其传递给学习服务和体育服务。
我通过 Rest GET 方法传递学生 ID 并且它越来越长
=====> 更新。
如何将teacher_id 和student_id 存储在所有数据库中(具有一致性的重复数据)或使用第三个数据库(分片数据库)
【问题讨论】:
-
您使用的方法是有效的,尝试使用 Feign Client (cloud.spring.io/spring-cloud-netflix/multi/…) 减少样板代码并尝试使您的外部服务高可用。同时创建多个实例并平衡它。
-
微服务 A 调用微服务 B 获取学生详细信息,也可能向微服务 C 询问其他详细信息,依此类推。
-
但是@YogeshPrajapati,GET 方法有字符限制,如果我们通过所有学生 _id API 可能会拒绝,如果使用分页,我们需要一直调用它。如何处理这个
-
哦,对不起,我误解了你的问题。您不应该通过 GET 一次将所有 id 传递给另一个服务
-
但是在Rest Get中是用来查询的,如何用其他方法替换in
标签: database rest spring-boot microservices spring-cloud