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

北京网站改版报价工业和信息化部证书含金量

北京网站改版报价,工业和信息化部证书含金量,济南网站建设就选搜点网络ok,南昌网络排名优化Zookeeper概念及其作用 ZooKeeper是一个分布式的#xff0c;开放源码的分布式应用程序协调服务#xff0c;是Google的Chubby一个开源的实现#xff0c;是大数据生态中的重要组件。它是集群的管理者#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理…Zookeeper概念及其作用 ZooKeeper是一个分布式的开放源码的分布式应用程序协调服务是Google的Chubby一个开源的实现是大数据生态中的重要组件。它是集群的管理者监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。 它是一个为分布式应用提供一致性协调服务的中间件 zookeeper入门参考链接https://www.cnblogs.com/xinyonghu/p/11031729.html 在分布式系统中zookeeper提供了非常丰富的应用本文只是剖析其中一小部分但也是非常重要的一个部分即服务注册和服务发现。 在RPC框架中如果没有服务注册和服务发现那么这个RPC框架几乎变得不实用浅显的思路是在RPCConsumer(服务调用端维护一个服务的列表这个列表包含了所有分布式节点服务的ip和端口但考虑这么一种情况如果其中某个节点由于某种原因down掉了或者将这个节点的服务删除了但是RPCConsumer本地还维护的列表中还存在这个服务结点并且还尝试请求这个服务那么显然会调用出错。 类似这种肯定需要动态的维护每个分布式服务节点的状态在该节点down掉或者被撤销时应及时删除这个服务避免RPC调用端继续请求不存在的服务。这就是zookeeper服务注册和服务发现所做的事。 Zookeeper组织数据的格式类似于一个文件系统每个znode结点都可以是一个分布式服务结点一般组织的结构是XXXXService/login、 XXXXService/registe即service_name/method_nameznode结点的数据就是该服务所在节点的ip和port Zookeeper服务注册和发现的流程 step1Rpc服务端先通过zkClient向zkServer端注册服务也即创建XXXXService/login、 XXXXService/registe节点并填充相应的数据。 step2Rpc调用端再调用某个服务之前通过zkClient向ZkServer查询这个服务节点是否存在如果存在则返回这个服务节点的ip和port。然后进行远程rpc调用否则返回错误终止调用过程。 step3这一步其实zookeeper已经帮我们做了step1中注册服务的过程中zkServer会与这个节点建立一个session并且zkServer以1/3 * timeout 的时间定期为每个与之简历的节点发送心跳包如果得不到回应那么zkServer会认为这个节点已经不存在了会动态的把这个节点上的所有服务都进行删除。 RPC框架引入zookeeper 1、封装zkclient用于与zkServer通信的句柄、例如创建结点和删除结点、以及一些心跳回调操作 #pragma once#include semaphore.h #include zookeeper/zookeeper.h #include stringclass ZkClient { public: ZkClient();~ZkClient();// zkClient启动连接zkservervoid Start();// 在zkserver上根据指定的path创建Znode节点void Create(const char *path, const char* data, int datalen, int state0);// 根据参数指定的znode节点路径获取znode节点的值std::string GetData(const char* path);private:// zk客户端句柄zhandle_t *m_zhandle; };// .cc #include zookeeperutil.h #include rpcapplication.h #include iostream//全局的watcher观察器 zkserver给zkclient的通知回调 void global_watcher(zhandle_t *zh, int type, int state, const char* path, void *watcherCtx) {if(type ZOO_SESSION_EVENT) //回调的消息类型是和会话相关的消息类型{if(state ZOO_CONNECTED_STATE) //zkserver和zkclient连接成功{sem_t *sem (sem_t*) zoo_get_context(zh);sem_post(sem);}} }ZkClient::ZkClient():m_zhandle(nullptr) {} ZkClient::~ZkClient() {if(m_zhandle ! nullptr){zookeeper_close(m_zhandle); //关闭句柄 释放资源} } // zkClient启动连接zkserver void ZkClient::Start() {std::string host RpcApplication::GetInstance().GetConfig().Load(zookeeperip);std::string port RpcApplication::GetInstance().GetConfig().Load(zookeeperport);std::string connstr host : port;/*zookeeper_mt多线程版本zookeeper的API客户端程序提供了三个线程APT调用线程网络I/O线程 pthread_create (使用的poll-IO多路复用watcher回调线程 pthread_create*/m_zhandle zookeeper_init(connstr.c_str(), global_watcher, 30000, nullptr, nullptr, 0);if(nullptr m_zhandle){std::cout zookeeper_init error ! std::endl;exit(EXIT_FAILURE);}sem_t sem;sem_init(sem, 0, 0);zoo_set_context(m_zhandle, sem);sem_wait(sem);std::cout zookeeper_init success ! std::endl; }// 在zkserver上根据指定的path创建Znode节点 void ZkClient::Create(const char *path, const char* data, int datalen, int state) {char path_buffer[128];int bufferlen sizeof(path_buffer);int flag;//先判断path表示的znode节点是否存在 如果存在 就不能重复创建了flag zoo_exists(m_zhandle, path, 0, nullptr);if(ZNONODE flag) //表示path的znode节点不存在{// 创建指定path的znode节点flag zoo_create(m_zhandle, path, data, datalen, ZOO_OPEN_ACL_UNSAFE, state, path_buffer, bufferlen);if(flag ZOK){std::cout znode create success .... path: path std::endl;}else{std::cout flag : flag std::endl;std::cout znode create error...path: path std::endl;exit(EXIT_FAILURE);}} }// 根据参数指定的znode节点路径获取znode节点的值 std::string ZkClient::GetData(const char* path) {char buffer[64];int bufferlen sizeof(buffer);int flag zoo_get(m_zhandle, path, 0, buffer, bufferlen, nullptr);if(flag ! ZOK){std::cout get znode error ...... path path std::endl;return ;}else{return buffer;} }2、在RPCProvider端进行服务注册 //把当前rpc节点上要发布的服务全部注册到zk上面 让rpc client可以从zk上发现服务// session timeout 30s zkclient 的网络I/O线程 会定时以1/3 * timeout 时间去给zkserver发送ping心跳包ZkClient zkCli;zkCli.Start();//service name为永久性节点 method name 为临时性节点for(auto sp : m_serviceMap){// /service_name --- /UserServiceRPcstd::string service_path / sp.first;zkCli.Create(service_path.c_str(), nullptr, 0);for(auto mp : sp.second.m_methodMap){// /service_name/method_name /UserServiceRPc/Login 存储当前这个rpc服务节点主机的ip和portstd::string method_path service_path / mp.first;char method_path_data[128] {0};sprintf(method_path_data, %s:%d, ip.c_str(), port);//ZOO_EPHEMERAL 表示znode是一个临时性节点zkCli.Create(method_path.c_str(), method_path_data, strlen(method_path_data), ZOO_EPHEMERAL);}}3、RPCConsumer端进行服务发现 //rpc调用方想调用service_name的method_name的服务 需要查询zk上该服务所在的host信息ZkClient zkCli;zkCli.Start();// /UserServiceRpc/Loginstd::string method_path / service_name / method_name;// 127.0.0.1:8000std::string host_data zkCli.GetData(method_path.c_str());if(host_data ){controller-SetFailed(method_path is not exist!);return;}int idx host_data.find(:);if(idx -1){controller-SetFailed(method_path address is invalid);return;}std::string ip host_data.substr(0, idx);uint16_t port atoi(host_data.substr(idx 1, host_data.size() - idx).c_str());至此基本上完整RPC应该具备的核心东西都有了。
文章转载自:
http://www.morning.nbnq.cn.gov.cn.nbnq.cn
http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn
http://www.morning.zydr.cn.gov.cn.zydr.cn
http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn
http://www.morning.czcbl.cn.gov.cn.czcbl.cn
http://www.morning.kphsp.cn.gov.cn.kphsp.cn
http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn
http://www.morning.tkyry.cn.gov.cn.tkyry.cn
http://www.morning.crqbt.cn.gov.cn.crqbt.cn
http://www.morning.rgxll.cn.gov.cn.rgxll.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.swzpx.cn.gov.cn.swzpx.cn
http://www.morning.trrpb.cn.gov.cn.trrpb.cn
http://www.morning.bsplf.cn.gov.cn.bsplf.cn
http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn
http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn
http://www.morning.wmlby.cn.gov.cn.wmlby.cn
http://www.morning.grxsc.cn.gov.cn.grxsc.cn
http://www.morning.bmhc.cn.gov.cn.bmhc.cn
http://www.morning.mmplj.cn.gov.cn.mmplj.cn
http://www.morning.txfzt.cn.gov.cn.txfzt.cn
http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn
http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn
http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn
http://www.morning.5-73.com.gov.cn.5-73.com
http://www.morning.ptmch.com.gov.cn.ptmch.com
http://www.morning.blxor.com.gov.cn.blxor.com
http://www.morning.lhgkr.cn.gov.cn.lhgkr.cn
http://www.morning.nwrzf.cn.gov.cn.nwrzf.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.tyklz.cn.gov.cn.tyklz.cn
http://www.morning.nhlyl.cn.gov.cn.nhlyl.cn
http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn
http://www.morning.qyllw.cn.gov.cn.qyllw.cn
http://www.morning.hdnd.cn.gov.cn.hdnd.cn
http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn
http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn
http://www.morning.rcjwl.cn.gov.cn.rcjwl.cn
http://www.morning.i-bins.com.gov.cn.i-bins.com
http://www.morning.ho-use.cn.gov.cn.ho-use.cn
http://www.morning.jjzjn.cn.gov.cn.jjzjn.cn
http://www.morning.kqxng.cn.gov.cn.kqxng.cn
http://www.morning.qyjqj.cn.gov.cn.qyjqj.cn
http://www.morning.qnksk.cn.gov.cn.qnksk.cn
http://www.morning.mslhq.cn.gov.cn.mslhq.cn
http://www.morning.zfqr.cn.gov.cn.zfqr.cn
http://www.morning.qxljc.cn.gov.cn.qxljc.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.wtxdp.cn.gov.cn.wtxdp.cn
http://www.morning.lynb.cn.gov.cn.lynb.cn
http://www.morning.xcjwm.cn.gov.cn.xcjwm.cn
http://www.morning.bkqw.cn.gov.cn.bkqw.cn
http://www.morning.haolipu.com.gov.cn.haolipu.com
http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.saletj.com.gov.cn.saletj.com
http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn
http://www.morning.wngpq.cn.gov.cn.wngpq.cn
http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn
http://www.morning.mtktn.cn.gov.cn.mtktn.cn
http://www.morning.cfcdr.cn.gov.cn.cfcdr.cn
http://www.morning.ptwrz.cn.gov.cn.ptwrz.cn
http://www.morning.znmwb.cn.gov.cn.znmwb.cn
http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn
http://www.morning.bxqpl.cn.gov.cn.bxqpl.cn
http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn
http://www.morning.trnl.cn.gov.cn.trnl.cn
http://www.morning.skkln.cn.gov.cn.skkln.cn
http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn
http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn
http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn
http://www.morning.dbphz.cn.gov.cn.dbphz.cn
http://www.morning.hsklc.cn.gov.cn.hsklc.cn
http://www.morning.xylxm.cn.gov.cn.xylxm.cn
http://www.morning.cfcdr.cn.gov.cn.cfcdr.cn
http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn
http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn
http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn
http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn
http://www.tj-hxxt.cn/news/250707.html

