Vert.x 3学习笔记---13

时间:2021-04-14 18:01:55

这一部分可能会有多个主题。

Record Parser

协议解析

buffer1:HELLO\nHOW ARE Y
buffer2:OU?\nI AM
buffer3: DOING OK
buffer4:\n

像上例,是一个简单的ASCII文件的协议,以’\n’分割。解析后的结果为:

buffer1:HELLO
buffer2:HOW ARE YOU?
buffer3:I AM DOING OK

具体的代码如下:

final RecordParser parser = RecordParser.newDelimited("\n", h -> {
System.out.println(h.toString());
});

parser.handle(Buffer.buffer("HELLO\nHOW ARE Y"));
parser.handle(Buffer.buffer("OU?\nI AM"));
parser.handle(Buffer.buffer("DOING OK"));
parser.handle(Buffer.buffer("\n"));

你也能产生固定大小的块

RecordParser.newFixed(4, h -> {
System.out.println(h.toString());
});

Thread safety

大部分的vertx对象都是线程安全的。

command line

使用命令行,可以参考官方文档

Logging

java 内置的api:

java.util.logging.config.file指定配置文件,
默认为vertx-default-jul-logging.properties

第三方api

vertx.logger-delegate-factory-class-name :
Log4J —- io.vertx.core.logging.Log4jLogDelegateFactory
SLF4J —- io.vertx.core.logging.SLF4JLogDelegateFactory

High Availability and Fail-Over

高可用和故障迁移

Security notes

安全笔记

vertx只是一个工具集。没有强制说不能做什么操作。因此,这给开发这带来了很大的便利,但是也在安全隐私上带来了一些困扰。所以我们开发的时候需要注意这些。

Web applications

如果使用vertx开发一个web应用,我们强烈的建议你使用vertx-web包,而不是直接使用vertx-core来开发。
vertx-web规格化了路径,以防止恶意客户端在请求URL访问网站根目录之外的资源。
同样的文件上传功能vert.x-web提供上传到磁盘上的一个已知的地方,并且不依赖于客户端所提供的文件名,在上传的文件中,可以制作上传到不同的磁盘上的文件。
vertx-core没有实现这些,这都依赖于开发者。

Clustered event bus traffic

集群事件总线通信

When clustering the event bus between different Vert.x nodes on a network, the traffic is sent un-encrypted across the wire, so do not use this if you have confidential data to send and your Vert.x nodes are not on a trusted network.
当使用集群部署时,不同的vertx节点之间的event bus在同一个网络上,通信不是加密的传输。因此,如果你有机密的数据需要传输或者这个网络不受信用,那么就不能这么做。

Standard security best practices

标准安全最佳实践

任何服务可以有潜在的漏洞,无论是用vert-x或任何其他工具,始终遵循安全最佳实践,特别是如果你的服务是面向公众的。
例如,你应该总是在DMZ和一个以有限的权利限制的用户帐户运行,该服务受到损害时,可以降低损害的程度。