ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java-如何使两个Web应用程序的数据库保持同步?

2019-11-09 02:01:09  阅读:13  来源: 互联网

标签:database-trigger microservices java sql-server



我有两个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

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有