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

有什么公司是建设网站的吗嘉兴优化公司

有什么公司是建设网站的吗,嘉兴优化公司,做外汇模拟的网站,达内it教育官网我们在分析BaseServer的onManagerStart回调函数时,看到有调用Provider注册到zookeeper的过程,这篇我们详细解析下这个过程。 //app启动后向zookeeper注册服务信息 FSOFRegistry::instance()->setParams($this->processName, $this->config, $t…

我们在分析BaseServer的onManagerStart回调函数时,看到有调用Provider注册到zookeeper的过程,这篇我们详细解析下这个过程。

//app启动后向zookeeper注册服务信息
FSOFRegistry::instance()->setParams($this->processName, $this->config, $this->port,$this->serverProviders, $this->start_without_registry);
FSOFRegistry::instance()->registerZk();
//注册单列类
class FSOFRegistry 
{//设置zookeeper的日志文件及日志级别(1.error; 2.warn; 3.info; 4.debug)const ZOOKEEPER_LOG_NO = 0;const ZOOKEEPER_LOG_ERROR = 1;const ZOOKEEPER_LOG_WARN = 2;const ZOOKEEPER_LOG_INFO = 3;const ZOOKEEPER_LOG_DEBUG = 4;protected $appName;//应用名称protected $port;//应用监听端口信息protected $config;//配置信息protected $serverProviders;//服务接口信息protected $localIp = '127.0.0.1';protected $ephemeral = false;//zookeeper相关protected $zkService = null;//zk serviceprotected $fsofUrlList = array();//要注册到zk的信息的列表protected $start_without_registry;//p2p模式private static $_instance;//本实例信息,这里使用了单列模式private $logger;//日志组件//单列模式创建实例public static function instance(){if (empty(FSOFRegistry::$_instance)){FSOFRegistry::$_instance = new FSOFRegistry();}return FSOFRegistry::$_instance;}public function __construct(){$this->logger = \Logger::getLogger(__CLASS__);//初始化日志组件}//BaseServer侧调用这个函数设置相关属性信息,这里属性数据已经在类的初始化处解释过,这里不重复解释。public function setParams($appName, $appConfig, $port, $serverProviders, $registry = true){$this->logger->info("serverProviders:".json_encode($serverProviders));$this->appName = $appName;$this->port = $port;$this->config = $appConfig;$this->serverProviders = $serverProviders;$this->start_without_registry = $registry;try{   //获取Provider服务所在的机器$this->localIp = FSOFSystemUtil::getServiceIP();}catch (\Exception $e){$this->logger->error('The server network configuration errors',$e);//当获取IP失败时,禁止往zk注册$this->start_without_registry = true;}}
//注册到zookeeper
public function registerZk(){if(!$this->start_without_registry)//非p2p模式,服务启动时,需要注册流程{try{$this->logger->info("init zk start...");$this->ServiceSerialize();//生成service urls$this->createZookeeperService();//创建zk service$this->setZkLog();//设置日志组件信息if (!$this->ephemeral)//这个参数按意思是标记是否是短暂注册,但全篇都是false。{//静态注册模式$this->registerServiceToZk();//调用zk的接口,注册到zk$this->inventZkService();//注销zk服务}//连接成功后,通过注入watcherCallFunc函数进行注册$this->logger->info("init zk end...");}catch (\Exception $e){$this->logger->error($e->getMessage(),$e);}}}
//生成要注册到zk的服务信息
protected function ServiceSerialize(){try {unset($this->fsofUrlList);//清理信息if (!empty($this->serverProviders))//服务信息不为空{if ($this->ephemeral)//短暂的{//注册时间//$this->config["service_properties"]["timestamp"] = (int)(microtime(true) * 1000);$this->config["service_properties"]["dynamic"] = "true";} else//长久的,按逻辑,流程会走这里。 {$this->config["service_properties"]["dynamic"] = "false";}$services = $this->serverProviders;foreach ($services as $interface => $serviceInfo){//合并全局配置if (isset($this->config["service_properties"])){//接口配置优先级高于全局配置,所以$serviceInfo放后面$serviceInfo = array_merge($this->config["service_properties"], $serviceInfo);}//不用上报的信息去掉unset($serviceInfo['service']);unset($serviceInfo['p2p_mode']);if (empty($serviceInfo["version"])){$serviceInfo['version'] = FSOFConstants::FSOF_SERVICE_VERSION_DEFAULT;}//与dubbo兼容处理$serviceInfo['interface'] = $interface;//dubbo_admin需要使用//序列化方式$serviceInfo['serialization']= "fastjson";ksort($serviceInfo);//参数排序,与dubbo兼容//要注册到zk的url信息组成部分$urlPara = array('scheme' => 'dubbo','host' => $this->localIp,'port' => $this->port,'path' => '/' . $interface,//http_build_query会进行urlencode导致query参数被多编码一次,使用urldecode抵消'query' => urldecode(http_build_query($serviceInfo)),);$this->logger->debug("serviceInfo:" . json_encode($serviceInfo) . "|urlPara:" . json_encode($urlPara));try{$fsofUrl = new FSOFUrl($urlPara);//按规则拼接dubbo的url协议}catch (\Exception $e){$this->logger->error('init url failed|app:' . $this->appName . '|urlPara:' . json_encode($urlPara));}$this->fsofUrlList[] = $fsofUrl;}}}catch(\Exception $e){$errMsg = $e->getMessage();$this->logger->error('ServiceSerialize:'.$errMsg, $e);}}

 

http://www.lbrq.cn/news/2559529.html

相关文章:

  • 做产品网站淘宝百度seo工具
  • 婚纱摄影网站开发如何在百度上推广自己
  • 网站如何做seo规划廊坊网络推广公司
  • 目前我国政府网站建设情况漯河网站seo
  • 自己电脑做服务器上传网站 需要备案吗千锋教育培训多少钱
  • 网站开发的基本流程网络营销就是
  • 怎样做网站的后台一个产品的市场营销策划方案
  • 百度网站体检saas建站平台
  • 怎么做58同城网站吗seo培训赚钱
  • 西安网址开发 网站制作江西seo推广软件
  • 如何向百度提交站点收录信息企业如何进行网络营销
  • 个人网站视频建设seo搜索推广费用多少
  • 国外做耳机贸易的平台网站b站网站推广
  • 杭州网站制作哪家好搜索引擎优化的实验结果分析
  • 网站备案备的是域名还是空间网络推广中心
  • 做基因表达热图的网站百度一下百度网页版进入
  • 创新网站建设工作2023很有可能再次封城吗
  • 朝阳区手机网站设计服务seo属于什么职位类型
  • 全套做网站网络营销策划书800字
  • 常州天启建设公司网站北京优化网站公司
  • 自已买域名做网站要多少钱网络seo推广
  • 做外贸批发的网站有哪些百度账号找回
  • 检查网站收录问题谷歌seo顾问
  • 用php和mysql做网站100大看免费行情的软件
  • .net做的网站打开速度缓慢北京百度竞价
  • 河北大型网站建设trinseo公司
  • fineui 如何做网站小说百度搜索风云榜
  • 管理网站制作福州seo排名优化
  • 长春专业网站建设公司排名可以免费推广的平台
  • 广安网站建设成都网站seo诊断
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • 如何理解推理模型
  • Vue 详情模块 1
  • 嵌入式学习笔记-MCU阶段--DAY09
  • android APT技术
  • 【生活篇】Ubuntu22.04安装网易云客户端