分布式
文章平均质量分 96
Allen-xs
一个工作60年的程序员
展开
-
Dubbo源码解析一网络通信原理
集群就是单机的多实例, 在多个服务器上部署部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群Directory:它代表多个Invoker,从methodInvokerMap提取,但是他的值是动态,例如注册中心的变更Router:负责从多个Invoker中按路由规则选出子集,例如应用隔离或读写分离或灰度发布等等Cluster:将Directory中的多个Invoker伪装成一个Invoker,来容错,调用失败重试。原创 2023-06-03 19:11:01 · 827 阅读 · 2 评论 -
Dubbo源码解析一服务暴露与发现
在 Dubbo 中,可以使用 XML 配置相关信息来引入服务或者导出服务(也可以使用注解)。配置完成,启动工程,Spring 会读取配置文件,生成注入相关Bean从 Spring 2.0 开始,Spring 开始提供了一种基于 XML Schema 格式扩展机制,用于自定义和配置 bean,从而被spring框架所解析。原创 2023-05-27 14:41:24 · 1259 阅读 · 0 评论 -
Dubbo源码解析一Dubbo SPI
在面向的对象的设计里,不同模块之间推崇面向接口编程,不建议在模块中对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。SPI使得程序能在ClassPath路径下的META-INF/services文件夹查找接口的实现类,自动加载文件里所定义的实现类原创 2023-05-10 22:08:28 · 671 阅读 · 0 评论 -
Netty通信技术进阶二
Netty中提供了ByteToMessageDecoder的抽象实现,自定义解码器只需要继承该类,实现decode()即可。Netty也提供了一些常用的解码器实现,用于数据入站的解码操作,基本都是开箱即用的;当然数据出站也需要采用对应的编码器。原创 2023-04-18 22:40:17 · 539 阅读 · 0 评论 -
Netty通信技术进阶一
5)在以上两个processSelectedKeys步骤中,会使用Pipeline(管道),Pipeline中引用了Channel,即通过Pipeline可以获取到对应的Channel,Pipeline中维护了很多的处理器(拦截处理器、过滤处理器、自定义处理器等)Netty中的Channel是与网络套接字相关的,可以理解为是socket连接,在客户端与服务端连接的时候就会建立一个Channel,它负责基本的IO操作,比如:bind()、connect(),read(),write() 等。原创 2023-04-17 00:19:42 · 369 阅读 · 1 评论 -
Reactor线程模型
doAccept为主要处理连接接收代码, selector接收到客户端请求, 接收到一个SocketChannel, 将其添加到selecor thread(IO检测线程)中, 其中获取selecor thread时采用迭代器实现轮询(round robin)的效果, 目的将SocketChannel平均分配到selecor thread的队列中。在业务线程BusinessHandler中, 反序列化接收到的数据, 处理业务逻辑, 最终在上下文中写出响应数据。变种reactor线程比例。原创 2023-04-14 21:49:52 · 1765 阅读 · 0 评论