Dubbo(最近一直在看-1源码的部分 。Netty 源码-内存泄漏检测toLeakAwareBufferNetty在实现ByteBuf时采用引用计数法回收ByteBuf,使用引用计数法回收的ByteBuf扩展了AbstractReferenceCountedBytebuf类,使用AbstractReferenceCountedBytebuf时,需要调用AbstractReferenceCountedBytebuf,Retain方法来递增引用计数器,使用时需要调用AbstractReferenceCountedBytebuf,释演法递减参考计数器 。当计数器为0时,ByteBuf将被回收:入池的ByteBuf不会释放实际内存,而是将占用的内存返回内存池 , 非入池的ByteBuf则直接释放内存(为了简单起见,后面释放内存是指实际释放内存或者将内存返回内存池) 。
1、3.Dubbo服务提供端请求处理流程 2、硬核!Dubbo分布式服务框架入门教程【dubbo netty源码分析,Netty源码分析】Dubbo是阿里的一个开源项目,国内很多互联网公司都在用,已经通过了很多在线测试 。Dubbo中使用了Netty和Zookeeper,保证了高性能和高可用性 。有了Dubbo,核心服务可以提取为独立的服务,逐步形成稳定的服务中心,用于提高业务复用和灵活扩展,使前端应用更快地响应不断变化的市场需求 。此外,分布式架构可以承载更大规模的并发流量 。
网站流量很小的时候,只需要一个应用,下面的单笔支付等所有功能一起部署,减少部署节点和成本 。缺点:单一的系统架构在开发过程中占用的资源越来越多 , 随着流量的增加,维护垂直应用架构越来越困难,解决了单一应用架构面临的扩展问题 。流量可以分散在各个子系统之间,系统的体积可控 , 在一定程度上降低了开发者之间的协作和维护成本,提高了开发效率 。
3、 dubbo泛化调用使用及原理解析通常当我们要调用别人的dubbo服务时 , 需要将相应的jar包引入到项目中 。广义调用的作用是我们可以不依赖相关的jar包来调用服务 。这个特性一般用在网关项目中,在业务开发中基本不会用到 。假设我想调用下面的接口服务,在xml文件中进行下面的配置,然后将它注入其中 。在两种调用方法中,我们都需要使用被调用接口的字符串参数生成GenericService,通过GenericService的$invoke间接调用目标接口的接口 。
可以看出 , 泛化调用的复杂性之一在于$invoke的第三个参数的组装 。下面是调用复杂参数的一些方法 。首先,提供者接口类似于参数 。虽然$invoke的返回定义为Object,但实际上对于不同的类型有不同的返回 。广义调用和消费者端直接调用的区别在于,我们调用服务时使用的接口是GenericService,方法是$invoker 。
4、 源码修炼笔记之Dubbo线程池策略FixedThreadPoolfixThreadPool通过ThreadPoolExecutor在内部创建线程 。核心线程数和最大线程数是上下文中指定的线程数 。因为没有空闲线程,所以keepAliveTime为0 。当queues0为0时,会创建一个SynchronousQueue来阻塞队列 。当queues0时,创建一个绑定的阻塞队列LinkedBlockingQueue 。