当前位置: 首页 > wzjs >正文

保护区门户网站建设制度如何制作简单的网页链接

保护区门户网站建设制度,如何制作简单的网页链接,西班牙语网站建设,手机网站建设策划方案目录 介绍安装Etcd安装etcd的客户端使用 介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用 Raft 一致性算法来保持集群数据的一致性,且客户端通过长连接watch 功能,能够及时收到数据变化…

目录

  • 介绍
  • 安装Etcd
  • 安装etcd的客户端
  • 使用

介绍

Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用 Raft 一致性算法来保持集群数据的一致性,且客户端通过长连接watch 功能,能够及时收到数据变化通知,相较于 Zookeeper 框架更加轻量化。以下是关于 etcd 的安装与使用方法的详细介绍。

安装Etcd

Etcd 是一个分布式键值存储,通常用于服务发现和配置管理。
1.安装Etcd
sudo apt-get install etcd
2.节点配置
vi /etc/default/etcd
这是服务器监听的地址
在这里插入图片描述
在这里插入图片描述
3.启动etcd服务
systemctl start etcd
4. 运行验证
etcdctl put mykey "this is awesome"
如果出现报错:
在这里插入图片描述
则 vi /etc/profile在末尾声明环境变量ETCDCTL_API=3以确定etcd版本
在这里插入图片描述
完毕后, 加载配置文件source /etc/profile, 并重新执行测试指令
在这里插入图片描述

安装etcd的客户端

etcd-cpp-apiv3: etcd-cpp-apiv3 是一个 etcd 的 C++版本客户端 API。它依赖于 mipsasm, boost, protobuf, gRPC, cpprestsdk 等库。

依赖安装:
sudo apt-get install libboost-all-dev libssl-dev
sudo apt-get install libprotobuf-dev protobuf-compiler-grpc
sudo apt-get install libgrpc-dev libgrpc++-dev
sudo apt-get install libcpprest-dev

去github上下载https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
在这里插入图片描述
依次执行:
unzip etcd-cpp-apiv3-master.zip
cd etcd-cpp-apiv3-master
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make -j$(nproc) && sudo make install

使用

示例:
put.cc文件

#include <etcd/Client.hpp>
#include <etcd/KeepAlive.hpp>
#include <etcd/Response.hpp>
#include <thread>int main(int argc, char* argv[])
{std::string etcd_host = "http://127.0.0.1:2379";// 实例化客户端对象etcd::Client client(etcd_host);// 获取/创建租约保活对象 -- 能指定有效时长的租约auto keep_alive = client.leasekeepalive(3).get();//leasekeepalive会创建一个keepalive对象(创建对象的时候, 会自动有一个ID)//为什么还要get? pplx::task<std::shared_ptr<KeepAlive>> leasekeepalive(int ttl); 返回一个task, task取到里面的类型需要用get//auto 的类型为智能指针// 获取租约IDauto lease_id = keep_alive->Lease();// 向etcd新增数据auto resp = client.put("/service/user", "127.0.0.1:8080", lease_id).get();//pplx::task<Response> put(...)/*class Response{bool is_ok()std::string const& error_message()Value const& value()//当前的数值 或者 一个请求的处理结果Value const& prev_value()//之前的数值Value const& value(int index)};*/if(resp.is_ok() == false) {std::cout << "新增数据失败: " << resp.error_message() << std::endl;return -1;}//keepalive会和etcd服务端建立长连接, 创建一个ID, 并一直发送心跳包, 发送ttl秒, 然后客户端拿着这个ID去put, 这样就建立起了联系//如果服务器没接收到心跳包了, 则会将有这个ID的数据删除auto resp2 = client.put("/service/friend", "127.0.0.1:9090").get();if (resp2.is_ok() == false) {std::cout << "新增数据失败: " << resp2.error_message() << std::endl;return -1;}std::this_thread::sleep_for(std::chrono::seconds(10)); //阻塞休息10sreturn 0;
}

get.cc文件

#include <etcd/Client.hpp>
#include <etcd/KeepAlive.hpp>
#include <etcd/Response.hpp>
#include <etcd/Watcher.hpp>
#include <etcd/Value.hpp>
#include <thread>void callback(const etcd::Response& resp){if (resp.is_ok() == false) {std::cout << "收到一个错误的事件通知:" << resp.error_message() << std::endl;return;}for (auto const& ev : resp.events()) {if (ev.event_type() == etcd::Event::EventType::PUT) {std::cout << "服务信息发生了改变:\n";std::cout << "当前的值: " << ev.kv().key() << "-" << ev.kv().as_string() << std::endl;std::cout << "原来的值: " << ev.prev_kv().key() << "-" << ev.prev_kv().as_string() << std::endl;} else if (ev.event_type() == etcd::Event::EventType::DELETE_) {std::cout << "服务信息下线被删除:\n";std::cout << "当前的值: " << ev.kv().key() << "-" << ev.kv().as_string() << std::endl;std::cout << "原来的值: " << ev.prev_kv().key() << "-" << ev.prev_kv().as_string() << std::endl;}}
}int main(int argc, char* argv[])
{std::string etcd_host = "http://127.0.0.1:2379";// 实例化客户端对象etcd::Client client(etcd_host); //pplx::task<Response> ls// 获取制定的键值对信息auto resp = client.ls("/service").get();            //key也分为目录     key1/a/111    key1/b/111  key/a/111/222if (resp.is_ok() == false) {std::cout << "获取键值对数据失败: " << resp.error_message() << std::endl;return -1;}int sz = resp.keys().size();for (int i = 0; i < sz; ++i) {std::cout << resp.value(i).as_string() << "可以提供" << resp.key(i) << "服务\n";}// 实例化一个键值对事件监控对象auto watcher = etcd::Watcher(client, "/service", callback, true);watcher.Wait();     //会一直循环return 0;
}

运行:
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/311097.html

相关文章:

  • 网站制作是什么公司网络营销大师排行榜
  • 聊城做网站网络公司市场营销主要学什么
  • wordpress奖励插件宁波核心关键词seo收费
  • 织梦手机网站模板企业网站快速排名
  • 正版厦门网站设计公司电商网站开发平台有哪些
  • 网站联盟是什么意思凡科建站模板
  • wap手机网站厦门网站推广优化哪家好
  • 政府查询网站建设方案网站快速排名案例
  • 网站建设三合一上海网络推广专员
  • 深圳学网站开发免费b站网站推广
  • 直接下载app安装seo检测优化
  • 手机网站建设制作教程曲靖seo建站
  • 做app和网站哪个焦作网站seo
  • 郑州哪家公司做网站网络服务投诉平台
  • 中英版网站怎么做链接
  • 交河网站建设广告公司怎么找客户资源
  • 学做饺子馅上那个网站百度指数爬虫
  • wordpress购物网站电商网站建设公司
  • 微信扫码抢红包网站做seo交流论坛seo顾问
  • 武汉网站建设老牌公司网站关键词seo费用
  • 深圳做企业网站的公司推荐b2b网站大全
  • 每个城市建设规划在哪个网站百度人工服务热线24小时
  • 做信誉认证对网站有什么好处大连网站优化
  • html网页设计思路太原seo团队
  • 网站做点击广告是怎么回事优化设计七年级上册语文答案
  • 网站都是什么软件做的百度关键词优化是什么意思
  • 代做吧机械网站河北百度seo软件
  • 网站500兆空间多少钱市场营销策划书范文5篇精选
  • 龙禧网站建设seo建站的步骤
  • 做网站作业什么主题搜索引擎推广方式有哪些