09 2018 档案
摘要:【使用usingWatcher()】 [提前写好两个实现类] 【原生Watcher代码示例】 【运行结果】 【CuratorWatcher事件代码示例】 【运行结果】 与上面一致。
阅读全文
摘要:【zk原生api的不足之处】 * 不能自动超时重连,需要手动操作 * watcher事件注册一次后就会失效 * 不支持递归创建节点 【 Apache curator 】 * 解决了watcher的注册一次就失效的问题 * api相对更加简单易用 * 提供更多的解决方案并且实现简单:如分布式锁 * 提
阅读全文
摘要:【Zookeeper构造方法概述】 【Zookeeper API 客户端连接服务端例子】 【运行结果】 【使用CountDownLatch优化zk连接过程】 【运行结果】 【创建节点】 【创建一个临时节点】 【运行结果 直接看打开zkCli.sh连接】 【创建持久节点,并且产生一个回调通知】 【运行
阅读全文
摘要:【ACL概述】 ACL:access control Lists,权限控制。 * 针对节点可以设置相关的读写等权限,目的是为了保障数据安全性。 * 权限permissions可以指定不同的权限范围以及角色。 【ACL命令行】 [ getAcl ] 获取某个节点的ACL权限信息。 [ setAcl ]
阅读全文
摘要:【watcher简述】 * zk针对每个节点的操作,都会有一个监督者:watcher * 当监控的某个对象(znode)发生了变化,则出发watcher * zk中的watcher是一次性的,出发后立即销毁 * 父节点,子节点增删改都能触发其watcher * 针对不同类型的操作,触发的watche
阅读全文
摘要:【Zookeeper基本数据模型及注意点】 * zk的数据模型可以类比为Linux的文件目录,是一种树状结构,如:/dubbo/com.service.DemoService/provider.... * 每一个节点都称之为znode,它可以有子节点,也可以有数据。 * 每个节点分为临时节点和永久节
阅读全文
摘要:【zoo.cfg】 * tickTime:用于计算的时间单元。比如session超时:N*tickTime * initLimit:用于集群,允许从节点连接并且同步到master节点的初始化连接时间,以tickTime的倍数来表示。 * syncLimit:用于集群,master主节点与从节点之间发
阅读全文
摘要:【Zookeeper应用场景】 zookeeper作为一个开源的分布式应用协调系统,已经用到了许多分布式项目中,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作。 【Zookeeper特性】 [ 一致性 ] 数据一致性,数据按照顺序分批入库。 [ 原子性 ] 事务要么成功要
阅读全文
摘要:【 启动服务的日志分析 】 1.暴露本地服务 2.暴露远程服务 3.启动Netty 4.打开zk连接 5.将服务信息注册到zk 6.监听zk 【 暴露本地服务和暴露远程服务的区别 】 1.暴露本地服务 指暴露在用一个JVM里面,不用通过调用zk进行远程通信,例如:在同一个服务,自己调用自己的接口,没
阅读全文
摘要:【 项目工程 】 【 Person.java 模型类 】 【 自定义的person.xsd文件 】 [ 说明 ] 1.定义targetNamespace="http://higgin.com/schema"中,targetNamespace表示目标命名空间,xmlns的值要和这个相同 2.xsd:e
阅读全文
摘要:【开始解析最后一行代码 ExtensionLoader.getAdaptiveExtension()】 【getAdaptiveExtension()调用结果】 【 createAdaptiveExtensionClass()源码 】 【createAdaptiveExtensionClassCod
阅读全文
摘要:【简述】 Javassist是一个开源的java字节码操作工具,主要是对已经编译好class文件进行修改和处理,可以直接检查、修改、创建 java类。 【javassist实例】 【运行结果】
阅读全文
摘要:【对这行代码进行源码分析】 【对上面第二行代码进行源码分析】 先看下第一行代码执行后的ExtensionLoader实例化的结果 其中 * type =interface com.alibaba.dubbo.rpc.Protocol * ExtensionFactory objectFactory
阅读全文
摘要:【dubbo的IOC实现方法】 dubbo的IOC具体实现在:T injectExtension( T instance )方法中,该方法在3个地方被使用: 【 injectExtension( T instance )源码】 injectExtension( T instance )方法的作用是通
阅读全文
摘要:【Adaptive注解】 【Adaptive分别作用在类或方法上】 作用在类上 作用在方法上 【@Adaptive注解在类上和方法上的区别】 1.注解在类上 代表人工实现编码,即实现了一个装饰类,例如ExtensionFactory 2.注解在方法上 代表自动生成和编译一个动态的adaptive类,
阅读全文
摘要:【dubbo为什么不采用JDK自带的SPI】 1.JDK自带的SPI(ServiceLoader)会一次性实例化扩展点所有实现,基本只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果我们不想使用某些类,它也会被加载并且实例化,这就导致了浪费。 2.增加了对扩展点IOC和AOP的支持,
阅读全文
摘要:【SPI的设计目标】 面向对象的设计里,模块之间是基于接口编程,模块之间不对实现类进行硬编码。 一旦代码里设计具体的实现类,就违法了可插拔的原则,如果需要替代一种实现,就要修改代码。 为了实现在模块装配的时候,不在模块里面写死代码,就需要一种服务发现机制。 Java spi 就是提供了这样一种机制:
阅读全文

浙公网安备 33010602011771号