![](https://img-blog.csdnimg.cn/20210401101449897.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
RPC框架
文章平均质量分 84
RPC框架有dubbo eurake……
庄小焱
我是庄小焱,某大厂Java高级工程师、PMP项目管理专家、系统架构设计师(高级)、CSDN博文专家。 博主在支付领域,金融领域、订单履约领域不断学习,同时在博客中分享自己学习知识和相关技术, 欢迎大家和我交流学习,欢迎大家关注我的博客。
展开
-
Dubbo——Dubbo面试问题
摘要主要是介绍一些有关于的Dubbo的RPC的面试问题Dubbo服务提供者发布服务的流程1) 暴露服务到本地 2) 暴露服务到远程 3) 启动netty服务 4) 连接zookeeper 5) 注册服务到zookeeper 6) 监听zookeeper中消费服务Dubbo服务消费者消费服务的流程什么是本地暴露和远程暴露,他们的区别下面来看本地暴露于远程暴露的区别:本地暴露是暴露在本机JVM中,调用本地服务不需要网络通信.远程暴露是将ip,端口等信息暴露给远程客原创 2021-04-01 15:41:53 · 1011 阅读 · 0 评论 -
Dubbo——错误集合
dubbo注册zookeeper报错:Failed to register dubbo://192.168.137.1:20880/com.youfan.service.SayHelloService?anyhost=true&applilog4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).log4j:WARN Please initiali原创 2021-12-05 17:37:12 · 325 阅读 · 1 评论 -
Dubbo——架构设计模式
摘要本文主要是学习Dubbo框架的设计模式,这个对于架构设计人员有很大参考价值,架构设计与我们的业务的架构设计不一样。架构分层设计思想博文参考原创 2021-12-07 09:31:24 · 578 阅读 · 0 评论 -
Dubbo——dubboX3.0原理概述
摘要主要是的Dubbo的面试的常见问题。博文来源于是:https://juejin.cn/post/6882522177485144072#heading-2服务暴露的流程服务的暴露起始于 Spring IOC 容器刷新完毕之后,会根据配置参数组装成 URL, 然后根据 URL 的参数来进行本地或者远程调用。会通过 proxyFactory.getInvoker,利用 javassist 来进行动态代理,封装真的实现类,然后再通过 URL 参数选择对应的协议来进行 protocol.ex原创 2021-04-02 08:39:53 · 451 阅读 · 1 评论 -
Dubbo——远程(RPC)调用原理
摘要主要是讲述Dubbo的RPC调用原理。并将原理和源码进行分析和测试。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构:当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,原创 2021-04-01 12:05:53 · 6330 阅读 · 0 评论 -
Dubbo——扩展(SPI)加载原理
摘要Dubbo良好的扩展性与两个方面是密不可分的,一是整个框架中针对不同的场景,恰到好处地使用了各种设计模式,二就是本章要介绍的加载机制。基于Dubbo SPI加载机制,让整个框架的接口和具体实现完全解耦,从而奠定了整个框架良好可扩展性的基础。Dubbo定义了良好框架结构,它默认提供了很多可以直接使用的扩展点。Dubbo几乎所的功能组件都是基于扩展机制〈SPI)实现的这些扩展点将在第8章核心扩展点中进行介绍。Dubbo SPI没有直接使用Java SPI,而是在它的思想上又做了一定的改进,形成了一套自己原创 2021-04-10 16:36:23 · 679 阅读 · 0 评论 -
Dubbo——代理(Proxy)模式原理
摘要动态代理机制在 Java 中有着广泛的应用,例如,Spring AOP、MyBatis、Hibernate 等常用的开源框架,都使用到了动态代理机制。当然,Dubbo 中也使用到了动态代理,Dubbo 使用动态代理机制来屏蔽底层的网络传输以及服务发现。本博文将详细的介绍代理模式在dubbo的原理。一、静态代理模式图中的 Subject 是程序中的业务逻辑接口,RealSubject 是实现了 Subject 接口的真正业务类,Proxy 是实现了 Subject 接口的代理类,封装了一个原创 2021-12-26 15:34:20 · 2709 阅读 · 0 评论 -
Dubbo——服务注册(Provider)原理与源码解析
摘要主要是介绍Dubbo服务暴露过程原理与分析。博文来源于:https://juejin.cn/post/6874731589243240461URL不过在进行服务暴露流程分析之前有必要先谈一谈 URL,有人说这 URL 和 Dubbo 啥关系?有关系,有很大的关系!一般而言我们说的 URL 指的就是统一资源定位符,在网络上一般指代地址,本质上看其实就是一串包含特殊格式的字符串,标准格式如下:protocol://username:password@host:port/path?key=v原创 2021-04-01 16:30:24 · 1101 阅读 · 0 评论 -
Dubbo——服务发现(consume)原理与源码解析
摘要主要是讲解Dubbo中的服务引入过程。来源:https://juejin.cn/post/6875109006549975047服务引用大致流程我们已经得知 Provider将自己的服务暴露出来,注册到注册中心,而 Consumer 无非就是通过一波操作从注册中心得知 Provider 的信息,然后自己封装一个调用类和 Provider 进行深入地交流。而之前已经提到在 Dubbo中一个可执行体就是 Invoker,所有调用都要向 Invoker 靠拢,因此可以推断出应该要先生成一个 Inv原创 2021-04-02 08:37:01 · 1319 阅读 · 6 评论 -
Dubbo——线程模型(Netty-Reactor)原理
摘要主要是的介绍的Dubbo的原理和源码分析的内容。https://zhuanlan.zhihu.com/p/95219391。原创 2021-03-29 10:17:44 · 834 阅读 · 2 评论 -
Dubbo——序列化(Serialize)协议原理
摘要Dubbo 就依靠 SPI 机制实现了插件化功能,几乎将所有的功能组件做成基于 SPI 实现,并且默认提供了很多可以直接使用的扩展点,实现了面向功能进行拆分的对扩展开放的架构。什么是 SPISPI (Service Provider Interface),主要是用来在框架中使用的,最常见和莫过于我们在访问数据库时候用到的java.sql.Driver接口了。你想一下首先市面上的数据库五花八门,不同的数据库底层协议的大不相同,所以首先需要定制一个接口,来约束一下这些数据库,使得 Java 语言原创 2021-04-02 08:36:27 · 2836 阅读 · 0 评论 -
Dubbo——通信框架与通信协议(dubbo协议)原理
摘要博文参考原创 2021-12-26 22:16:49 · 1531 阅读 · 0 评论 -
Dubbo——注册中心(zookeeper)原理
摘要因为dubbo是一个分布式的RPC开源框架,各个服务之间单独部署,就会出现资源之间不一致的问题。而zookeeper就有保证分布式一致性的特性。ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务。zookeeper采用的是树形结构来组织数据节点,它类似于一个标准的文件系统。该图是官方文档里面的一张图,展示了dubbo在zookeeper中存储的形式以及节点层级,dubbo的Root层是根目录,通过<dubbo:registry group="dubbo"原创 2021-12-07 22:03:58 · 2373 阅读 · 2 评论 -
Dubbo——注册中心(etcd)原理
摘要本博文将详细的介绍Dubbo的注册中心扩展知识。介绍etcd数据结构要如何设计,构建可运行的etcd注册中心扩展的接口。把实现的扩展注册中心在Dubbo中运行。为什么使用etcd为注册中心etcd是一种分布式键值存储系统,它提供了可靠的集群存储数据的途径。它是开源的,可以在GitHub上找到它的源码。etcd使用了 Raft算法保证集群中数据的一致性,当leader节点下线时会自动触发新的leader选举,以此容忍机器的故障。应用可以在etcd中读写数据,例如:把一些参数性的信息通过key-原创 2021-12-12 12:14:41 · 2188 阅读 · 2 评论 -
Dubbo——集群(Cluster)容错原理
摘要Dubbo 框架中的分层代表了不同的逻辑实现,它们是一个个组件,这些组件构成了整个Dubbo体系,在使用方角度更多接触到的可能是配置,更多底层构件被抽象和隐藏了,同时提供了非常高的扩展性。Dubbo框架之所以能够做到高扩展性,受益于各个组件职责分明的设计,每个组件提供灵活的扩展点,如表1-2所示。因此我们先介绍一下服务的暴露过程。首先,服务器端(服务提供者〉在框架启动时,会初始化服务实例,通过Proxy组件调用具体协议( Protocol ),把服务端要暴露的接口封装成Invoker(真原创 2021-04-09 20:49:39 · 931 阅读 · 0 评论 -
Dubbo——负载均衡(LoadBalance)原理
摘要当一台服务器的承受能力达到上限时,那么就需要多台服务器来组成集群,提升应用整体的吞吐量,那么这个时候就涉及到如何合理分配客户端请求到集群中不同的机器,这个过程就叫做负载均衡。LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡原创 2021-04-01 12:56:35 · 3506 阅读 · 1 评论 -
Dubbo——海量定时任务(时间轮)
摘要在很多开源框架中,都需要定时任务的管理功能,例如 ZooKeeper、Netty、Quartz、Kafka 以及 Linux 操作系统。JDK 提供的 java.util.Timer 和 DelayedQueue 等工具类,可以帮助我们实现简单的定时任务管理,其底层实现使用的是堆(平衡二叉树)这种数据结构,存取操作的复杂度都是 O(nlog(n)),无法支持大量的定时任务。在定时任务量比较大、性能要求比较高的场景中,为了将定时任务的存取操作以及取消操作的时间复杂度降为 O(1),一般会使用时间轮的方原创 2021-12-16 18:35:14 · 1824 阅读 · 0 评论 -
Dubbo——服务治理(dubbo-Admin)平台
摘要本章将详细探讨Dubbo配置的设计模型、服务暴露的原理、服务消费的原理和优雅停机的原理。首先,学习优雅的分层配置设计,能够帮助我们更好地理解框架的启动配置逻辑,不管是注解还是XML 配置都需要配置对象来承载。然后探讨服务暴露和服务消费的细节。最后研究优雅停机特性,能够保证线上服务和消费方平滑地退出。Dubbo配置解析;基于schema设计解析Spring框架对Java产生了深远的影响,Dubbo 框架也直接集成了Spring 的能力,利用Spring配置文件扩展出自定义的解析方式。Dub原创 2021-04-10 17:03:18 · 775 阅读 · 0 评论 -
Dubbo——路由(Router)规则原理
摘要我们这次宕机的是业务逻辑层,那按照目前使用 Dubbo 轮询的负载均衡方式,不是还会有交易分发到宕机那台应用上,这些交易请求显然会异常。这是因为 Dubbo 内部会自动帮我们的摘除宕机的应用节点。Dubbo 服务注册发现流程我们目前使用 ZooKeeper 当做服务注册中心,ZooKeeper 可以简单理解成是一个 KV系统,内部是一个树形的数据结构。Dubbo 默认将会在 ZooKeeper 中创建一个四层的数据结构,从上到下分别为:Root Service Catego.原创 2021-04-09 12:55:12 · 2380 阅读 · 0 评论 -
Dubbo——分布式事务原理
摘要博文参考原创 2021-12-06 18:53:45 · 246 阅读 · 0 评论 -
Dubbo——本地缓存和重试机制原理
摘要主要是的分析的Dubbo的注册中心。首先介绍整个注册中心的总体工作流程;其次讲解不同类型注册中心的数据结构和实现原理;接着讲解注册中心支持的通用特性,如缓存机制、重试机制;最后会对整个注册中心的设计模式做深入解析读者可以深入理解Dubbo各种注册中心的实现原理,方便后续快速理解并扩展注册中心。注册中心的工作流程在 Dubbo微服务体系中,注册中心是其核心组件之一。Dubbo通过注册中心实现了分布式环境中各服务之间的注册与发现,是各个分布式节点之间的纽带。其主要作用如下:动态加入。一个服务原创 2021-04-09 20:53:59 · 1898 阅读 · 0 评论 -
Dubbo——手写简单版Dubbo框架
摘要博文参考原创 2021-12-06 21:14:22 · 950 阅读 · 0 评论 -
Dubbo——未来的展望
摘要框架的发展可以推动业务更高速地发展,业务的高速发展很快又会遇到众多新的问题,从而对框架提出新的要求。因此,我们可以从现在互联网业务的趋势来得知未来技术的趋势。首先是业务规模的不断扩大,未来技术的必然趋势是单体应用向微服务的转化,为了方便各种不同语言开发的单体应用,能方便地迁移到分布式应用,Dubbo肯定会支持多语言。Dubbo也会变得更加轻量化,降低框架对业务应用的体积影响。其次,Spring Boot系列无疑是现在Java应用开发的首选,为了符合主流开发习惯,Dubbo还会支持REST及Spr原创 2021-12-12 00:07:26 · 398 阅读 · 0 评论