暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

不想重新造轮子,也许你需要这只燕子-Helidon

1506

重新造轮子(Reinventing The Wheel)是重新创造一个已有的或是早已被优化过的基本方法。在软件开发领域中,轮子通常指通用的库、包、中间件或框架,这些和实际业务没有直接关系的代码。随着微服务概念的普及,我们越来越多的在使用微服务开发新应用或者将传统应用微服务化,碰到的第一个问题往往是微服务框架的选型问题。也许有的企业开发人员为满足自身的开发需求,重新造一个微服务框架的轮子,但更多的企业以及开发人员则会为了更多的关注业务本身,而选择一个现有的微服务框架。Oracle不久前推出的微服务框架Helidon,以其开源、简洁、易用的特性,成为企业及开发人员的选择之一。

Helidon是希腊语中的一种燕子,根据维基百科的说法,它具有“细长,流线型的身体和长长的翅膀,可以实现极佳的机动性和非常高效的飞行”,非常适合穿越云层。我们可以利用这只燕子Helidon,来很好的开发我们将要部署在云中的应用。

Helidon 介绍

现有的Java微服务框架,按照应用的规模从小到大分为Microframeworks/ MicroProfileBased以及Full-Stack三大类,这三大类微服务框架各有特点及自己的适用范围

Microframeworks:

简单、轻量级的Java 微服务框架, 例如Spark,Javalin,Micronaut等。

MicroProfile Based:

对Java EE开发人员友好,其中一些构建在功能齐全的Java EE应用程序服务器之上。 例如Thorntail(Wildfly Swarm),OpenLiberty,Payara。

Full-Stack:

功能完备的Java 微服务框架,整个框架有些重,例如Spring Boot。

 

Helidon有两种类型,包括两个类别 – Microframeworks(SE)和MicroProfile(MP), 由开发人员选择使用哪种类别的Helidon类型 。

 

Helidon SE 与 Helidon MP 介绍:

Helidon SE是用于编写微服务的Java库的集合,由三部分组成:

WebServer

一个基于Netty的响应式的http的服务器,来处理api调用请求。

Config

灵活的配置框架,支持多种源和格式。

Security

用于处理身份验证,授权和上下文传播的工具链。

Helidon MP 由Java EE Jakarta EE组件库组成,这些这些组件库包含JAX-RS Jersey,JSON-P和CDI,这些组件是MicroProfile实现所需要的标准组件。Helidon MP基于Helidon SE组件之上提供服务。Oracle Cloud Integration,位于Helidon SE 和Helidon MP之下,为其上的应用程序提供与Oracle Cloud集成的服务。

Docker与Kubernetes支持:

Helidon提供自动生成的Docker与Kubernetes配置文件,将应用程序部署到Docker容器运行环境或者Kubernetes集群当中。同时通过配置到方式,支持将zipkin/prometheus 等容器运行监控插件加入到Helidon应用中。

Helidon开发测试部署流程

1.根据应用情况,选择Helidon 类型:

Helidon SE:

WebServer.create(

  Routing.builder()

    .get("/greet", (req, res)

       -> res.send("HelloWorld!"))

    .build())

  .start();

Helidon MP

public classGreetService {

  @GET

  @Path("/greet")

  public String getMsg() {

    return "Hello World!";

  }

}

2.编译/运行/测试Helidon 应用:

编译:$ mvnpackage

运行:$ java -jartarget/myapp.jar

测试;

$ curl -X GEThttp://localhost:8080/greet

Hello World!

3.部署应用到Docker容器或Kubernetes集群环境。

Helidon开发测试部署应用示例展示

此示例将同时如何通过Helidon开发简单的 Helidon SE 和Helidon MP应用程序,并且将应用发布部署到Docker及Kubernetes环境中运行。

1.开发环境准备:

1.  JavaSE 8/OpenJdk 8

2.  Maven3

3.  Docker

4.  Kubernetes

 

2.通过maven 生成框架程序:

通过maven模版原型生成Helidon应用程序框架。

2.1通过maven生成Helidon SE框架程序:

mvnarchetype:generate -DinteractiveMode=false \

    -DarchetypeGroupId=io.helidon.archetypes \

    -DarchetypeArtifactId=helidon-quickstart-se\

    -DarchetypeVersion=0.10.5 \

    -DgroupId=io.helidon.examples \

    -DartifactId=quickstart-se \

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

2.2通过maven生成Helidon MP框架程序:

mvn archetype:generate-DinteractiveMode=false \

    -DarchetypeGroupId=io.helidon.archetypes \

    -DarchetypeArtifactId=helidon-quickstart-mp\

    -DarchetypeVersion=0.10.5 \

    -DgroupId=io.helidon.examples \

    -DartifactId=quickstart-mp \

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

3.Helidon应用打包:

进入Helidon SE应用目录,运行:

mvn package

进入Helidon MP应用目录,运行:

mvn package

本地测试:

java -jartarget/quickstart-se.jar

java -jartarget/quickstart-mp.jar

测试结果:

4.部署到Docker容器:

构建docker镜像文件:

docker build -tquickstart-se target

docker run --rm -p8080:8080 quickstart-se:latest

docker build -t quickstart-mptarget

docker run --rm -p8080:8080 quickstart-mp:latest

5.部署到Kubernetes集群:

部署 Helidon SE 程序到 Kubernetes集群:

kubectl create -ftarget/app.yaml

部署 Helidon MP 程序到 Kubernetes集群:

在kubernetesdashboard中看到应Helidon应用quickstart-se和quickstart-mp部署成功。

访问测试部署到kubernetes集群中的应用

kubectl get servicequickstart-se

kubectl get servicequickstart-mp

通过以上示例我们可以看到,适用Helidon框架开发部署一个Java的微服务程序一个简单的过程,我们只需要更多的关注应用开发本身,为客户提供更多的业务价值。

Helidon是Oracle开源的Java 轻量级微服务框架,所有代码均已公开托管在:https://github.com/oracle/helidon。

更多信息请访问:https://helidon.io/



作者简介

向志华,甲骨文PaaS专家团队高级咨询顾问,专注 Application PaaS 产品及服务,同时关注Docker容器产品及Kubernetes容器调度产品方向。13年IT行业从业经验,擅长J2EE产品架构及开发,参与过Openstack相关产品研发工作。您可以通过george.xiang@oracle.com,与他联系。


扫描二维码或点击阅读原文

快速预约精选云解决方案演示


文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论