【发布时间】:2016-05-25 17:33:04
【问题描述】:
对不起我的英语。有一个具有单体架构的大型 Java 项目(spring、hibernatne 等)。让我们将其命名为核心。添加新功能是一项艰巨的工作,因此决定从核心中创建新功能,然后通过 http(REST api)链接它们。现在有核心和很多“服务”围绕着它,但是核心和服务只有一个DB。服务之间不传输任何数据。他们像恶魔一样工作,或者核心向他们提出请求。当核心调用任何服务时,会发生以下情况:服务获取请求,直接对数据库进行sql查询,对接收到的数据执行自己的逻辑并将结果返回给核心。我认为使用公共数据库是一种不好的做法,所以我想关闭对数据库的任何服务的直接完全访问。
我有两个想法:
- 对于修改,我想使用事件(创建、更新、删除)和一个 boker(ActiveMQ、RabbitMQ)
-
对于阅读,我有 3 个选项之一:
2.1。在核心端为每个选择查询创建内部 API(这不是一个好的选择,因为我们不想经常重新编译核心)
2.2。让服务直接从数据库中读取数据
2.3。将 sql 查询打包到“服务”端的某个对象中并将其发送到核心,那里的查询将被解包并执行,结果将作为 JSON 数组发送回客户端。同样在核心方面,我将检查它是否只是“选择”查询。
我想问你一个问题:
- 这样分开阅读和修改是不是一个不错的选择?
- 您能推荐我哪些阅读方式?
- 如果我选择 2.3 选项进行阅读,你能推荐什么框架?我已经开始关注 JOOQ,但它可能根本不适合它
谢谢
【问题讨论】:
标签: java spring architecture soa esb