如何处理类个与微服务无关的对象?

How to deal with objects of classes that are irrelevant to the microservice?

我正在尝试使用 Spring Boot 将单体系统划分为微服务。我遇到的问题是,虽然每个微服务通常应该有 class 实现服务功能,但我需要接收和处理封装许多与其他微服务相关的 class 的对象。例如下面的代码是microservice1的一部分,提供学生信息:

class Microservice1{

int id;
String name;
int grade;
Record record;

}

现在注意Record对象是属于另一个微服务的class对象,即microservice2,它提供学生记录如下:

class Microservice2{

List<int> marks;
Behaviour behaviour;

}

现在behaviour也是另一个对象class属于另一个微服务3,依此类推

我的问题是:如何摆脱必须在微服务 1 中包含所有这些 class 的问题,因为微服务 1 在提供服务时需要处理它们?问题很严重,因为我有许多相互封装的 classes,我需要在一个微服务中包含大部分单体系统 classes。

据我所知,您的微服务过于精细。以这种方式实施会遇到很多麻烦。

恕我直言,如果 RecordStudent 相关并且属于相同的 业务上下文,属于同一个微服务。

正如 David 在评论中所说,限界上下文概念可以(真正)帮助您。

无论如何,想象一下您想要遵循您提议的那一行。如果 Record 属于微服务 B,并且您必须通过微服务 A 中某处的组合来引用它,那么您唯一需要的就是它的主键。不是整个对象。

会是这样的:

微服务A:

Student.java

public class Student {

    private Integer id;
    private String name;
    private Integer grade;
    private Integer recordId;

    // getters and setters omitted for brevity
}

微服务B:

Record.java

public class Record {

    private Integer recordId;
    private List<Integer> marks;
    private Integer behaviourId;

    // getters and setters omitted for brevity
}

等等..

但正如我所说,也许这不是最好的方法。

请参阅 here 一篇关于限界上下文的好文章。

我相信你对限界上下文很清楚。实际上,很难像您在示例中显示的那样检查每个 class 彼此之间的关系。我建议使用一种可以直观地向您显示依赖关系的工具。然后,将它们放入限界上下文后,您可以开始键映射,以从其他微服务获取数据。