如何处理类个与微服务无关的对象?
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。
据我所知,您的微服务过于精细。以这种方式实施会遇到很多麻烦。
恕我直言,如果 Record
与 Student
相关并且属于相同的 业务上下文,属于同一个微服务。
正如 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 彼此之间的关系。我建议使用一种可以直观地向您显示依赖关系的工具。然后,将它们放入限界上下文后,您可以开始键映射,以从其他微服务获取数据。
我正在尝试使用 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。
据我所知,您的微服务过于精细。以这种方式实施会遇到很多麻烦。
恕我直言,如果 Record
与 Student
相关并且属于相同的 业务上下文,属于同一个微服务。
正如 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 彼此之间的关系。我建议使用一种可以直观地向您显示依赖关系的工具。然后,将它们放入限界上下文后,您可以开始键映射,以从其他微服务获取数据。