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

苏州网站seo服务上海企业seo

苏州网站seo服务,上海企业seo,泰安房产网签成交数据,c2c网站代表总览 学习 Dubbo 的服务发现机制,可以从以下几方面入手: 注册中心的配置服务的注册客户端拉取服务列表服务列表的本地缓存服务提供者列表变更的监听机制服务发现的接口设计 注册中心的配置 Dubbo 通过解析用户配置决定使用的注册中心。比如用户配置了…

总览

学习 Dubbo 的服务发现机制,可以从以下几方面入手:

  1. 注册中心的配置
  2. 服务的注册
  3. 客户端拉取服务列表
  4. 服务列表的本地缓存
  5. 服务提供者列表变更的监听机制
  6. 服务发现的接口设计

注册中心的配置

Dubbo 通过解析用户配置决定使用的注册中心。比如用户配置了 zookeeper://127.0.0.1:2181,Dubbo 在导出服务时解析出 name = zookeeper,便拿着这个名字到 ExtensionLoader 加载得到 ZookeeperServiceDiscoveryFactory,该工厂类生产出 ZookeeperServiceDiscovery,后续 ServiceDiscoveryRegistry 便可以通过调用 ZookeeperServiceDiscovery 的 doRegister 方法注册服务。

服务的注册

Spring 执行 refresh 方法后会触发 Dubbo 将服务注册到注册中心。

Spring 的 AbstractApplicationContext 执行 refresh 方法返回前,会发布 ContextRefreshedEvent, DubboBootstrapApplicationListener 接收到 ContextRefreshedEvent 后,会初始化并导出服务,最后将服务注册到注册中心。

/*** An ApplicationListener to control Dubbo application.*/
public class DubboDeployApplicationListenerimplements ApplicationListener<ApplicationContextEvent>, ApplicationContextAware, Ordered {@Overridepublic void onApplicationEvent(ApplicationContextEvent event) {if (nullSafeEquals(applicationContext, event.getSource())) {if (event instanceof ContextRefreshedEvent) {onContextRefreshedEvent((ContextRefreshedEvent) event);}...}}private void onContextRefreshedEvent(ContextRefreshedEvent event) {ModuleDeployer deployer = moduleModel.getDeployer();Assert.notNull(deployer, "Module deployer is null");Object singletonMutex = LockUtils.getSingletonMutex(applicationContext);// start moduleFuture future = null;synchronized (singletonMutex) {future = deployer.start();}...}
}

ModuleDeployer 在 start 方法中调用了 registerServices 方法,完成了服务的注册。其调用链如下:

ModuleDeployer.registerServices -> ModuleDeployer.registerServiceInternal
-> ServiceConfigBase.register -> Exporter.register

其中,ModuleDeployer.registerServiceInternal 遍历 configManager 中的每一个服务,逐个对它们进行注册。

Exporter.register 实际调用的类视注册中心的不同而不同,以 ZooKeeper 为例,通过模版方法实现服务注册:

public abstract class FailbackRegistry extends AbstractRegistry {@Overridepublic void register(URL url) {if (!shouldRegister(url)) {return;}super.register(url);removeFailedRegistered(url);removeFailedUnregistered(url);try {// Sending a registration request to the server sidedoRegister(url);} catch (Exception e) {Throwable t = e;// If the startup detection is opened, the Exception is thrown directly.boolean check = getUrl().getParameter(Constants.CHECK_KEY, true)&& url.getParameter(Constants.CHECK_KEY, true)&& (url.getPort() != 0);boolean skipFailback = t instanceof SkipFailbackWrapperException;if (check || skipFailback) {if (skipFailback) {t = t.getCause();}throw new IllegalStateException("Failed to register " + url + " to registry " + getUrl().getAddress() + ", cause: "+ t.getMessage(),t);} else {logger.error(INTERNAL_ERROR,"unknown error in registry module","","Failed to register " + url + ", waiting for retry, cause: " + t.getMessage(),t);}// Record a failed registration request to a failed list, retry regularlyaddFailedRegistered(url);}}
}

doRegister 仅仅是在 Zookeeper 创建一个 ZNode(Zookeeper 文件系统中的节点):

    @Overridepublic void doRegister(URL url) {try {checkDestroyed();zkClient.create(toUrlPath(url), url.getParameter(DYNAMIC_KEY, true), true);} catch (Throwable e) {throw new RpcException("Failed to register " + url + " to zookeeper " + getUrl() + ", cause: " + e.getMessage(), e);}}
http://www.dtcms.com/wzjs/73642.html

相关文章:

  • 试用网站 建站西安百度seo代理
  • wordpress 卡通插件站长之家seo综合查询
  • 求网站建设详细过程搜索引擎优化的英文
  • 建设境外网站aso网站
  • 网络广告的特点逆冬seo
  • 网站建设公司营业执照图片痘痘该怎么去除效果好
  • 免费创建手机网站网络营销策略理论
  • 怎样自己免费搭建网站营业推广的概念
  • 百度运营培训班seo是什么平台
  • 天津高端网站建设全网投放广告的渠道有哪些
  • 尚品本色木门网站是哪个公司做的百度最新秒收录方法2023
  • 眼科医院网站做竞价带来的询盘量淘宝权重查询入口
  • 免费制作网页东莞seo建站优化哪里好
  • 深圳宝安做网站的公司市场营销一般在哪上班
  • 百度的推广广告站长工具seo综合查询 分析
  • 网站企业建设方案电商平台哪个最好最可靠
  • 广州市财贸建设开发监理网站在线识别图片来源
  • 网站制作销售术语seo优化教程培训
  • 西安信息网站建设网络优化seo
  • 南通模板建站多少钱怎么自己注册网站
  • 内蒙古工程建设网站百度一下首页网页手机版
  • 中国电力建设集团网站手机端搜索引擎排名
  • 学校网站集群建设免费引流推广的方法
  • 网站建设ftp软件有哪些网店推广实训报告
  • 西安网站推广方案网络推广软文范文
  • 广州搜域网络提供专业的网站建设优化大师官网登录入口
  • 南昌专业做网站seo优化标题
  • 昆山做百度网站app开发需要哪些技术
  • 成都网站建设怎么样12345浏览器
  • 网站挂马处理百度快照制作链接的app的软件