基于customerId来实现

news2025/1/10 23:01:16

定义两个upstream,他们和service及route的关系如下:
在这里插入图片描述
这里我们使用

0、将下面的这个spring boot项目在192.168.19.50上进行部署

KongDemoApplication.java

package com.example.kongdemo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class KongDemoApplication {
    @Value("${server.port}")
    private String port;

    @Value("${spring.range}")
    private String range;

    public static void main(String[] args) {
        SpringApplication.run(KongDemoApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(){
        return "hello : " + port + ";range:" + range;
    }

    @GetMapping("/hello/sub")
    public String subHello(){
        return "sub-hello: " + port + ";range:" + range;
    }

}

applicaton.properties

server.port=8080
spring.range=CN

项目打成jar包后,在192.168.19.50机器按照如下命令运行6个实例:
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8080 --spring.range=CN > 8080.txt &
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8081 --spring.range=CN > 8081.txt &
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8082 --spring.range=CN > 8082.txt &
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8083 --spring.range=OT > 8083.txt &
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8084 --spring.range=OT > 8084.txt &
nohup java -jar kong-demo-0.0.1-SNAPSHOT.jar --server.port=8085 --spring.range=OT > 8085.txt &

1、创建cn_upstream及ot_upstream

1.1 创建cn_upstream

[root@min ~]# curl -X POST http://localhost:8001/upstreams \
   --data name=cn_upstream
{"hash_fallback":"none","hash_fallback_header":null,"hash_fallback_query_arg":null,"hash_fallback_uri_capture":null,"host_header":null,"tags":null,"updated_at":1685570147,"name":"cn_upstream","hash_on":"none","hash_on_header":null,"client_certificate":null,"hash_on_query_arg":null,"hash_on_uri_capture":null,"use_srv_name":false,"slots":10000,"hash_on_cookie":null,"hash_on_cookie_path":"/","healthchecks":{"active":{"healthy":{"interval":0,"successes":0,"http_statuses":[200,302]},"unhealthy":{"interval":0,"http_failures":0,"timeouts":0,"http_statuses":[429,404,500,501,502,503,504,505],"tcp_failures":0},"http_path":"/","https_sni":null,"type":"http","concurrency":10,"https_verify_certificate":true,"headers":null,"timeout":1},"threshold":0,"passive":{"healthy":{"successes":0,"http_statuses":[200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308]},"unhealthy":{"timeouts":0,"http_failures":0,"http_statuses":[429,500,503],"tcp_failures":0},"type":"http"}},"id":"5aae2f66-3fb5-461d-9189-e30fa80a2d61","algorithm":"round-robin","created_at":1685570147}

1.2 创建ot_upstream

[root@min ~]# curl -X POST http://localhost:8001/upstreams   --data name=ot_upstream
{"hash_fallback":"none","hash_fallback_header":null,"hash_fallback_query_arg":null,"hash_fallback_uri_capture":null,"host_header":null,"tags":null,"updated_at":1685570784,"name":"ot_upstream","hash_on":"none","hash_on_header":null,"client_certificate":null,"hash_on_query_arg":null,"hash_on_uri_capture":null,"use_srv_name":false,"slots":10000,"hash_on_cookie":null,"hash_on_cookie_path":"/","healthchecks":{"active":{"healthy":{"interval":0,"successes":0,"http_statuses":[200,302]},"unhealthy":{"interval":0,"http_failures":0,"timeouts":0,"http_statuses":[429,404,500,501,502,503,504,505],"tcp_failures":0},"http_path":"/","https_sni":null,"type":"http","concurrency":10,"https_verify_certificate":true,"headers":null,"timeout":1},"threshold":0,"passive":{"healthy":{"successes":0,"http_statuses":[200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308]},"unhealthy":{"timeouts":0,"http_failures":0,"http_statuses":[429,500,503],"tcp_failures":0},"type":"http"}},"id":"918d9fec-c274-48df-880d-d522aa0b7482","algorithm":"round-robin","created_at":1685570784}

2、为cn_upstream、ot_upstream添加target

2.1、为cn_upstream添加target

curl -X POST http://localhost:8001/upstreams/cn_upstream/targets \
  --data target='192.168.19.50:8080'
curl -X POST http://localhost:8001/upstreams/cn_upstream/targets \
  --data target='192.168.19.50:8081'
  curl -X POST http://localhost:8001/upstreams/cn_upstream/targets \
  --data target='192.168.19.50:8082'

在这里插入图片描述

2.2、为op_upstream添加target

curl -X POST http://localhost:8001/upstreams/ot_upstream/targets \
  --data target='192.168.19.50:8083'
curl -X POST http://localhost:8001/upstreams/ot_upstream/targets \
  --data target='192.168.19.50:8084'
  curl -X POST http://localhost:8001/upstreams/ot_upstream/targets \
  --data target='192.168.19.50:8085'

3、创建service

3.1、创建cn_service

创建cn_service,并将其host指向cn_upstream

[root@min ~]# curl -i -s -X POST http://localhost:8001/services \
  --data name=cn_service \
  --data host='cn_upstream'
HTTP/1.1 201 Created
Date: Wed, 31 May 2023 22:10:00 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: http://localhost:8002
X-Kong-Admin-Request-ID: sUQcvdGQ4m002ZnQysRNnFaEydvU0edv
vary: Origin
Access-Control-Allow-Credentials: true
Content-Length: 371
X-Kong-Admin-Latency: 9
Server: kong/3.3.0.0-enterprise-edition

{"connect_timeout":60000,"read_timeout":60000,"protocol":"http","host":"cn_upstream","updated_at":1685571000,"name":"cn_service","retries":5,"write_timeout":60000,"id":"39e44a6e-dfdf-4a32-85ba-db003f424073","tls_verify":null,"port":80,"tls_verify_depth":null,"enabled":true,"client_certificate":null,"path":null,"ca_certificates":null,"created_at":1685571000,"tags":null}

在这里插入图片描述

3.1、创建ot_service

创建ot_service,并将其host指向ot_upstream

 curl -i -s -X POST http://localhost:8001/services \
  --data name=ot_service \
  --data host='ot_upstream'

在这里插入图片描述

4、为cn_service和ot_service创建route

4.1、为cn_service创建route,path为:/cn_service

curl -i -X POST http://localhost:8001/services/cn_service/routes \
  --data 'paths[]=/cn_service' \
  --data name=cn_route

在这里插入图片描述

4.1、为cn_service创建route,path为:/cn_service

curl -i -X POST http://localhost:8001/services/ot_service/routes \
  --data 'paths[]=/ot_service' \
  --data name=ot_route

在这里插入图片描述

5、测试的搭建情况

如果访问192.168.19.50:8000/cn_service/hello将会被代理到cn_upstream上,即会被192.168.19.50:8080/hello、192.168.19.50:8081/hello、192.168.19.50:8082/hello三个服务中的一个处理

如果访问192.168.19.50:8000/ot_service/hello将会被代理到cn_upstream上,即会被192.168.19.50:8083/hello、192.168.19.50:8084/hello、192.168.19.50:8085/hello三个服务中的一个处理

[root@min ~]# curl http://192.168.19.50:8000/cn_service/hello
hello : 8082;range:CN[root@min ~]# curl http://192.168.19.50:8000/cn_service/hello
hello : 8080;range:CN[root@min ~]# curl http://192.168.19.50:8000/cn_service/hello
hello : 8080;range:CN[root@min ~]# curl http://192.168.19.50:8000/cn_service/hello
hello : 8081;range:CN[root@min ~]# curl http://192.168.19.50:8000/cn_service/hello
hello : 8082;range:CN[root@min ~]# 

[root@min ~]# curl http://192.168.19.50:8000/ot_service/hello
hello : 8085;range:OT[root@min ~]# curl http://192.168.19.50:8000/ot_service/hello
hello : 8083;range:OT[root@min ~]# curl http://192.168.19.50:8000/ot_service/hello
hello : 8084;range:OT[root@min ~]# 

6、启用插件

curl -X POST http://localhost:8001/plugins/
–data “name=acl”
–data “config.allow=group1”
–data “config.allow=group2”
–data “config.hide_groups_header=true”

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

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

相关文章

8个升级到ChatGPT Plus的理由,不升级你就out了

​关注文章下方公众号,可免费获取AIGC最新学习资料 导读:ChatGPT Plus 是 OpenAI 聊天机器人的高级付费版本。以每月 20 美元的价格,该服务为您提供访问 GPT-4,您可以享有令人难以置信的稳定性和更快的响应时间。 本文字数&#…

i18n(国际化)代码简单实现

目录 i18n(国际化)是什么?如何实现 i18n(国际化)是什么? 各个国家都有各个国家的语言,如果网站需要让全世界的人使用,那就需要进行国际化功能开发 国际化我知道的一共有两种&#…

弄懂局部变量

成员变量和局部变量的区别 多个线程调用同一个对象的同一个方法时: 如果方法里无成员变量,那么不受任何影响 如果方法里有成员变量,只有读操作,不受影响 存在写操作,考虑多线程影响值 多线程调用…

【网络原理】网络层 IP 协议

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 目 录 🍀一. IP协议报头格式🌻二. IP 地址🌿三. 路由选择 网络层协议的工作: 地址管理路由选择(规划路径) …

如何解决多个node版本问题?

1. 安装nvm 1.1 下载nvm:https://github.com/coreybutler/nvm-windows/releases 注意:路径中不得有空格 接着的直接下一步直至安装完成 安装完成后,打开安装目录 打开settings.txt文件,文件内容如下 在文档内容后面加上下面两行代…

朴素贝叶斯算法的介绍

一、朴素贝叶斯算法的介绍 1.什么是朴素贝叶斯算法? 朴素贝叶斯算法(Naive Bayes Algorithm)是一种基于贝叶斯定理和特征独立性假设的概率分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等任务。 朴素贝叶斯算法的基本思想是基…

OpenMMLab AI实战营第二期(1)计算机视觉与OpenMMLab概述

通过今天课程的学习,算是比较大的扩展了我的视野,近期主要学一些强化学习的知识,没有想到计算机视觉领域已经发展的这么迅猛,很多以前只是在脑海里想象的计算机视觉应用场景,原来OpenMMLab已经实现了。我比较对目标检测…

人脸识别(Java+ Face++实现)

人脸识别(Java Face实现) 一. 概述 Face的核心技术是基于深度学习的人脸识别技术,其算法在准确率和速度方面都处于领先地位。该公司的产品和服务包括人脸识别SDK、人脸识别API、人脸比对服务、人脸检测服务、活体检测服务等。这些产品和服务广…

在树莓派3B+上安装Pytorch1.7

在树莓派3B上安装Pytorch1.7(应该是最简单的方法了)_package libopenblas-dev has no installation cand_Chauncey_Wang的博客-CSDN博客由于项目要求,我需要在树莓派上安装pytorch这就有几个问题,首先吧,咱们和外面之间有一道长城&#xff0c…

计算机网络 七大性能指标【速率】【带宽】【吞吐量】【时延】【时延带宽积】【往返时间】【利用率】

计算机网络 速率(bit/s 数据的传送速率)带宽(频域-频带宽度,时域-最高速率)吞吐量(单位时间的 数据量)时延(一端传送到另一端所需的时间)1. 发送时延(发送所用…

来自6种编程语言的祝福:欢乐六一儿童节

六一儿童节的由来是为了纪念在法西斯侵略战争中死难的儿童,反对帝国主义的虐杀和毒害儿童,保障儿童权利。1949年11月,国际民主妇女联合会在莫斯科召开大会,决定每年的6月1日为全世界少年儿童的节日,即国际儿童节。 六一…

RPC(1):软件项目架构变化简述

1单体架构 1.1架构图 单体架构就是一个项目里面包含这个项目中全部代码。一个应用搞定全部功能。 DNS 服务器可以是单映射,也可以配置多个映射。 1.2软件代码结构 在单体架构项目中,团队都是通过包(package)进行区分每个模块。 总体包结构&#xff…

Android进阶 :实现自定义View

Android进阶:实现自定义View 导语 有时候我们会想要实现一些复杂或者是独特的组件效果,这时候系统提供的组件可能不能满足我们的需求,这个时候我们一般就会有两个解决办法,一是上网查找开源的控件库,一些流行的开源库…

【JUnit技术专题】「入门到精通系列」手把手+零基础带你玩转单元测试,让你的代码更加“强壮”(夯实功底篇)

手把手零基础带你玩转单元测试,让你的代码更加“强壮” 前言介绍JUnit是什么?JUnit和xUnit之间的关系 JUnit的基本概念JUnit的特点什么是一个单元测试用例 JUnit的用法JUnit的最佳实践案例分析创建一个类创建 Test Case 类创建 Test Runner 类 JUnit总体…

Web实验二 CSS基本样式实验

实验原理 通过创建CSS样式文件,理解CSS样式基本属性作用及意义。 实验目的 理解CSS基本概念及功能 理解CSS样式的设计原则 理解并掌握CSS样式的基本声明方法 理解并掌握多种CSS选择器的使用方法 理解并掌握字文本、表格、超链接等元素常用属性的使用方法 理解并掌握…

机器人学:DH参数总结(传统DH方法和改进DH方法)

1. 传统DH参数方法 1.1 确定坐标系的方法 定义:杆 i i i的近端是关节 i i i,远端是关节 i 1 i1 i1. 【下面的规则参考上面的图看得更清楚】 对于 n n n自由度机器人,可用以下步骤建立与各杆件 i ( i 0 , 1 , … , n ) i(i0,1,…,n) i(i0,…

【iOS底层探索- Block原理分析-循环引用】

文章目录 前言准备工作1. Block的分类2. Block的内存分析捕获外部变量引用计数的变化堆栈释放的差异总结 3. Block的循环引用3.1 什么是循环引用?案例引入 循环引用解决方法1. 强弱共舞2. 手动中断循环引用3. 参数形式解决循环引用(block传参&#xff09…

汇编指令执行过程及CS与IP和DS寄存器关系与变化

内存指令及寄存器初始值: CS:2000H IP:0 DS:1000H AX:0 BX:0 上面在内存中的汇编指令是如何执行的? 验证: 在debug下用a指令先向内存写入下面指令,然后用u指令查看 mov ax,2000 mov ds,ax mov ax,[0008] mov ax,[0002] 在debug下用a指令先向内存写入下面指令,然后用u指…

Computer之Compilation:Cmake的简介、安装、案例应用之详细攻略

Computer之Compilation:Cmake的简介、安装、案例应用之详细攻略 目录 Cmake的简介 Cmake的安装 1、官方下载 2、执行安装程序,并按照提示进行安装 3、验证测试 Cmake的案例应用 Cmake的简介 CMake(Cross-platform Make)是一…

【嵌入式烧录/刷写文件】-1.7-将一个文本文件转换为Motorola S-record(S19/SREC/mot/SX)文件

案例背景(共5页精讲): 有如下两个文本文件(*.txt,*.ini,*.asc…)转换成Motorola S-record(S19/SREC/mot/SX)文件。常用于Key密钥,signature签名…的导入,或对一段数据计算出hex记录的最后一个字…