avatar
文章
78
标签
32
分类
25
主页
归档
标签
分类
关于我
flyingzc's blog
主页
归档
标签
分类
关于我

flyingzc's blog

Zookeeper实现分布式锁
发表于2019-12-12|Zookeeper
zk实现分布式锁zk实现分布式锁的两种方式如果要自己通过 zookeeper 的原生 api 实现一个分布式独占锁的话,有两种方式: 方式1: 创建临时节点,创建失败的client注册watcher所有需要获取锁的 client 都尝试到 zk 上创建同一个临时节点.创建成功则表示成功获取锁;若创建失败,则对这个节点注册 watcher. 若获得锁的 client 释放锁(自己 delete 掉节点) 或 宕机(zk 会自动移除掉该临时节点), 其他 client 会收到 watcher 通知,再尝试去抢锁. 这种方式的问题: 很明显竞争很大.在节点失效瞬间,如果争锁的 client 较多,会有大量 client 接收 watcher 通知. 方式2: 基于临时顺序节点创建锁1.每个 client 都在 zk 同一个父节点上创建一个 临时顺序节点2.然后每个 client 获取到父节点下的所有节点并排序,判断自己是否是顺序最小的那个节点2.1.如果是,加锁成功2.2.如果不是,加锁失败.注册 watcher,只用监听自己之前的那个节点即可. 释放锁1.client1...
Dubbo Provider处理请求
发表于2019-12-05|Dubbo
服务端接收并响应请求流程provider处理请求流程 123456789101112- NettyServerWorker线程接收请求 - ByteToMessageDecoder.channelRead() - ByteToMessageDecoder.callDecode() - NettyCodecAdapter.InternalDecoder.decode() - DubboCountCodec.decode()解码 - fireChannelRead(ctx, out, size) - NettyServerHandler.channelRead() - AbstractPeer.received() - MultiMessageHandler.received() - HeartbeatHandler.received() ...
Dubbo Cluster
发表于2019-12-04|Dubbo
clusterCluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个. 集群模块处于服务提供者和消费者之间,对于服务消费者来说,集群可向其屏蔽服务提供者集群的情况,使其能够专心进行远程调用. cluster 继承结构 12345678910Cluster(com.alibaba.dubbo.rpc.cluster) MergeableCluster(com.alibaba.dubbo.rpc.cluster.support) FailfastCluster(com.alibaba.dubbo.rpc.cluster.support) MockClusterWrapper(com.alibaba.dubbo.rpc.cluster.support.wrapper) FailsafeCluster(com.alibaba.dubbo.rpc.cluster.support) ...
synchronized 和 lock 性能比较
发表于2019-12-03|Concurrent
synchronized 与 Lock 性能比较JDK1.8123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125D:\soft\Java\jdk1.8.0_172\bin\java.exe "-javaagent:D:\soft\JetBrains\IntelliJ IDEA 2018.1.6\lib\idea_rt.jar=57167:D:\soft\JetBrains\IntelliJ IDEA 2018.1.6\bin" -Dfile.encoding=UTF-8...
Dubbo 服务引用
发表于2019-11-29|Dubbo
官网 客户端服务引用客户端服务引用 demo12DemoService demoService = (DemoService) context.getBean("demoService"); // get remote service proxydemoService.sayHello("world"); dubbo 在客户端动态的生成了一个该 Interface 类型的代理类.在这个代理类中封装了远程服务调用的组件. DemoService 创建12<dubbo:reference id="demoService" group="g1" check="true" interface="com.alibaba.dubbo.demo.DemoService" client="netty4" timeout="10000" callbacks="1000"...
Dubbo 服务暴露
发表于2019-11-29|Dubbo
Dubbo 与 Spring 的结合代码在 dubbo-config 下的 dubbo-config-spring 模块中 META-INF/dubbo.xsddubbo.xsd 定义了 dubbo 自定义标签 META-INF/spring.schemasspring.schemas 指定了 dubbo.xsd 文件的位置. 1http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd META-INF/spring.handlers关联 DubboNamespaceHandler 命名空间处理器和 dubbo.xsd 中的 targetNamespace,即...
Tomcat Debug
发表于2019-11-29|Tomcat
tomcat debug方式1. tomcat远程debug,这种方式正常用于sit或者灰度环境调试问题使用,当然localhost也能这样debug.在 startup.sh 中配置 1SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=19999 方式2. 在idea中启动tomcat debug,需要添加tomcat的jar依赖.这种方式用于本地看tomcat源码或者定位本地起的项目中tomcat部分的问题时可以使用. 12345678910111213<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>7.0.82</version>...
Dubbo SPI 机制
发表于2019-11-27|Dubbo
SPI 机制SPI 作用SPI 全称为 Service Provider Interface, 是一种服务发现机制. SPI 的本质是将接口实现类的全限定名配置在文件中, 并由服务加载器读取配置文件, 加载实现类. 这样可以在运行时, 动态为接口替换实现类. 正因此特性, 我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能. Dubbo 里面有很多个组件, 每个组件在框架中都是以接口的形式抽象出来. 具体的实现又分很多种, 在程序执行时根据用户的配置来按需取接口的实现类. Dubbo 实现的 SPI 与 JDK 自带的 SPI 的区别摘自官网 JDK 标准的 SPI 会一次性实例化扩展点所有实现, 如果有扩展实现初始化很耗时, 但如果没用上也加载, 会很浪费资源. 如果扩展点加载失败, 连扩展点的名称都拿不到了.比如: JDK 标准的 ScriptEngine, 通过 getName() 获取脚本类型的名称, 但如果 RubyScriptEngine 因为所依赖的 jruby.jar 不存在, 导致 RubyScriptEngine 类加载失败,...
Dubbo 整理
发表于2019-11-26|Dubbo
整理自官网, 对整体理解 Dubbo 很有作用. 作用Apache Dubbo 是一款高性能, 轻量级的 Java RPC 框架. 三大核心能力面向接口的远程方法调用 智能容错和负载均衡 以及服务自动注册和发现 健壮性监控中心宕掉不影响使用, 只是丢失部分采样数据. 数据库宕掉后, 注册中心仍能通过缓存提供服务列表查询, 但不能注册新服务. 注册中心对等集群, 任意一台宕掉后, 将自动切换到另一台. 注册中心全部宕掉后, 服务提供者 和 服务消费者 仍能通过本地缓存通讯. 服务提供者无状态, 任意一台宕掉后, 不影响使用. 服务提供者全部宕掉后, 服务消费者应用将无法使用, 并 无限次重连等待服务提供者恢复. 伸缩性注册中心为对等集群, 可动态增加机器部署实例, 所有客户端将自动发现新的注册中心. 服务提供者无状态, 可动态增加机器部署实例, 注册中心将推送新的服务提供者信息给消费者. 协议 Dubbo 协议采用 NIO 复用单一长连接, 并使用线程池并发处理请求, 减少握手和加大并发效率, 性能较好(推荐使用)在大文件传输时, 单一连接会成为瓶颈可用于生产环境 Rmi...
git配置shadowsocks
发表于2019-11-23|tools
git 配置 shadowsocks有时候从github里clone代码速度很慢,尤其是项目很大的时候,配置代理会快很多.git config –global http.postBuffer 524288000 git config –global http.proxy socks5://127.0.0.1:10800其中10800为 shadowsocks 服务器->编辑服务器 中配置的代理端口 git取消代理git config –global –unset http.proxy
1…678
avatar
flyingzc
不积跬步无以至千里
不积小流无以成江海
文章
78
标签
32
分类
25
Follow Me
公告
FlyingZC's Blog
最新文章
LinkedIn Coral SQL 翻译实现原理2025-04-09
LinkedIn Coral 编译&SQL翻译使用2025-03-07
H2 Database 事务隔离性实现原理2024-11-12
H2 Database Select 语句执行流程2024-10-24
H2 Database 事务 Rollback 流程实现原理2024-10-16
分类
  • ADB1
  • AI1
  • Concurrent2
  • Coral2
  • Data Structure1
  • Docker1
  • Dubbo7
  • H29
标签
Otter SpringBoot Narayana Redis ShardingSphere Coral spring ADB springboot SQL-Parse Zookeeper Tool Dubbo Ubuntu Spring Hotspot Concurrent MySQL Data Structure Docker Android Ubuntu Desktop Percolator Database git Transaction Tomcat H2 Omid Termux Paddle Linux
归档
  • 四月 2025 1
  • 三月 2025 1
  • 十一月 2024 1
  • 十月 2024 4
  • 九月 2024 2
  • 八月 2024 2
  • 七月 2024 5
  • 六月 2024 2
网站信息
文章数目 :
78
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2020 - 2025 By flyingzc