小编Apu*_*ngh的帖子

微服务:REST与消息传递

我听说亚马逊使用HTTP作为基于微服务的架构.另一种方法是使用RabbitMQ或Solace系统之类的消息传递系统.我个人有基于Solace的微服务架构的经验,但从未使用过REST.
知道像亚马逊,Netflix,英国政府等各种大联盟实施使用的是什么?
其他方面是,在微服务中,需要以下事项(除了其他):
*模式匹配
*异步消息传递..接收系统可能已关闭
*发布订阅
*缓存加载事件..即启动时,服务可能需要加载所有来自其他几项服务的数据,并应在数据完全加载时得到通知,以便它"知道"它现在已准备好为请求提供服务
这些方面通过消息而不是REST自然完成.为什么要有人使用REST(公共API除外).谢谢.

architecture rest messaging microservices

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

Java volatile是否读取刷新写入,并执行易失性写入更新读取

我理解read-acquire(在它之后没有重新排序后续的读/写操作)和write-release(不重新排序它之前的读/写操作).我的q是: -

  1. 在读取获取的情况下,它之前的写入是否被刷新?
  2. 在写入释放的情况下,先前的读取是否会更新?

读取和读取相同,与易失性读取相同,写入发布与Java中的易失性写入相同吗?

为什么这很重要的是,让我们来看看写释放的情况.

y = x; // a read.. let's say x is 1 at this point
System.out.println(y);// 1 printed
//or you can also consider System.out.println(x);
write_release_barrier();
//somewhere here, some thread sets x = 2
ready = true;// this is volatile
System.out.println(y);// or maybe, println(x).. what will be printed?
Run Code Online (Sandbox Code Playgroud)

此时,是x 2还是1?在这里,考虑准备挥发.据我所知,volatile之前的所有商店都将首先显示出来......然后只有volatile才能显示出来.谢谢.

参考: - http://preshing.com/20120913/acquire-and-release-semantics/

java multithreading

16
推荐指数
3
解决办法
1336
查看次数

Docker Daemon需要什么?

这是Docker架构: 在此输入图像描述 我无法弄清楚为什么需要docker守护进程.客户很好.客户端只需使用Unix套接字访问守护进程.它可以使用TCP,但我注意到的通常是客户端和守护进程在同一台机器上!那为什么两个独立的实体?
如上所述..客户端可以使用TCP与守护进程通信.那么在团队中工作的首选方式是什么?整个团队的一个守护进程在单独的服务器上运行客户端的每个开发人员?或者每个开发人员都有自己的守护进程.

docker

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

Java与Scala功能接口的使用

在Java中我可以这样做:

Runnable task = () -> { System.out.println("Task is running"); };
Run Code Online (Sandbox Code Playgroud)

但是Scala怎么来我也做不到!

val task: Runnable = () => {println("Task is running")}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误!我使用的是Scala 2.11.8版.

type mismatch;  found   : () => Unit  required: Runnable
Run Code Online (Sandbox Code Playgroud)

java scala

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

如何为微服务构建前端

假设我有十几个微服务。我想知道前端应该去哪里。假设前端是HTML,Javascript,CSS。一种方法是使它成为由UI团队处理的单独服务。因此,它可以形成API网关,其中来自浏览器的请求首先进入。但这似乎与独立的自包含服务的想法背道而驰。
浏览器------> API网关------>微服务
链接中,他们说Java和CSS应该由微服务提供。API网关应仅提供HTML页面。这是一个很好的图表,显示了此>> 具有UI的微服务 我有两个问题:
1.如何实施?API网关将如何为微服务中的JS和CSS文件以及HTML片段提供服务。初始页面加载将如何发生以及从何处进行。
2.现在,我们将HTML混合到微服务中。但是,如果我也想提供Android和iOS应用程序怎么办?谢谢。

architecture user-interface microservices

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

如何使用 AWS Secrets Manager 中通过密钥轮换创建的新密钥

我有一个使用 MongoDB 的 Java 应用程序(或者它可以是任何类似的服务)。启动时,应用程序会创建与数据库的单例连接。为了进行连接,我从 AWS Secrets Manager 获取 MongoDB...因此应用程序在与 MongoDB 通信后可以愉快地运行。

我的问题是:AWS Secrets Manager 轮换密钥时会发生什么?

  • 我的应用程序如何“知道”秘密已被轮换。
  • 我是否必须同步 Secrets Manager 和我的应用程序之间的时间?

例如,轮换设置为 7 天。所以我在我的应用程序中编写代码,每 7 天刷新一次……这不好,因为很难精确计时。

另一种方法可能是,如果我的应用程序面临身份验证异常,只需刷新密码并建立新连接并重试应用程序逻辑。

行业标准是什么?

amazon-web-services aws-secrets-manager

5
推荐指数
2
解决办法
3652
查看次数

如何保存而不提交到 Git 中的远程存储库

我正面临这样的问题。我修改了一个文件并对其进行了测试。让我们称这种状态为“最后的良好状态”。

然后我再修改一些代码。现在一些经理人告诉我提交和部署我测试过的东西。所以我想要的是将我的文件安全地保存在远程存储库中(我不希望硬盘崩溃破坏我在上次良好状态后所做的更改),恢复到上次良好状态,然后提交上次良好状态。

在其他 VCS 中,我可以选择将文件保存到远程服务器而不提交。在 Git 中没有这样的选项。我可以存储,但它在我的本地磁盘上,并且在硬盘崩溃时不安全。谁有想法?

git

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

如何在格式化时从Java 8中获取日期的全名

使用新的Java 8 java.time API,我需要转换LocalDate并获取月和日的全名.像三月(不是三月)和周一(不是周一).3月13日星期五应格式化为3月13日星期五..不是3月13日星期五.

java localization date-formatting java-time

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

为什么 Java StampedLock 比 ReentrantReadWriteLock 更快

StampedLock 与其他锁的比较表明,随着争用的增加, StampedLock是最快的。然而,这篇文章和其他各种文章都没有列出为什么它更快。它似乎使用与其他类型的锁相同的 CAS 语义?谁能解释为什么随着争用的增加它速度最快?
例如,在下面的代码中,writeLock 不仅会阻塞其他 writeLock,还会阻塞 readLock。目前我不关心optimisticReadLocks 等。只是简单的 writeLock .. 有什么优点以及它比 ReentrantLock 更快(而且它甚至没有可重入性)。

    public static void main(String[]args)throws Exception{
    StampedLock lk = new StampedLock();

    new Thread(() -> {
        long stamp = lk.writeLock();
        try {
            out.println("locked.. sleeping");
            TimeUnit.SECONDS.sleep(5);
            lk.unlock(stamp);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }).start();

    new Thread(() -> {
        long stamp = lk.writeLock();
        try {
            out.println("locked.. sleeping");
            TimeUnit.SECONDS.sleep(5);
            lk.unlock(stamp);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }).start();

}
Run Code Online (Sandbox Code Playgroud)

java multithreading nonblocking

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

如何使Java编译器在已编译的代码中生成行号

我有一个名为A.class的hello世界程序。它是使用command编译的javac A.java。它所做的只是打印“ hello world”

接下来,我使用进行了编译javac -g A.java。我期望看到行号,但看不到。知道发生了什么吗?

我确实看到在javac编译的.class文件和javac -g编译后的某些特殊字符之间的细微差别。但是我看不到任何行号。

我对此的好奇心是因为我想找到线数可能会对性能产生什么样的影响。其次,我想知道log4j等如何维护记录的行号。谢谢。

java javac

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