摘要:
RestFul和RPC的区别 1、从本质区别上看,RPC是基于TCP实现的,RESTFUL是基于HTTP来实现的。 2、从传输速度上来看,因为HTTP封装的数据量更多所以数据传输量更大,所以RPC的传输速度是比RESTFUL更快的。 3、因为HTTP协议是各个框架都普遍支持的。在toC情况下,因为不 阅读全文
摘要:
RestFul和RPC的区别 1、从本质区别上看,RPC是基于TCP实现的,RESTFUL是基于HTTP来实现的。 2、从传输速度上来看,因为HTTP封装的数据量更多所以数据传输量更大,所以RPC的传输速度是比RESTFUL更快的。 3、因为HTTP协议是各个框架都普遍支持的。在toC情况下,因为不 阅读全文
摘要:
叙述 关于java字节码的处理,目前有很多工具,如javassist,bcel,asm,cglib,以及jdk6引入的JavaCompiler等。 其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库; 而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令。这些实现都需要直接跟虚拟机 阅读全文
摘要:
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署 阅读全文
摘要:
一、同步调用 默认情况下,我们通过Dubbo调用一个服务,需得等服务端执行完全部逻辑,方法才得以返回。这个就是同步调用。 但大家是否考虑过另外一个问题,Dubbo底层网络通信采用Netty,而Netty是异步的;那么它是怎么将请求转换成同步的呢? 首先我们来看请求方,在DubboInvoker类中, 阅读全文
摘要:
前言 当我们的Dubbo应用出现多个服务提供者时,服务消费者如何选择哪一个来调用呢?这就涉及到负载均衡算法。 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每 阅读全文
摘要:
前言 在上一章节,我们曾提到这样一个问题:当调用服务失败后,我们怎么处理当前的请求?抛出异常亦或是重试? 为了解决这个问题,Dubbo 定义了集群接口 Cluster 以及 Cluster Invoker。集群 Cluster 用途是将多个服务提供者合并为一个 Cluster Invoker,并将这 阅读全文
摘要:
前言 在上一章节的内容中,我们分析了服务引用的具体流程。在大多数情况下,为避免单点故障,我们的应用会部署在多台服务器上。对于我们的Dubbo而言,就会出现多个服务提供者。而且这些服务也并非是一成不变的,那么就有这样一个问题:有新的服务提供者加入或者禁用、修改已有的服务提供者,那么服务消费者怎么及时感 阅读全文
摘要:
前言 在前面的章节中,我们已经完成Dubbo服务暴露的流程分析。今天我们一起来看Dubbo怎么引用这些服务的。 关于服务引用,Dubbo有两种方式。一种是基于注册中心进行服务引用,一种是服务直连进行引用。服务直连主要用于测试联调阶段,生产环境不推荐使用。它的配置也比较简单,在消费者端指定服务url即 阅读全文
摘要:
一、服务暴露 private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker) { String key = getCacheKey(originInvoker); //首先尝试从缓存中获取 阅读全文
摘要:
清幽之地关注 0.8352019.01.03 16:31:26字数 1,995阅读 892 前言 我们在第2章节里面,已经讲到Dubbo的初始化流程。Dubbo的初始化是随着Spring容器Bean的实例化而进行的,今天我们重点看这样一个节点,它在配置文件中是这样的:<dubbo:service i 阅读全文
|