我正在尝试使用Lumen / Laravel Passport创建微服务架构。
我有多个 dockerized 服务,它们都在不同的 VM 中作为单独的 Lumen 应用程序容器运行:
所有这些服务都有自己独立的 Redis/MySQL 数据库等
例如,在单体应用中,数据库中有一个 User 表,表之间存在关系等等。我已经使用 JOIN 和其他查询根据当前用户 ID 的逻辑选择来检索数据。
但是现在我在移动/网络应用程序中有一个常规页面,我必须从不同服务中获取当前可见页面的多个信息。
为了接收这些数据,我在不同的服务中发送了多个请求
题:
使用微服务架构存储用户信息的最佳/正确做法是什么,以及以最小的内存/时间损失从其他微服务中检索该用户的相关数据的正确方法是什么?以及在哪里存储用户信息(如 id、电话等)以避免数据重复?
抱歉可能重复。试图理解..
我在项目中使用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) 我在我的项目中使用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) 我是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 ×3
architecture ×1
arraylist ×1
collections ×1
combobox ×1
git ×1
java-stream ×1
javafx ×1
jgit ×1