java-如何使两个Web应用程序的数据库保持同步?
作者:互联网
我有两个Web应用程序,每个都有自己的后端微服务,每个微服务都有自己的数据库.对于微服务1的数据库表中的任何更改,我想更改(创建/更新)微服务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:用于面试官的UI,可以协调在面试中提出的问题.
微服务2:后端服务,供访问员在问题选择方面进行协调.即,每个面试官都会选择他/她将在面试中向候选人提出的问题(这是为了确保没有两个面试官最终会向候选人提出相同的问题).
微服务2的DB:模式
// QuestionBank:包含访问者可以选择的问题的表.
//采访者:包含公司中所有采访者的表.
// InterviewToInterviewer :(许多与访谈员的访谈映射).一个面试可以有很多面试官,每个面试官可以参加许多面试.
// InterviewToInterviewerToQuestion :(许多对带有问题的interviewToInterviewers的映射).对于每个访谈,访调员可以选择许多问题,并且问题库中的每个问题都可以作为许多访谈到访员条目的一部分.
当前工作流程:
通过webapp1安排面试后:
>电子邮件将发送给所有面试官.电子邮件包含指向Webapp 2的链接,单击此链接将打开webapp2,该Webapp2提供了一个界面,供访问者选择他们计划在访问中提出的问题.
需求:
>如果面试官没有选择问题,那么我想向他们发送提醒.为此,我希望webapp2知道已安排面试.
>我希望webapp2知道发生的任何阵容变化(在给定的采访中,采访者被更改或采访被取消等).
我考虑过的解决方案:
>从webapp1安排/更改采访后,webapp1将立即调用webapp2(webapp2公开了该API),以使webapp2知道已创建新的采访或更新了现有的采访.
>对于DB1中采访表中的任何新条目/更新,将向DB2启动DB触发器.我不确定这是否也可能.
上面的两种方法中,有人可以帮助我解决一个选择相对于其他选择的利弊.或者有其他替代方法可以实现这一目标.
这里的线索表示赞赏.
解决方法:
不要将这两个服务紧密耦合,如果第二个服务依赖于任何其他服务,则可能会遇到延迟.如果第二服务没有启动怎么办.因此,请尝试在此处利用消息传递队列.拥有您的第一项服务来发布可能处于状态(新,已取消等)以及其他详细信息(采访ID,访问者等)的访问事件.进行第二项服务以听取.如您所说,面试请求会发送给多个面试官.在第二项服务中配置提醒作业/计划程序,并在数据存储中对其进行配置,并提供详细信息,例如:面试官ID,面试ID,时间范围等,以便您可以向面试官发送提醒容易.这应该对您有帮助.让我知道我是否没有正确回答您的问题.
微服务使用变更事件来获取给定系统中的数据一致性.
标签:database-trigger,microservices,java,sql-server 来源: https://codeday.me/bug/20191109/2011062.html