Kang's Blog

疯狂创作中···

中间件-dubbo之远程交互

中间件之dubbo整理总结二

  承接RPC模型,对consumer而言,Dubbo协议对每个Service默认是基于Netty单一长连接和NIO异步通讯的,适合小数据大并发的服务调用。在consumer端,会对需要调用的每个服务都创建一个服务代理bean,即Reference,该服务代理bean在consumer就是一个跟使用Spring的@Service注解修饰的普通Service类bean一样注册到spring容器...

中间件-RPC

中间件之RPC整理总结一

  Consumer端使用动态代理模式,代理远程对象,让像调用本地对象一样。   Producr端使用java反射,依据传递过来的信息反射调用原对象服务。 1 2 3 4 5 // 请求参数封装协议: String interfaceClassName;//接口名 String methodName;//方法名 Class<?>[] params;//参数类型 Object[]...

网络通信-TCP

网络通信之TCP整理总结

思考: 长连接为啥需要心跳?   这是由于网络通讯中,存在的中间节点设备,可能具有自动超时关闭作用,为了防止被自动关闭,需要一定时间后刷新链路。 TCP三次握手(SYN) 1、A->B:A发送syn=1(请求类型标识)、随机seq number到服务器B。syn码=1标识当前是希望建立连接,seq码可以认为是身份唯一标识字段。–自己进入SYN_SEND状态。 2、...

网络通信-一个简单的负载通讯

一个简单的负载通讯

外部解析到的是LVS/F5的全局服务地址,是LVS/F5再将请求转发给Nginx,Nginx转发给后端的真实服务器地址。 为什么要引入LVS/F5?   Nginx其实能处理的吞吐量是有限的,为了提高吞吐量,引入了LVD或F5。

网络通信-公私钥、https与CA数字证书

公私钥、https与CA数字证书整理总结

公钥与私钥 简单公钥与私钥图文说明   从上图可以看出,公钥加密解决了通讯链路的安全,保证在通讯过程中不出错,这是因为公钥加密的数据只能私钥解密,这种情况下,即使黑客拿到双方公钥也没用,因为公钥加密的数据没法破解。私钥的签名验证了信息来源的正确性,这是因为数字签名是发送方私钥产生的,没有办法伪造。很好的防止了黑客通过自己持有的公钥进行数据伪造。 CA证书   为了保证公钥的安全性,...

网络通信-Netty

网络通信-Netty简单总结

  Netty 是一个 异步 事件驱动 的网络应用框架,用于快速开发高性能、可扩展协议的服务器和客户端 1. 反应器设计模式 反应器设计模式(Reactor pattern)是一种为处理服务请求并发 提交到一个或者多个服务处理程序的事件设计模式。当请求抵达后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。 Reactor 模式使用的是异步非阻塞 IO,N...

网络通信-零拷贝

网络通信之零拷贝整理总结

对于IO和零拷贝的理解:   IO决定了用户如何去感知(主动?被动?阻塞?非阻塞?)到数据的变更;而拷贝方式决定了数据如何被用户拿到。零拷贝解决的是内存到内存的拷贝,只是一个为系统内存一个为应用内存,所以将两者优化后合并。 Page Cache 和 mmap   Page Cache 是 OS 对文件的缓存,用于加速对文件的读写。一般来说,程序对文件进行顺序读写的速度几乎接近于内存的读写速...

网络通信-深入理解IO

网络通信之深入理解IO整理总结

1. 基础知识回顾 1.1 用户空间和内核空间   现在操作系统都采用虚拟寻址,处理器先产生一个虚拟地址,通过地址翻译成物理地址(内存的地址),再通过总线的传递,最后处理器拿到某个物理地址返回的字节。   对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内...

Spring-常见接口与作用

Spring介绍五

Aware   Aware是感知的意思,在Spring中一般我们是不需要关注所使用的Bean的状态的,XxxAware是在框架内部使用的,当实现后,容器将会将特定的内容传递给该Bean,这些Bean将携带这些信息出来(即Bean感知到了这下信息)。 常见Aware子类 BeanNameAware:将Spring配置文件中Bean的id值传递给实现了该接口的Bean。 BeanFa...

Spring-BeanPostProcessor与AOP实现

Spring介绍四

  在《Spring-自身实例化与属性实例化》中我们提到“AOP功能就是用过InstantiationAwareBeanPostProcessor来实现的,其返回了对象的代理。”,现在来通过代码具体说明。 预获取   直接看关注的核心代码,在createBean是先通过resolveBeforeInstantiation进行了代理类的调用。 1 2 3 4 5 6 7 8 9 10 11 ...