【发布时间】:2020-02-14 04:43:18
【问题描述】:
我正在尝试使用 kakfa 为两个微服务 A 和 B 同步数据。
A 将公司中一组员工的一些数据存放在数据库表中。然后最终用户将从 UI 触发一个事件到 A 的后端服务,在该服务中它将 kakfa 消息发送到 B 订阅的主题。
B 然后从消息或暂存表中获取数据,对其进行验证并保存到自己的数据库表中。
我的问题是..
每家公司的员工人数可以从 10 到 1000 人不等,并且可能有多家公司尝试在一年中的某个时间同步数据。所以性能是一个问题。什么是分配负载的好方法?意思是..我应该将信息设计为员工级别的吗?这意味着可能有数千条消息,尽管从设计上讲这将是最简单的。还是应该在公司层面?或公司内的一组员工?微服务没有做太多的处理和持久化到表中。它能够处理负载吗?限制因素是什么?
我们正在处理的数据是存储在 DB 中的 JSON。有一个临时表并使用消息中的某种主键从 B 查找会更好吗?还是让消息中的所有数据都可以?每个员工的 JSON 数据并没有那么大,但如果汇总到一组员工,比如说 100 人,它可能是 10-100 千字节。我们是否通过从表格中查找数据来购买很多东西?
我们需要能够跟踪状态/错误,以便最终用户了解任何问题并执行操作以更正数据和/或尝试重新同步。我想到的一些方法是创建一个表,将其称为 BATCH_JOB 和 BATCH_TASK 表以跟踪工作级别的请求(如前所述,一组员工的 UI 事件触发重新同步过程)和任务(员工级别)。还是有更清洁的方法?
任何帮助/设计提示将不胜感激。
【问题讨论】:
-
为什么 A 不能同时写入一个主题,该主题会被下沉到数据库中?
标签: java performance apache-kafka relational-database data-synchronization