小编Ale*_*mov的帖子

微服务——以最小的内存/时间损失从其他微服务中检索特定用户的相关数据的最佳实践

我正在尝试使用Lumen / Laravel Passport创建微服务架构。

我有多个 dockerized 服务,它们都在不同的 VM 中作为单独的 Lumen 应用程序容器运行:

  • API 网关服务(与 Laravel Passport 集成以进行身份​​验证和请求验证以进一步处理)
  • 聊天服务(消息/聊天室服务)
  • 通讯社
  • ......(以及许多其他服务)

所有这些服务都有自己独立的 Redis/MySQL 数据库等

例如,在单体应用中,数据库中有一个 User 表,表之间存在关系等等。我已经使用 JOIN 和其他查询根据当前用户 ID 的逻辑选择来检索数据。

但是现在我在移动/网络应用程序中有一个常规页面,我必须从不同服务中获取当前可见页面的多个信息。

为了接收这些数据,我在不同的服务中发送了多个请求

题:

使用微服务架构存储用户信息的最佳/正确做法是什么,以及以最小的内存/时间损失从其他微服务中检索该用户的相关数据的正确方法是什么?以及在哪里存储用户信息(如 id、电话等)以避免数据重复?

抱歉可能重复。试图理解..

architecture microservices

5
推荐指数
1
解决办法
4208
查看次数

PullCommand在JGit中引发“什么都无法获取”异常

我在项目中使用JGit库。这是我的JGit util类:

public class GitUtil {

    private static final RefSpec REF_SPEC = new RefSpec(Constants.GIT_REF_SPEC);
    private static final RefSpec REMOTE_REF_SPEC = new RefSpec(Constants.GIT_REMOTE_REF_SPEC);
    private static final CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(Constants.GIT_REMOTE_USER_NAME, Constants.GIT_REMOTE_PASSWORD);
    private static Git git;
    @Autowired
    private HibernateUtilServiceImpl hibernateUtilServiceImpl;

    @PostConstruct
    public void initGitRepository() throws Exception {
        File file = new File(Constants.GIT_REPOSITORY_MAIN_FILE_PATH);
        FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
        repositoryBuilder.addCeilingDirectory(file);
        repositoryBuilder.findGitDir(file);
        if (repositoryBuilder.getGitDir() == null) {
            git = Git.init().setDirectory(file.getParentFile()).call();
            StoredConfig config = git.getRepository().getConfig();
            config.setString("remote", "origin", "url", Constants.GIT_HSQLDB_REMOTE_REPOSTITORY_URL);
            RemoteConfig remoteConfig = new RemoteConfig(config, "remote"); …
Run Code Online (Sandbox Code Playgroud)

java git jgit

2
推荐指数
1
解决办法
3525
查看次数

JavaFX组合框未显示对象的正确值

我在我的项目中使用JavaFX,Hibernate,Spring.

我需要用我的对象值填充组合框.在我的组合框中,我只需要显示模型中的标题值.

我的模特课:

public class Sector extends Identifier {
    private String title;

    private List<Stage> stageList;

    public List<Stage> getStageList() {
        return stageList;
    }

    public void setStageList(List<Stage> stageList) {
        this.stageList = stageList;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "Sector{" +
                "id='" + getId() + '\'' +
                "title='" + title + '\'' +
                ", stageList=" + stageList +
                '}';
    }
}
Run Code Online (Sandbox Code Playgroud)

public class Stage extends …
Run Code Online (Sandbox Code Playgroud)

java combobox javafx

1
推荐指数
1
解决办法
1230
查看次数

Java 8 - 使用Stream API使用相同对象填充arraylist的正确方法是什么?

我是Stream API的新手,我正在寻找更优雅和最短的方法来使用相当于此代码的Stream API 来填充具有相同对象的ArrayList :

SomeObject someObject = new SomeObject();
List<SomeObject> someObjectList = new ArrayList<>();

int maxLimitValue = 70; //for example
for(int i=0; i<=maxLimitValue; i++){
   someObjectList.add(someObject);
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了许多不同的解决方案来完成当前的任

这个变体几乎就是我想要的,但是有一个对象的自动生成,但我需要使用一次创建的相同对象.

这个解决方案也几乎是我需要的,但我不确定这个对象的复制,返回的List类型不是 ArrayList(它返回了CopiesList类型,在将来的操作中无法添加到ArrayList).

ps也许它可能重复,但我真的找不到使用Stream API执行此操作的正确和简短的方法.

更新(assylias添加):

是的,我同意你的观点:

List<SomeObject> list = Collections.nCopies(70, someObject);
Run Code Online (Sandbox Code Playgroud)

但是,当我打开这个方法时:

public static <T> List<T> nCopies(int n, T o) {
        if (n < 0)
            throw new IllegalArgumentException("List length = " + n);
        return new CopiesList<>(n, o);
    }
Run Code Online (Sandbox Code Playgroud)

正如我们所见 - 它返回CopiesList对象,而不是ArrayList.另外,作为其他列表,它正在扩展AbstractList:

private static class CopiesList<E>
        extends …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist java-stream

1
推荐指数
1
解决办法
1838
查看次数