Spring Boot应用程序的“本地服务”

我有机会尝试使用Knative的 Serving功能来部署Spring Boot应用程序,而这篇文章只是记录了示例和我采用的方法。

我对Knative的内部知识还不够了解,无法就此方法是否比基于部署 + 服务 +基于入口的方法更好。

一项很棒的功能是Knative Serving中的自动缩放功能,该功能基于负载,增加/减少了Pod的数量,这是处理请求的“部署”的一部分。

样品细节

我的整个样本都可以在这里找到 ,并且大部分是基于Knative Serving文档中可用的Java样本开发的。 我将Knative与minikube环境一起使用来尝试示例。

部署到Kubernetes / Knative

假设已经设置了具有Istio和Knative的Kubernetes环境,则运行该应用程序的方法是通过以下方式部署Kubernetes清单:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:name: sample-boot-knative-servicenamespace: default
spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-boot-knative-app:0.0.1-SNAPSHOT

图像“ bijukunjummen / sample-boot-knative-app:0.0.1-SNAPSHOT”可通过Dockerhub公开获得,因此该示例应立即可用。

应用此清单:

kubectl apply -f service.yml

应该向Kubernetes注册一个Knative服务服务资源,该Knative服务服务资源管理其他Knative资源(配置,修订,路由)的生命周期,可以使用以下命令查看其详细信息,如果有任何错误,则应显示详细信息在输出中:

kubectl get services.serving.knative.dev sample-boot-knative-service -o yaml

测试中

假设Knative服务服务的部署是干净的,首先看到的是该应用程序没有显示Pod!

服务式

如果我现在要向应用程序发出请求,这是通过Knative管理的路由层完成的,那么可以使用以下bash脚本在minikube环境中检索该请求:

export GATEWAY_URL=$(echo $(minikube ip):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}'))
export APP_DOMAIN=$(kubectl get services.serving.knative.dev sample-boot-knative-service  -o="jsonpath={.status.domain}")

并使用CUrl调用应用的端点:

curl -X "POST" "http://${GATEWAY_URL}/messages" \-H "Accept: application/json" \-H "Content-Type: application/json" \-H "Host: ${APP_DOMAIN}" \-d $'{"id": "1","payload": "one","delay": "300"
}'

或httpie

http http://${GATEWAY_URL}/messages Host:"${APP_DOMAIN}" id=1 payload=test delay=100

应该神奇地使用自动缩放器组件开始旋转Pod来处理请求:
服务式
第一次请求花费了将近17秒才能完成,这是旋转一个Pod所花费的时间,但是随后的请求很快。

现在,为了显示自动缩放器的真正功能,我运行了一个带有50个用户负载的小型负载测试,并且根据需要按比例放大和缩小了Pod。
服务式

结论

我可以看到Knative的承诺,即在Kubernetes环境中使用相当简单的清单定义了自动管理资源后,让开发人员专注于代码和逻辑。

翻译自: https://www.javacodegeeks.com/2018/07/knative-serving-spring-boot-applications.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂:常见低通、高通、带通三种滤波器的工作原理

滤波器 滤波器是对波进行过滤的器件,是一种让某一频带内信号通过,同时又阻止这一频带外信号通过的电路。 滤波器主要有低通滤波器、高通滤波器和带通滤波器三种,按照电路工作原理又可分为无源和有源滤波器两大类。今天,小编主要…

红米ac2100breed看模块_骁龙865加持,红米K30S至尊纪念版11日再开售

红米K30S至尊纪念版在11月1日首销,仅用了1分钟便售出10万台,热度颇高。11月11日0点,红米K30S至尊纪念版将再度开售,售价2299元起。以2299元起步的价格,红米K30S至尊纪念版配备了高通骁龙865处理器,8GB LPDD…

常用求和公式和级数

1. 多项式级数 2. 指数级数 3. Harmonic 级数 4. 其他 常见的级数查询表 https://blog.csdn.net/algzjh/article/details/82533996 https://www.zhihu.com/topic/19998598/hot

个盘子的汉诺塔需要移动几步_看漫画学C++039:递归解汉诺塔

点击蓝字 关注我们本话内容请输入相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到…

八位图 16位图_了解位图

八位图 16位图几周前,我和Alistair正在研究用于对节点附加到Neo4j数据库中的标签进行建模的代码。 这种工作方式是将32个节点ID的块表示为每个标签的32位位图 ,其中1表示1表示节点具有标签,0表示没有标签。 例如,假设我们有节点…

