赞
踩
我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示:
我们可以在这里配置我们的服务
配置一个HTTP服务,输入地址和端口就完成了。
然后我们去配置一个路由
选择我们第一步配置的服务
这里可以选择很多插件,有限流、gRpc转换等插件,我这里选择一个限流插件使用,gRpc的后面再演示
60s只能访问2次
配置完路由之后,点击查看
最后我们就可以测试一下了
我先不经过Apisix网关,直接调接口
这次经过网关,要访问网关的地址和端口,网关会根据我们的配置进行路由,9080是网关默认的端口,因为我在配置路由时给了域名,所以这里需要加上;测试成功。
接下来我们测试一下协议转换吧,我们用postman调用Apisix,Apisix直接gRpc调用我的微服务service-provider,这里是模拟生产中app的调用。
这里需要把我们定义的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的地址http://124.222.91.116:8848放进 apisix_conf/config.yaml 文件中
这样就配置完成了,然后在上游中配置服务
这里就不测试了,很简单。
apisix_conf/config.yaml
这里主要关注 服务名称 serviceName: [namespace] / [name] : [portName] ,这里官网也没个示例,费了很大的劲才解决。
其他的路由配置都是一样的操作,就省略了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。