对于一个项目,我想建立一个使用Spring Boot的小型微服务场景,其中一个API网关向客户端公开REST和GraphQL,一个Eureka服务注册表和三个服务.我希望API网关背后的所有服务都可以通过性能原因来讨论gRPC,但同时仍然会暴露一个额外的REST API.有没有一种干净的方法在同一业务逻辑之上实现这两种类型的接口?网关如何将客户端的HTTP请求代理到gRPC?
我想建立从 Java 客户端到 RabbitMQ AMQP 消息代理的 AMQP 连接。它实际上工作得很好,如https://www.rabbitmq.com/api-guide.html中所述。
我正在做:
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(userName);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(hostName);
factory.setPort(portNumber);
Connection conn = factory.newConnection();
Run Code Online (Sandbox Code Playgroud)
或者作为等效的,以下内容具有相同的作用:
ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost");
Connection conn = factory.newConnection();
Run Code Online (Sandbox Code Playgroud)
但是,我的 URI 字符串中的用户名和密码是通过互联网以明文方式传输的假设是否正确?如果是这种情况,我想知道如何使此身份验证更加安全。
我刚刚阅读了RFC-6202,但无法弄清楚使用 SSE 而不是简单地请求分块流的好处。作为一个示例用例,假设您想要实现客户端和服务器,其中客户端想要使用纯 HTTP 技术“订阅”服务器上的事件。服务器保持初始 HTTP 请求打开,然后偶尔在新事件出现时发送新块,会有什么缺点?我发现了一些反对这种流媒体的论点,其中包括以下内容:
Transer-Encoding是逐跳而不是端到端,因此中间的代理可能会尝试在将响应转发到客户端之前合并块。然而,据我了解,这两种论点也适用于上证所。我可以想象的另一个潜在的论点是,JavaScript 浏览器客户端可能没有机会实际获取相应的块,因为重新组合它们是在较低级别上处理的,对客户端来说是透明的。但我不知道事实是否如此,因为视频流必须以某种类似的方式工作,或者不是?
编辑:与此同时,我发现 SSE 基本上只是一个分块流,由更易于使用的 API 封装,对吗?
还有一件事。此页面首先告诉 SSE 不支持流式二进制数据(出于什么技术原因?),然后(在底部),他们说这是可能的,但效率低下。有人可以澄清一下吗?
这不是一个编程问题,但我认为这仍然是找到我的问题答案的最佳社区。我想知道是否有一个特定的技术术语来描述诸如sandstorm.io之类的服务。我正在寻找一种比“个人云”或“ SaaS”更具体的流行语,准确地描述了这种模式,即在应用商店中提供打包的Web应用程序,以便一键式部署到私有云环境。之所以寻找这样的搜索词,是因为我需要进行一些科学研究,以评估这种概念在企业应用中的应用。因此,如果您偶然知道该主题的一些相关工作,请告诉我。还有其他与沙尘暴概念相同的替代方案吗?
由于我不是专家,所以我有一个关于 HTTP/2 的一般性问题。
众所周知,HTTP2 压缩标头以减小消息大小。这仅适用于响应还是也适用于请求?如果做一个小实验并运行两个小型 HTTP 服务器,一个使用版本 1.1,另一个使用版本 2,让它们发送完全相同的内容,然后在 Firefox 中请求两个页面,我可以看到响应标头大小显着小于HTTP/2 版本。但是,请求头大小几乎相同。根据我的理解,这是有道理的,因为浏览器事先不知道服务器是否支持 HTTP/2,因此无法预先压缩标头。我对吗?如果是这样,有没有办法“强制”客户端使用 HTTP/2(对于客户端,我不是指 brwoser,而是程序化的)并压缩请求标头?
还有一个问题:如果我想在负载下对 HTTP/1.1 与 HTTP/2 的性能进行基准测试,那么有用的测试设置应该是什么样的,哪些参数会变化,哪些指标可以衡量(RTT、TTFB、. ..?)