【问题标题】:Design pattern when search service fail搜索服务失败时的设计模式
【发布时间】:2018-01-09 22:47:04
【问题描述】:

我有一个 UserRepository 来搜索数据库(solr、elasticsearch、其他...),并且我的 SQL 数据库中有这个用户数据(MySQL、PostgreSQL、其他...),我的问题是我把这个放在什么地方?在存储库中?还是其他抽象(Service、Controller)?

我的示例是用 Java 编写的,但我会将其应用于 java (Spring) 和 PHP:

public interface UserRepository extends SolrCrudRepository<User, String> {}

【问题讨论】:

  • 什么你的问题是什么?请编辑你的答案,让每个人都明白你的意思
  • @Lino 我把这个放在什么地方?在存储库中?为此创建一个服务?

标签: java spring design-patterns spring-data hystrix


【解决方案1】:

如果我理解你,你做对了

Repository Pattern 可让您抽象出数据的何处。因此,您使用案例/控制器/不需要关心的任何东西

但是存储库不需要知道有关如何检索该数据的详细信息。这是DAO (Data Access Object) 的任务。 DAO 封装了有关数据如何存储的详细信息

因此,您的存储库可以有多个 DAO 访问多个数据源并协调它们。例如

  1. 使用myDAO1检索用户数据
  2. 如果myDAO1 正在获取的数据源中没有用户数据,则使用myDAO2 获取另一个数据源
  3. 继续进行,直到存储库找到所需的数据(可能实现 Chain of responsability)或返回 null 或引发异常或执行您定义的任何操作

【讨论】:

  • 了解...我可以创建一个 UserRepository,然后他调用 DAO(例如 UserSQL 和 UserSolr),而我的服务、控制器只调用存储库,这是一个工作流?
  • 我可以用 hystrix 做到这一点吗? (如果你知道 Netflix 的 hystrix)
  • 1.检查任何关于清洁架构的博客文章。它应该澄清你对工作流程的想法。 2. 我没用过Hystrix,但我想说你可以在任何情况下使用
  • 谢谢:D,我会听从你的话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 2012-03-23
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多