C++ 注册Nacos

下载源码:

git clone GitHub - nacos-group/nacos-sdk-cpp: C++ client for Nacos

编译源码

cd nacos-sdk-cpp

cmake .

make

生成库文件

在nacos-sdk-cpp 下

注册nacos

将include  和libnacos-cli.so libnacos-cli-static.a 放入你的工程

如果Nacos服务地址:192.168.1.124:8848

如果你的c++服务配置为

地址:192.168.1.131

端口:9000

服务名:TestCppService

在你的工程中添加如下代码

注册实例

头文件

#include <iostream>
#include <unistd.h>
#include "Nacos.h"using namespace std;
using namespace nacos;

Properties configProps;
configProps[PropertyKeyConst::SERVER_ADDR] = "192.168.1.118:8848";
INacosServiceFactory *factory = NacosFactoryFactory::getNacosFactory(configProps);
ResourceGuard <INacosServiceFactory> _guardFactory(factory);
NamingService *namingSvc = factory->CreateNamingService();
ResourceGuard <NamingService> _serviceFactory(namingSvc);
Instance instance;
instance.clusterName = "DefaultCluster";
instance.ip = "192.168.1.131";
instance.port = 9000;
instance.instanceId = "1";
instance.ephemeral = true;try
{NacosString serviceName = "TestCppService" ;namingSvc->registerInstance(serviceName, instance);
}
catch (NacosException &e)
{cout << "encounter exception while registering service instance, raison:" << e.what() << endl;return ;
}

注销实例

 try{NacosString serviceName = "TestCppService" ;namingSvc->deregisterInstance(serviceName, "192.168.1.131", 9000);}catch (NacosException &e){cout << "encounter exception while registering service instance, raison:" << e.what() << endl;return ;}

可以在Nacos中心看到注册服务上线:

可以配合libhv 来做测试

下载libhv

git clone libhv: 🔥 比libevent、libuv更易用的国产网络库,用来开发 TCP/UDP/SSL/HTTP/WebSocket/MQTT 客户端/服务端

编译libhv

mkdir build 

cd build

cmake ..

cmake --build .

生成库文件

编译例子

g++ -std=c++11   -I ./libhv-master/include/hv/ -I  .   http_server.cpp -o http_server  -L  ./lib  -lhv

合并后的完整代码

