ICode9

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

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

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

标签: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
来源: https://codeday.me/bug/20191109/2011062.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有