【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务

news2024/11/27 21:06:51

背景

我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示:

常规功能

上游

我们可以在这里配置我们的服务

HTTP

配置一个HTTP服务,输入地址和端口就完成了。

然后我们去配置一个路由

选择我们第一步配置的服务

这里可以选择很多插件,有限流、gRpc转换等插件,我这里选择一个限流插件使用,gRpc的后面再演示

60s只能访问2次

配置完路由之后,点击查看

最后我们就可以测试一下了

我先不经过Apisix网关,直接调接口

这次经过网关,要访问网关的地址和端口,网关会根据我们的配置进行路由,9080是网关默认的端口,因为我在配置路由时给了域名,所以这里需要加上;测试成功。

gRpc

接下来我们测试一下协议转换吧,我们用postman调用Apisix,Apisix直接gRpc调用我的微服务service-provider,这里是模拟生产中app的调用。

上游

Protocol Buffers

这里需要把我们定义的PB文件,也放进Apisix一份,这个是我service-provider暴露的gRpc接口

syntax = "proto3";
package member;

service HelloService {
  rpc SayHello (SayHelloRequest) returns (SayHelloResponse) {
  }
}

message SayHelloRequest {
  string name = 1;
}

message SayHelloResponse {
  int32 code = 1;
  string message = 2;
  bool success = 3;
  SayHelloData data = 4;
}

message SayHelloData {
  string name = 1;
  string content = 2;
}

放进Apisix里一份

路由

一定要选择插件

{
  "_meta": {
    "disable": false
  },
  "method": "SayHello",
  "proto_id": "1",
  "service": "member.HelloService"
}

测试一下,还是先不经过Apisix调用一下

然后经过Apisix再调用一次,发现结果是一样的,测试成功。

接外部注册中心

我们看到,我们再调用网关之前,需要配置上游,填入上游的地址和端口,但是端口是变的,每次服务重启之后都是变化的,而且网关本身也是要知道我们微服务架构中共有哪些服务,因为服务经常会上下线,网关路由需要感知到。Apisix支持外接Eureka、Nacos、Consul、K8s等注册中心,这里我们以Nacos和K8s为例。

Nacos

首先需要部署Nacos

然后把Nacos的地址http://124.222.91.116:8848放进 apisix_conf/config.yaml 文件中

这样就配置完成了,然后在上游中配置服务

这里就不测试了,很简单。

K8s

配置

apisix_conf/config.yaml

查看service-provider服务暴露的接口

配置上游

这里主要关注 服务名称 serviceName: [namespace] / [name] : [portName] ,这里官网也没个示例,费了很大的劲才解决。

HTTP

gRpc

其他的路由配置都是一样的操作,就省略了。

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

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

相关文章

设计模式 - 行为型 - 模板模式学习

现象: 设计模式 - 行为型 - 模板模式学习 介绍: 模板模式的设计思路,在抽象类中定义抽象方法的执行顺序, 并将抽象方法设定为只有子类实现,但不提供独立访问的方法 只能通过已经被安排好的定义方法去执行 可以控制整…

如何快速生成数据字典SQL语句

如何快速生成数据字典SQL语句 一、首先我们找到需要生成的数据字典的国家标准 以民族数据字典为例 打开浏览器搜索民族字典代码表得到如下数据,并把得到的数据存入Excel表格中 国标民族数据字典 国标民族字典 第七次全国人口普查民族代码表与民族国标代码 第七次…

JVM垃圾回收之GCRoots可达性分析

已经死亡的对象,不可达的对象,肯定会被回收。 什么样的对象会被回收? 判定的算法有两种:引用计数法和可达性分析算法。 引用计数法:(不使用这种) 给对象中添加一个引用计数器,每当…

springboot项目打jar包发布上线、查看日志和进程号

目录前言一、Maven打包1.1 删除test文件和对应依赖(不建议)1.2 pom.xml中配置跳过测试1.3 使用idea打包1.4 使用maven命令打包二、启动jar包2.1 简单启动2.2 后台运行并打印日志2.3 脚本启动三、查看日志3.1 tail命令查看日志3.2 cat命令查看日志四、其他…

员工为什么对绩效考核不满意?管理者应该怎么做?

绩效考核是公司管理员工的重要工具,员工通过绩效考核可以衡量自己的工作效果和完成任务的能力,能够帮助管理者更好的了解员工的工作情况和绩效表现。 但是,现实中很多员工对绩效考核“不满意”,认为绩效考核不公正、不透明、不准确…

docker基础命令-阳哥

docker基础篇-阳哥 文章目录docker基础篇-阳哥centos7最小安装准备工作网络设置安装必备工具1.1 安装工具1.5 优化ssh连接1.1 修改ssh服务的配置文件1.2 找到对应的行数修改如下1.3 修改完成之后重启ssh服务1.6 永久修改主机名sed命令sed命令替换文本_xbd_zc的博客-CSDN博客1.镜…

《2023年化妆品原料成分趋势报告》| 解码化妆品备案数据,洞悉2023年潜力原料成分

回顾2022年,是中国化妆品行业“历史转折年”。备案制度的全面改革,直接改变了产品备案新格局。法律法规对新品备案提出了详实的要求,新品出炉也设置了更高的门槛,所以我们清晰地看到2022年整体的化妆品备案数据大幅度下滑&#xf…

精心梳理的11个在线常用工具,提高开发效率

1、Hutool工具类——Java开发常用工具类 参考文档:https://hutool.cn/docs/index.html#/ 2、在线工具——各种工具整合 我主要用于时间戳转换,进制转换等。 地址:https://tool.lu/ 3、蛙蛙工具——各种文本字符等整合工具 https://www…

python@pyside样式化

文章目录refWidget类创建样式化文件qss引用样式并启动应用ref Styling the Widgets Application - Qt for PythonQt Style Sheets Reference | Qt Widgets 5.15.12 Widget类创建 创建一个简单界面(菜单主要内容)它们是水平布局 主要内容包括一段文本和一个按钮,它们是垂直布…

AI大模型,驶向产业何方?

技术更迭,已不是壁垒,国产式AI需要的是产品的创新思维,以及对需求的产品变现能力。 作者|斗斗 出品|产业家 “AI炒了那么多年,第一次感觉它真的要来了。”国内某论坛中,带有ChatGPT的词条下,几乎都会出…

【Java开发】设计模式 01:单例模式

1 单例模式介绍单例模式(Singleton Pattern)是Java中最为基础的设计模式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对…

打怪升级之使用csv文件发送UDP数据

面临的困难 如果你想做一个基于UDP包的数据处理问题的话,比较好的办法是使用csv文件来进行数据的保存(csv文件比较简单,方便进行各种处理)。 CSV文件格式简单,一方面它可以直接被excel处理,另一方面它完全…

PDF转word在线转换方法!操作简单又高效

相信很多已经工作的人都知道,PDF文件格式的优点在于兼容性强、安全性高,而且查看和传输给他人都很方便。但是,这种格式的文件也有不太方便的地方,那就是不能对文件内容进行编辑和修改。对于许多人来说,如果想要编辑修改…

接口自动化神器推荐:免费开源Lim接口测试平台

前言 对于传统的实现接口自动化的方案往往是搭建自动化框架,通过excel编写用例来驱动执行,例如常见的万金油技术栈组合:excel(编写用例)、pytest(用例执行)、allure(测试报告)等。 很多公司往往是通过自动化框架而非…

3-2 SpringCloud快速开发入门:Ribbon 实现客户端负载均衡

接上一章节Ribbon 是什么,这里讲讲Ribbon 实现客户端负载均衡 Ribbon 实现客户端负载均衡 由于 Spring Cloud Ribbon 的封装, 我们在微服务架构中使用客户端负载均衡调用非常简单, 只需要如下两步: 1、启动多个服务提供者实例并…

Matplotlib 绘图实用大全

本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…

正则表达式高阶技巧之环视的组合(使用python实现)

环视的组合介绍环视的组合环视中包含环视并列多个环视注意:环视作为多选分支排列在多选结构中断言与反向引用之间的关系介绍 在我们日常使用的编程语言都是支持环视的,但是语言不同,支持程度也就不同,下面具体介绍一下在python中…

【ChatGPT前世今生】前置知识Seq2Seq入门理解

【ChatGPT前世今生】前置知识Seq2Seq入门理解1、环境准备与依赖包安装2、数据集准备3、数据集预处理与读取4、定义Seq2Seq模型的基础类5、预处理训练数据集6、定义训练过程7、定义验证过程8、执行训练与验证过程9、展示模型的结果,进行进一步分析最近一段时间&#…

js - CommonJs和ES6 module的使用和区别

文章目录1,先说区别2,CommonJS3,ES6 module1,先说区别 阮一峰老师在 ES6 入门 中提到 ES6 模块与 CommonJS 模块有一些重大的差异: 它们有三个重大差异: CommonJS 模块输出的是一个值的拷贝,…

Idea+maven+spring-cloud项目搭建系列--11-1 dubbo(zookeeper,nacos)注册中心

前言:dubbo rpc 服务需要将服务提供者和消费者信息进行注册,以便于消费端可以完成远程接口调用;注册中心是 Dubbo 服务治理的核心组件,Dubbo 依赖注册中心的协调实现服务(地址)发现,自动化的服务…