微服务架构能用oracle吗,Oracle推出轻量级Java微服务框架Helidon

近日,Oracle 推出了一个新的开源框架 Helidon,该项目是一个用于创建基于微服务的应用程序的 Java 库集合。和 Payara Micro、Thorntail(之前的 WildFly Swarm)、OpenLiberty、TomEE 等项目一样,该项目也加入了 MicroProfile 家族。

Helidon 最初被命名为 J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE 和 Helidon MP。Helidon SE 提供了创建微服务的三个核心 API:Web 服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。Helidon MP 支持用于构建基于微服务的应用程序的 MicroProfile 1.1 规范。

Web 服务器

受 NodeJS 和其他 Java 框架的启发,Helidon 的 Web 服务器是一个异步、反应性 API,运行在 Netty 之上。WebServer 接口包括对配置、路由、错误处理以及构建度量和健康端点的支持。

下面的示例代码演示了如何启动一个简单的 Helidon Web 服务器,在一个随机可用的端口上显示“It works!”:// 在一个随机可用的端口上启动服务器

public void startWebServerUsingRandomPort() throws Exception {

WebServer webServer = WebServer

.create(Routing.builder()

.any((req,res) -> res.send("It works!" + "\n"))

.build())

.start()

.toCompletableFuture()

.get(10,TimeUnit.SECONDS);

System.out.println("Server started at: http://localhost:" + webServer.port() + "\n");

webServer.shutdown().toCompletableFuture();

}

配   置

配置组件 Config 加载和处理键 / 值格式的配置属性。在默认情况下,配置属性将从定义好的 application.properties 或 application.yaml 文件中读取,它们位于 /src/main/resources 目录下。

下面的示例代码基于前面的例子构建,它演示了如何使用 Config,通过读取 applications.yaml 文件获得指定的端口启动 Web 服务器。// application.yaml

server:

port: 8080

host: 0.0.0.0

// 在 application.yaml 预定义的端口上启动服务器

public void startWebServerUsingDefinedPort() throws Exception {

Config config = Config.create();

ServerConfiguration serverConfig = ServerConfiguration.fromConfig(config.get("server"));

WebServer webServer = WebServer

.create(serverConfig,Routing.builder()

.any((req,res) -> res.send("It works!" + "\n"))

.build())

.start()

.toCompletableFuture()

.get(10,TimeUnit.SECONDS);

System.out.println("Server started at: http://localhost:" + webServer.port() + "\n");

webServer.shutdown().toCompletableFuture();

}

安   全

类 Security 为身份验证、授权和审计提供支持。已经有许多用于 Helidon 应用程序的安全提供程序实现。有三种方法可以将安全性内置到 Helidon 应用程序中:从构建器、通过配置或者是前两者的结合。

下面的示例代码演示了如何构建 Security 实例、使用 Config 获取用户身份验证(使用加密密码)并显示服务器时间。// application.yaml

http-basic-auth:

users:

login: "mpredli"

password: "${CLEAR=somePassword}"

roles: ["user","admin"]

Config config = Config.create();

Security security = Security.builder()

.config(config)

.addProvider(...)

.build();

String user = config.get("http-basic-auth.users.login").asString();

String password = config.get("http-basic-auth.users.password").asString();

System.out.println("\n");

System.out.println("INFO: user = " + user);

System.out.println("INFO: password = " + password);

SecurityTime time = SecurityTime.builder().build();

time = security.getServerTime();

System.out.println("INFO: server time = " + time.toString());

System.out.println("\n");

GitHub 提供了更详尽的安全示例:

https://github.com/oracle/helidon/tree/master/security/examples

Helidon 的架构

下面的架构图显示了 Helidon SE 和 Helidon MP 的关系。

a2efc9d477ef3bb11d45739045edcb5f.png

下图说明了 Helidon SE 和 Helidon MP 所属的微服务框架类别。

d43089f2401d3e9b56f45ad9a9985795.png

入门指南

Helidon 提供了快速入门示例来演示 Helidon SE 和 Helidon MP 之间的区别。

下面的 Maven 和 Java 命令将生成并打包 Helidon SE 示例,使用 Helidon 的 Web 服务器创建一个 REST 服务。$ mvn archetype:generate -DinteractiveMode=false \

-DarchetypeGroupId=io.helidon.archetypes \

-DarchetypeArtifactId=helidon-quickstart-se \

-DarchetypeVersion=0.10.1 \

-DgroupId=io.helidon.examples \

-DartifactId=quickstart-se \

-Dpackage=io.helidon.examples.quickstart.se

$ cd quickstart-se

$ mvn package

$ java -jar target/quickstart-se.jar

下面的 Maven 和 Java 命令将生成并打包 Helidon MP 示例,使用 MicroProfile 的 JAX-RS API 创建一个 REST 服务。$ mvn archetype:generate -DinteractiveMode=false \

-DarchetypeGroupId=io.helidon.archetypes \

-DarchetypeArtifactId=helidon-quickstart-mp \

-DarchetypeVersion=0.10.1 \

-DgroupId=io.helidon.examples \

-DartifactId=quickstart-mp \

-Dpackage=io.helidon.examples.quickstart.mp

$ cd quickstart-mp

$ mvn package

$ java -jar target/quickstart-mp.jar

一旦服务器开始运行,就可以执行下面的命令:

e8d2711353a4d513d692c2bee4c7f94c.png

在 GitHub 上可以找到整个 Helidon 项目:

https://github.com/oracle/helidon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值