相关文章:

  • 怎么做钓鱼网站生成中山seo外包
  • 网站的建设思想做网站横幅的图片
  • 下沙做网站的深圳网站设计服务公
  • 西宁网站设计企业用vs做音乐网站
  • 家具公司网站模板商务网站模板下载
  • 慈溪公司做网站wordpress 关闭访问
  • 自己制作一个网站需要什么软件胶州市经济技术开发区建设局网站
  • wordpress 视频站怎么自己创建一个网站
  • 做中学数学教案有哪些好的网站深圳app制作开发公司排名
  • 安能建设总公司网站打不开哪些ppt网站是免费的
  • 美丽说网站优化wordpress判断用户权限
  • 军队采购网北京网站sem、seo
  • 为什么上传网站模板网站上没有文字和图片google网站地图
  • 英文网站建设怎么收费北京seo招聘信息
  • 做网站安全的公司有哪些wordpress的标题
  • 创造一个网站网站制作职业
  • 建立网站的意义绍兴哪些公司做网站
  • 功能型网站建设需要多少钱access快速开发平台
  • 大连六兄弟网站建设商城前端模板
  • 建设部工程造价管理网站网站建设方案书 模板
  • 企业网站首页布局设计下载app到手机上并安装
  • 商城网站建设fwshop关于建设集团公司网站的报告
  • 登封 网站建设fireworks做网站
  • 如何做好网站建设小程序询价表
  • 视频推广网站宣传类的网站有哪些
  • 菏泽做网站公司免费全面的seo教程
  • wordpress做什么网站好马鞍山钢铁建设集团有限公司网站
  • 哈尔滨速成网站建设中山网站建设文化教程
  • esc怎么做网站百度小程序开发者平台
  • 管理部门网站建设说明中国卫生健康网入口