首页 > 其他分享 >springcloud sidecar 实现C语言调用语言模块

springcloud sidecar 实现C语言调用语言模块

时间:2023-02-14 15:57:10浏览次数:45  
标签:服务 springcloud 端口 nacos C语言 访问 Java sidecar

以前对springcloud的印象停留在大项目功能模块的独立、负载均衡、熔断等功能。这次项目接触了另一个用法,多语言异构。以前Java调C都是用的JNA或者JNI,这次C调Java用了springcloud sidecar模块来实现。所以记录一下,有相同需求的可以交流下。

Sidecar模式翻译过来挎斗模式,挎斗是如下一种摩托车。非Java语言功能相当于A部分,运行在一个端口上,sidercar相当于B部分,会监听A服务的端口,且sidercar会通过配置被springcloud服务发现与注册机制识别。需要注意的是A和B必须部署在同一台主机上。

每个非Java语言服务对应一个sidecar服务,通过访问sidecar服务来调用微服务中的其他服务。无需知晓被调用服务的IP和端口,只需要知道该服务在注册中心的服务名即可。

Demo
软件
IDEA 2022.3.1
Nacos 1.4.1
python 3.6

1.启动Nacos服务发现注册;

Win+R 进入dos命令,转到nacos安装目录,运行启动命令:.\startup.cmd -m standalone ,会出现nacos图标,跑起来后根据打印日志访问对应地址,用户名密码均为nacos,登录即可。如果,访问网址为 http://192.168.244.1:8848/nacos/index.html

2.启动一个微服务提供者;

pom.xml中要引入nacos和ribbon。

Application.yml配置文件中要指定本服务端口及服务名,nacos相关信息等



启动类加入注解

定义restful风格controller类

启动服务后可以访问网址 http://localhost:8080/test 进行测试

3.启动多语言微服务sidecar;

Pom.xml中引入sidecar相关jar包;

Application.yml中配置服务端口、服务名、nacos相关信息及sidecar信息


启动类加上@EnableDiscoveryClient注解,启动。访问nacos地址可以看到启动了两个服务

4.启动非Java语言服务(本示例用的python语言)。

需要指定运行端口,且该端口须与sidecar配置端口一致。
通过 http://localhost:8070(sidecarIP:端口)/被访问服务名称/被访问方法 的方式访问

通过访问非Java语言服务网址可直接调用显示另一Java语言微服务方法内容。本示例访问地址为 http://192.168.2.110:8060/callJavaService

标签:服务,springcloud,端口,nacos,C语言,访问,Java,sidecar
From: https://www.cnblogs.com/vinphy/p/17119844.html

相关文章

  • C语言填空:数组a b c,c中元素包括a,但不在b中
    #include<stdio.h>//数组a中有8个不相等的元素,b中有5个不相等的元素,数组c中包含那些a中但不在b中的元素,并输出数组c各元素的值main(){inta[8],b[5],i,j,count;......
  • C语言学习笔记(八): 自定义数据类型
    结构体变量什么是结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体结构体的成员可以是任何类型的变量,如整数,字符串,浮点数,其他结构体,指针......
  • 微服务学习计划——SpringCloud
    微服务学习计划——SpringCloud在学习并掌握了众多基础框架之后,我们的项目繁杂且难以掌握,那么我们就需要开启一门新的课程,也就是我们常说的微服务架构随着互联网行业的发......
  • C语言学习2
    C语言常见的数据类型char     //字符数据类型short     //短整型int       //整型long     //长整型longlong  //更......
  • C语言学习笔记(七): 指针的使用
    函数的定义形参和实参在定义函数时函数名后面括号中的变量名称为“形式参数”(简称“形参”)或“虚拟参数”。在主调函数中调用一个函数时,函数名后面括号中的参数称为“......
  • c语言 字符串拼接
    voidstr_cat(char*s1,char*s2){inti=0,j=0;while(s1[i++]);i--;while(s1[i++]=s2[j++]);}voidstr_cat(char*s1,char*s2){inti=0,j......
  • C语言死兔子问题
    问题:开局一对兔子三个月开始产子小兔子三个月后开始产子生一对兔子…兔子都不死计算有多少只兔子#include<stdio.h>intblamedRabbit(intm){intfb1,fb2;fb......
  • c语言 unsigned与signed及其溢出问题
    文章目录​​不同处​​​​溢出​​​​最大值​​​​最小值​​​​溢出后值变成什么​​不同处unsignedinta=-1;intb=-1;printf("%d%d\n",a,b);//-1-......
  • SpringCloud 集成 Consul+restTemplate 集群实战
      服务提供者应用两个模块(prot:8021,8021)pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmln......
  • Docker 服务编排 快速部署 SpringCloud 项目 (一)
    一、docker-compose.ymlversion:"3.3"networks:zeal:volumes:data:services:gateway:restart:alwaysbuild:context:./gateway......