#include "hv/HttpServer.h"#include <iostream>
#include <unistd.h>
#include "Nacos.h"using namespace std;
using namespace nacos;void HttpRouter(HttpService &router)
{// curl -v http://ip:port/router.Static("/", "./html");// curl -v http://ip:port/pingrouter.GET("/ping", [](HttpRequest* req, HttpResponse* resp) {return resp->String("pong");});// curl -v http://ip:port/datarouter.GET("/data", [](HttpRequest* req, HttpResponse* resp) {static char data[] = "0123456789";return resp->Data(data, 10 /*, false */);});// curl -v http://ip:port/pathsrouter.GET("/paths", [&router](HttpRequest* req, HttpResponse* resp) {return resp->Json(router.Paths());});// curl -v http://ip:port/get?env=1router.GET("/get", [](HttpRequest* req, HttpResponse* resp) {resp->json["origin"] = req->client_addr.ip;resp->json["url"] = req->url;resp->json["args"] = req->query_params;resp->json["headers"] = req->headers;return 200;});// curl -v http://ip:port/echo -d "hello,world!"router.POST("/echo", [](const HttpContextPtr& ctx) {return ctx->send(ctx->body(), ctx->type());});// curl -v http://ip:port/user/123router.GET("/user/{id}", [](const HttpContextPtr& ctx) {hv::Json resp;resp["id"] = ctx->param("id");return ctx->send(resp.dump(2));});}int main() 
{  Properties configProps;configProps[PropertyKeyConst::SERVER_ADDR] = "192.168.1.118:8848";INacosServiceFactory *factory = NacosFactoryFactory::getNacosFactory(configProps);ResourceGuard <INacosServiceFactory> _guardFactory(factory);NamingService *namingSvc = factory->CreateNamingService();ResourceGuard <NamingService> _serviceFactory(namingSvc);Instance instance;instance.clusterName = "DefaultCluster";instance.ip = "192.168.1.131";instance.port = 9000;instance.instanceId = "1";instance.ephemeral = true;try {NacosString serviceName = "TestCppService" ;namingSvc->registerInstance(serviceName, instance);}catch (NacosException &e) {cout << "encounter exception while registering service instance, raison:" << e.what() << endl;}	HttpService router;HttpRouter(router);http_server_t server;server.port = 8080;server.service = &router;http_server_run(&server);try {NacosString serviceName = "TestCppService" ;namingSvc->deregisterInstance(serviceName, "192.168.1.131", 9000);}catch (NacosException &e) {cout << "encounter exception while registering service instance, raison:" << e.what() << endl;return -1;}sleep(5);return 0;
}

可以配置通过nacos 网关统一调用

通过网关调用

直接调用

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

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

相关文章

代码随想录笔记|C++数据结构与算法学习笔记-栈和队列(〇)|stack、queue、单调队列和优先级队列(priority_queue)、大顶堆和小顶堆

文章目录 stack容器stack 基本概念常用接口构造函数赋值操作数据存取大小操作 queue容器queue常用接口构造函数赋值操作数据存取大小操作 栈和队列的灵魂四问C中stack,queue是容器吗我们使用的stack,queue属于哪个版本的STL我们使用的STL中stack,queue是如何实现的&#xff1f;…

SAP CAP篇十六:写个ERP的会计系统吧,Part III

本文目录 本系列文章目标开发步骤数据库表设计Service 定义生成Fiori App更新CDS Annotation更新Entity: Companies更新Entity&#xff1a;Accounts App运行 本系列文章 SAP CAP篇一: 快速创建一个Service&#xff0c;基于Java的实现 SAP CAP篇二&#xff1a;为Service加上数据…

NLP学习路线总结:从入门到精通

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能领域的重要分支&#xff0c;它致力于使计算机能够理解、解释和生成人类语言。NLP技术的应用范围广泛&#xff0c;涵盖了机器翻译、情感分析、语义理解、信息抽取等诸多领域。对于想要…

每日一题---存在重复元素(1)和(2)

文章目录 一、存在重复数组1,1.题目展示1.2.解题思路1.3.参考代码 二、存在重复元素||2.1.题目展示2.2.解题思路2.3.参考代码 大家学习完了数组&#xff0c;指针等内容可以进行刷题了&#xff0c;刷题不仅可以增加大家的代码量&#xff0c;也可以积累自己的经验&#xff0c;言归…

C语言之指针的指向地址和指针的内容总结(八十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

2023年第十四届蓝桥杯 - 省赛 - Python研究生组 - A.工作时长

题目 数据文件&#xff1a;https://labfile.oss.aliyuncs.com/courses/21074/records.txt Idea 直接通过 datetime 模块加载时间字符串进行格式化&#xff0c;然后对时间列表进行排序&#xff0c;最后两两计算时间差。 Code Python from datetime import datetimetime_lis…

目标检测——服饰属性标签识别数据集

一、重要性及意义 首先&#xff0c;随着电商、时尚推荐等业务的发展&#xff0c;服饰属性标签识别已经成为一项关键的计算机视觉任务。这些标签&#xff0c;如颜色、款式、材质等&#xff0c;对于实现图像搜索、时尚推荐等业务需求至关重要。服饰属性标签识别数据集为此类任务…

Excel 数据-分列的三个经常用法

Case 1 &#xff1a;有时候数据导出时如果没有电子表格的话&#xff0c;只能导出本地文件&#xff0c;如下图情况&#xff1a; 可以使用数据-分列处理数据&#xff1a; 原来是因为SAP导出数据没有完成的原因&#xff0c;或者关闭Excel重新打开试一下。 重新打开后可以输入了 C…

python3GUI--不同样式的登录注册界面By:PyQt5(附下载地址)

文章目录 一&#xff0e;前言二&#xff0e;介绍&效果展示界面一1.注册2.登录3.切换效果 界面二1.注册2.登录3.切换效果 界面三1.注册3.登录3.切换效果 界面四1.注册2.登录3.切换效果 界面五1.注册2.登录3.切换效果 界面六1.注册2.普通登录3.快捷登录4.切换效果 界面七1.登…

基于FPGA的HDMI方块移动程序设计

前面写了一篇关于HDMI视频接口的文章《基于FPGA的HDMI视频接口的设计》&#xff0c;该文章对HDMI的相关知识点做了讲解&#xff0c;这里不再重复&#xff0c;本篇文章直接实现一个简单功能-方块的移动。 该系统程序主要实现的功能就是通过串口下发指令控制方块的位置移动&…

Docker基础系列之TLS和CA认证

Docker基础系列之TLS和CA认证 文章目录 Docker基础系列之TLS和CA认证1. 引言2. 初识TLS和CA3. 开启TLS和CA认证3.1 生成证书3.2 配置TLS 4. 参考和感谢 1. 引言 我们日常工作当中会遇到这些需求&#xff1a; 监控Docker容器在idea开发工具中连接Docker&#xff0c;直接发布至…

手搓Docker-Image-Creator(DIC)工具(03):实现alpine+jre的镜像

此篇博客将介绍如何使用 Docker 创建一个alpine3.10-jre1.8.0_401 的 Docker 镜像&#xff0c;并使用 Docker 运行起来。将用到 Dockerfile 的 COPY 命令、RUN 命令、ENV 命令&#xff0c;最终实现基于单一应用的 Dockerfile 构建镜像和运行。 紧急修改&#xff1a;代码我是在m…

【机器学习300问】60、图像分类任务中,训练数据不足会带来什么问题?如何缓解图像数据不足带来的问题?

在机器学习中&#xff0c;绝大部分模型都需要大量的数据进行训练和学习&#xff08;包括有监督学习和无监督学习&#xff09;&#xff0c;然而在实际应用中经常会遇到训练数据不足的问题。就比如图像分类这样的计算机视觉任务&#xff0c;确实依赖于大规模且多样化的训练数据以…

云数据中心传输的出路

研发端到端协议不是出路&#xff0c;研发更智能调度流量的交换机不是出路&#xff0c;将流量按长短突发模式分流到不同链路(逻辑的或物理的)才是出路。所有高速传输的前提是标准化&#xff0c;统一简单的操作。多么简单的领悟。 数据中心网络具有范围小&#xff0c;带宽大&…

FFmpeg 详解

FFmpeg 详解 FFmpeg 详解整体结构不同下载版本的区别常用库常用函数初始化封装格式解码器 版本对比组件注册方式对比FFmpeg 3.x 组件注册方式FFmpeg 4.x 组件注册方式 结构体比对函数对比avcodec_decode_video2()vcodec_encode_video2() 数据结构结构体分析AVFormatContextAVIn…

什么是原生IP?原生IP的作用是什么?

原生IP&#xff08;Native IP&#xff09;是指直接从互联网服务提供商&#xff08;ISP&#xff09;获得的IP地址&#xff0c;而非通过代理服务器、VPN或其他中间层方式获取。这种IP地址直接与用户的设备或网络关联&#xff0c;无需经过任何中间服务器或代理的转发或隐藏&#x…

[Java基础揉碎]枚举

目录 先看一个需求 枚举介绍: 枚举实现的方式: >自定义类实现枚举实例: >使用enum关键字实现枚举 ​编辑 enum关键字实现枚举注意事项 enum常用方法 enum细节 先看一个需求 要求创建季节(Season)对象&#xff0c;请设计并完成。 // 传统的方法建造一个类: clas…

5.vector容器的使用

文章目录 vector容器1.构造函数代码工程运行结果 2.赋值代码工程运行结果 3.容量和大小代码工程运行结果 4.插入和删除代码工程运行结果 5.数据存取工程代码运行结果 6.互换容器代码工程运行结果 7.预留空间代码工程运行结果 vector容器 1.构造函数 /*1.默认构造-无参构造*/ …

第十三届蓝桥杯JavaA组省赛真题 - 求和

解题思路&#xff1a; 这&#xff0c;真的是&#xff0c;省赛真题吗... public class Main {public static void main(String[] args) {long res 0;for (int i 1; i < 20230408; i) {res i;}System.out.print(res);} }

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …