服务性服务–服务到服务的通话

在上一篇文章中,我介绍了如何使用Knative的 Serving功能来运行示例Java应用程序。 这篇文章将介绍部署两个应用程序的步骤,其中一个应用程序调用另一个。

基尼特语

样品细节

整个示例可在我的github存储库中找到– https://github.com/bijukunjummen/sleuth-webflux-sample。

这些应用程序是基于Spring Boot的。 后端应用程序在用如下所示的有效负载调用时会公开一个端点“ / messages”:

{"delay": "0","id": "123","payload": "test","throw_exception": "true"
}

将在指定的延迟后做出响应。 如果有效负载的“ throw_exception”标志设置为true,则它将在指定的延迟后返回5XX。

客户端应用程序公开一个“ / passthrough / messages”终结点,该终结点接收完全相同的有效负载,然后将其转发给后端应用程序。 后端应用程序的URL作为“ LOAD_TARGET_URL”环境属性传递到客户端应用程序。

基尼特语

部署为基础服务

该项目的子文件夹knative包含用于为2个应用程序部署Knative服务的清单。 后端应用程序的knative服务清单如下所示:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:name: sample-backend-appnamespace: default
spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-backend-app:0.0.1-SNAPSHOTenv:- name: VERSIONvalue: "0.0.2-SNAPSHOT"- name: SERVER_PORTvalue: "8080"

客户端应用必须指向后端服务,并在规范中指定:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:name: sample-client-appnamespace: default
spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-client-app:0.0.2-SNAPSHOTenv:- name: VERSIONvalue: "0.0.1-SNAPSHOT"- name: LOAD_TARGET_URLvalue: http://sample-backend-app.default.svc.cluster.local- name: SERVER_PORTvalue: "8080"

域“ sample-backend-app.default.svc.cluster.local”指向由Knative服务服务资源创建的后端服务的dns名称

测试中

对于我来说,简单地用我的测试方式来制作一个小视频就更容易了:


就像我以前的文章中一样 ,对应用程序的请求是通过knative入口网关进行的,可以通过以下方式(对于minikube环境)获取url:

export GATEWAY_URL=$(echo $(minikube ip):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}'))

并以以下方式发出了示例请求,请注意,网关中的路由是通过主机标头(在本例中为“ sample-client-app.default.example.com”)进行的:

export CLIENT_DOMAIN=$(kubectl get services.serving.knative.dev sample-client-app  -o="jsonpath={.status.domain}")http http://${GATEWAY_URL}/passthrough/messages Host:"${CLIENT_DOMAIN}" id=1 payload=test delay=100 throw_exception=false

翻译自: https://www.javacodegeeks.com/2018/09/knative-serving-service-service-call.html

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

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

相关文章

linux cookie 地址,SYN Cookie原理及其在Linux内核中的实现

在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。SYN Cookie原理由D. J. Bernstain和 Eric Schenk发明…

maya中英文对比_maya中英文对照表

1File文件New Scene建立新场景Open Scene打开场景Save Scene存盘场景Save Scene As改名存盘Import导入Export All导出所有Export Selection导出选定物体View Image查看图片View Sequence浏览顺序Create Reference引入场景文件Reference Editor引入场景编辑器Project项目New建立…

linux vmcore 分析,crash分析vmcore

然后进入 /var/crash/ 找到相应的vmcore执行crash 127.0.0.1-2014-01-21-23\:36\:14/vmcore /usr/lib/debug/lib/modules/2.6.32-902.279.9.1.***.el6.x86_64/vmlinux输出如下:KERNEL: /usr/lib/debug/lib/modules/2.6.32-902.279.9.1.***.el6.x86_64/vmlinuxDUM…

用置换破坏您的JUnit5测试

编写JUnit测试可能是一个乏味而乏味的过程。 了解如何使用排列结合TestFactory方法和DynamicTest对象以最少的编码工作来改进测试类。 在本文中,我将使用Java流ORM Speedment,因为它包含一个现成的Permutation类,从而帮助我节省了开发时间。…

es6 遍历数组对象获取所有的id_ES6对象遍历Object.keys()方法

【Object.keys()】ES5 引入了Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名var obj { foo: bar, baz: 42 };console.log(Object.keys(obj));// ["foo", "baz"]ES2017 引入了跟…

servlet异步_如何使用异步Servlet来提高性能

servlet异步这篇文章将描述一种性能优化技术,该技术适用于与现代Web应用程序相关的常见问题。 如今的应用程序不再只是被动地等待浏览器发起请求,而是希望自己开始通信。 一个典型的示例可能涉及聊天应用程序,拍卖行等–共同点是这样一个事实…

mysql锁机制 php_MySQL锁机制和PHP锁机制

模拟准备--如何模拟高并发访问一个脚本:apache安装文件的bin/ab.exe可以模拟并发量 -c 模拟多少并发量 -n 一共请求多少次 http://请求的脚本例如:cmd: apache安装路径/bin/ab.exe -c 10 -n 10 http://web.test.com/test.php【切入正题】MYSQ…

怎么安装红旗Linux5,如何用硬盘安装红旗LINUX5_0.doc

如何用硬盘安装红旗LINUX5_0如何用硬盘安装红旗LINUX5_0本文由xinbing9贡献红旗linux5.0安装教程相信大家都和我一样,在一开始知道linux的系统时充满了神秘感.习惯了windows的我们对另一种操作系统非常好奇.正是这种好奇心,我决定装linux.看看到底有什么东东.第一次装时,大略的…

企业应用程序开发框架的分类

如果您使用的是“最佳Java框架”,那么您很可能会迷失本文 ,它对Java Enterprise世界中的情况进行了很好的概述。 但是,从我的角度来看,它缺少一件非常重要的事情–对上述框架进行分类。 让我们看看这个生态系统的另一个角度&…

投资最重要的事读后感_《投资最重要的事》读书笔记分享

1、学习第二层次思维。在投资的零和世界中参与竞争之前,你必须先问问自己是否具有处于上半部分的充分理由。要想取得超过一般投资者的成绩,你必须有比群体共识更加深入的思考。你具备这样的能力吗?是什么让你认为自己具有这样的能力&#xff…

Linux下社交平台,Linux 启动

> 1. 如启动失败请 查看[坑点概述](https://doc.fastadmin.net/wanlshop/299.html)## Linux运行IM即时通讯#### 1\. 远程连接Linux可以通过远程连接软件、VNC远程连接、Workbench或宝塔面板 > 软件商店 > 宝塔SSH终端进入SSH 终端cd命令 进入cd www/wwwroot/你的网站/…

vscode 取消拉去变基_GIT快速回忆

关于GIT和github:请搜索git下载安装,安装了git才能去github或码云(国内)观察自己上传的代码,github有个桌面版只是基于git的的图形工具,还是需要下载git。概念:1.提交、版本、commit,ID,差不多都…

java对象序列化去掉字段_使用序列化查找对象中的脏字段

java对象序列化去掉字段假设您正在开发一个将对象自动保存到数据库中的框架。 您需要检测两次保存之间所做的更改,以便仅保存已修改的字段。 如何检测脏场。 最简单的方法是遍历原始数据和当前数据,并分别比较每个字段。 代码如下: public s…

c语言中怎么定义的字符串,C语言中定义字符串的几种方式

1,什么是字符串?所谓字符串本质上就是以\0作为结尾的特殊字符数组;2,定义字符串的过程中有哪些注意点由于字符串本质上其实就是以\0作为结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个…

ios 不被遮挡 阴影_解决ios10导航栏底部阴影线条隐藏失效问题

2016.11.13 21:47* 字数 887 阅读 791评论 0喜欢 16一、置空阴影图片基于iOS9,在iOS10上不好使.[self.navigationController.navigationBar setShadowImage:[UIImage new]];二、剪裁navigationBar首先看看UIView的clipsToubounds属性在SDK中的描述:property(nonatom…

Java的未来项目:巴拿马,织布机,琥珀和瓦尔哈拉

新闻稿“ Oracle Code One Java主题演讲概述了Java的未来 ”在Oracle Code“突出未来项目” Valvala 项目,巴拿马 项目,Amber 项目和Loom 项目中描述了Java主旨。 这篇文章为不熟悉上述项目的人提供了每个项目的简要摘要以及与每个项目相关的一些最新工作…

c语言选择题答案在哪查,C语言选择题及答案

C语言选择题及答案成绩的取得离不开我们平时的努力,以下是百分网小编为大家整理的C语言选择题及答案,希望对大家的学习起到帮助!选择题1.在深度为5的满二叉树叶中,叶子结点的个数为( )。A.32B.31C.16D.152.软件生命周期中,花费最多…

vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

在VS2015中创建Qt项目【VSQt项目开发系列】(二)发布时间:2018-04-20 22:44,浏览次数:1269, 标签:VSQt在上一篇【VSQt项目开发】(一)在VS2015中安装Qt环境中,我们完成了开发环境的安装,现在我们正式创建我们的项目。项目…

c语言ok未定义标识符,C语言中宏的相关知识 - osc_y7ckpzr9的个人空间 - OSCHINA - 中文开源技术交流社区...

2019/04/27 16:02 1.宏的定义:宏定义就是预处理命令的一种,它允许用一个标识符来表示一个字符串。格式如下:#define name(宏名) stuff(字符串)本质就是使用宏名去替代字符串的内容,注意是原封不动的替换,不要自己潜意识…

pythoni屏幕连点_【Flutter组件】仿抖音双击点赞弹出爱心效果(可连点)

效果简介仿抖音点赞手势,单击暂停,双击点赞,可连续点击添加多个爱心,特点如下全部效果为代码绘制(爱心图标来自Material Icon的图标)套上在目标Widget外即可使用提供单击与点赞的回调建议复制代码使用,动画可按需修改没…