调制深度,峰均值功率比,脉冲整形等因素对于调制损耗的影响...

我们知道光发射机中一个非常重要的参数是发射功率。如果光发射机处于无源光网络(PON),没有后续放大器的情况,发射功率很大程度上决定了发射机可以传输的距离 (功率预算,power budget)&#xff1…

移动流量转赠给好友_私域流量的五大认知误区

各大品牌主对于私域流量存在的认知误区 ,你是否也这样认为?目前看起来,私域流量好像只要前期投入,后期就可以为自身带来源源不断的流量,但是私域流量真的像看起来那么美吗?其实不是的,我们对于私…

MATLAB 显示输出数据的三种方式

1. 改变数据格式 当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如: >> x100.11x 100.1100>…

Matlab 语句

1. 显示输出数据的三种方式 1.1 改变数据格式 当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如: &g…

Probability, Matringale,Markov Chain, MCMC

一、基本知识 1. 条件概率 条件概率是指在某件事情已经发生的前提下,另一件事情在此基础上发生的概率,举例来说P(A丨B)表示B发生的基础上,A也发生的概率,基本公式为: 2. 条件期望 在上述概率下的期望我们称之为条…

html 按钮 按下 状态_科普|你身边的手动火灾报警按钮,您了解吗?

手动火灾报警按钮手动火灾报警按钮,是火灾报警系统中的一个设备类型,当建筑发生火灾时在火灾探测器没有探测到火灾的时候人员手动按下手动火灾报警按钮,报告火灾信号,向建筑所属消防控制室报火警。正常情况下当手动火灾报警按钮报…

马尔可夫蒙特卡罗 MCMC 原理及经典实现

我们在做机器学习、深度学习或自然语言处理等项目时,经常采用什么方法采样呢?大家马上会想到吉布斯 Gibbs 采样,今天我们来分享一种比较实用的采样方法:马尔可夫蒙特卡罗方法,吉布斯采样是其中的一种。 Markov chain …

les物流执行系统_【精益运营】立足智慧物流 推进仓储智能化稳步升级

近年来,“智能制造”成为制造行业的热门词汇,也成为引领物流行业发展的风向标。今年在两会中,“智能”一词首次写入报告,为传统行业改造升级、实现协同共享带来了新的发展机遇。早在2017年12月,根据公司对VMI业务整合工…

增益比值 dB 以及 dBw-dBmv 等之详解

dB 分贝(工程应用),dB(Decibel,分贝)是一个纯计数单位,本意是表示两个量的比值大小,没有单位。在工程应用中经常看到貌似不同的定义方式(仅仅是看上去不同)。…

带有Spring Boot 2支持的Apache Camel 2.22发布

今天,我们发布了最新的Apache Camel 2.22.0版本 ,这是第一个正式完全支持Spring Boot 2的版本。这是一项重大的工作,因为针对像Apache Camel这样的大型框架将Spring Boot v1升级到v2付出了很多努力–感谢骆驼队和他们的贡献。 对Spring Boot …

java 分布式事务_Java核心知识 Spring原理十五 JPA 原理

1. 事务事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。2. 本地事务紧密依赖于底层资源管理器(例如数据库连接 ),事务处理局限在当前事务资源内…

Latex中定理、引理、证明、假设、空白行的编写

1. 引理 \newtheorem{lemma}{Lemma}[section] \begin{lemma} \label{lemma1}\end{lemma}编译效果: 2. 定理 \newtheorem{thm}{\bf Theorem}[section] \begin{thm}\label{thm1} Suppose system (\ref{l1}) satisfies Assumption (\ref{mim1}), the closed-loop s…

Latex设置字体大小

全局模式 \documentclass[12pt]{article} 在文档的开头,有设置整个文章的字体大小,如:12pt。 局部模式 设置字体大小的命令从小到大为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge \Huge…

c 结构体在声明时赋值_C/C++编程笔记:C++入门知识,C++多态性和虚函数解析

本篇要学习的内容和知识结构概览多态性编译时的多态性称为静态联编. 当调用重载函数时, 在编译期就确定下来调用哪个函数.运行时的多态性称为动态联编. 在运行时才能确定调用哪个函数, 由虚函数来支持.静态联编中的赋值兼容性及名字支配规律派生一个类的原因并非总是为了添加新…

concurrent vs. simultaneous

Both the words mean “occurring at the same time”, but “concurrent” represents the events that occur over a period of time whereas “simultaneous” represents the events that occur at a point in time. https://www.perfmatrix.com/concurrent-users-vs-simul…