我有两个网络应用,每个都有自己的后端微服务,每个微服务都有自己的数据库。对于microservice1数据库表中的任何更改,我希望更改(创建/更新) microservice 2数据库表中的条目。
上下文:
Webapp 1:为人力资源协调员安排面试的 UI。
微服务1:安排面试的后端服务。
数据库用于微服务1:存储与面试候选人有关的信息。
interviews: [ {
"interviewId": "1",
"candidateId": "abc",
"interviewers": [
{
"interviewer_name": "Thor",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
},
{
"interviewer_name": "Loki",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
}
]
} ]
Webapp 2:用户界面,让面试官在面试中协调提问。
微服务2:为面试官提供后端服务,以协调问题选择。也就是说,每个面试官都会在面试中从应聘者那里选择他/她要问的问题(这是为了确保不会有两个面试官最终从一个候选人那里问同样的问题)。
用于微服务的DB 2:模式
// QuestionBank :包含问题的表,面试官可以选择。
//面试官:包含公司所有面试官的表格。
// InterviewToInterviewer:(与面试官的访谈有很多次)。一次面试可以有很多面试官,每个面试官可以参加很多次面试。
// InterviewToInterviewerToQuestion:(许多到许多问题映射interviewToInterviewers )。对于每一次面试,面试官可以选择许多问题,而提问库中的每一个问题都可能是许多interviewToInterviewer条目的一部分。
当前工作流:
一旦webapp1安排了面试:
要求:
我想出的解决办法:
在以上两种方法中,有人可以帮助我了解一种选择而不是另一种方法的利弊。或者还有其他替代方法来实现这一目标。
这里的线索很受欢迎。
发布于 2018-05-13 07:03:18
不要使这两个服务紧密耦合,如果第二个服务依赖任何其他服务,您可能会面临延迟。如果第二次发球还没结束呢。因此,在这里尝试使用消息队列。让您的第一个服务发布采访事件,可以处于状态(新的,取消等,以及其他细节采访id,面试官等)。做第二次服务去听它。正如您所说的,面试请求发送给多个interviewers.Configure --第二服务中的提醒作业/调度程序,并在数据存储中进行配置,包括:面试官id、面试id、时间范围等,以便您可以轻松地向面试官发送提醒。这应该对你有帮助。如果我没有正确回答你的问题,请告诉我。Microservices使用变更事件来获得给定系统中的数据一致性。
发布于 2018-05-13 07:03:42
上述两种方法都是可行的。
这不是你所希望的确切解决方案,但我想它将有助于你深入研究可能的解决方案。
https://stackoverflow.com/questions/50312750
复制相似问题