Dubbo

Dubbo

大憨熊 提交于 2020-03-05 21:31:16
第一章:应用架构的演进过程 1.1-单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 1.2-垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 1.3-分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。 1.4-流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。 第二章:RPC(远程过程调用) 2.1-认识RPC Remote Procedure Call 远程过程调用,是分布式架构的核心,按响应方式分如下两种: 同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作。 异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续自己的操作。 是一种进程间的通信方式 它允许应用程序调用网络上的另一个应用程序中的方法

Dubbo源码解析之SPI(一):扩展类的加载过程

故事扮演 提交于 2020-03-05 15:43:41
Dubbo是一款开源的、高性能且轻量级的Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。 Dubbo最早是阿里公司内部的RPC框架,于 2011 年开源,之后迅速成为国内该类开源项目的佼佼者,2018年2月,通过投票正式成为 Apache基金会孵化项目。目前宜信公司内部也有不少项目在使用Dubbo。 本系列文章通过拆解Dubbo源码,帮助大家了解Dubbo,做到知其然,并且知其所以然。 一、JDK SPI 1.1 什么是SPI? SPI(Service Provider Interface),即服务提供方接口,是JDK内置的一种服务提供机制。在写程序的时候,一般都推荐面向接口编程,这样做的好处是:降低了程序的耦合性,有利于程序的扩展。 SPI也秉承这种理念,提供了统一的服务接口,服务提供商可以各自提供自己的具体实现。大家都熟知的JDBC中用的就是基于这种机制来发现驱动提供商,不管是Oracle也好,MySQL也罢,在编写代码时都一样,只不过引用的jar包不同而已。后来这种理念也被运用于各种架构之中,比如Dubbo、Eleasticsearch。 1.2 JDK SPI的小栗子 SPI 的实现方式是将接口实现类的全限定名配置在文件中,由服务加载器读取配置文件,加载实现类。 了解了概念后,来看一个具体的例子。 1

简单的Dubbo笔记

老子叫甜甜 提交于 2020-03-05 07:16:34
Dubbo 是一款高性能的java RPC框架; 三大核心能力: 面向接口的远程调用, 只能容错和负载均衡, 服务自动注册和发现; Dubbo官方推荐zookeeper来作为服务的注册中心; 原理是: 扫描加了@Service的类并注册到zookeeper中,注入使用Dubbo提供的@Reference注解, Dubbo支持的协议有很多种: Dubbo 协议 http 协议 rest协议等等; 注意: 被事务管理的类无法注册到zookeeper中;原因是Spring默认使用的是JDK动态代理,而这种代理产生的代理每次会不一样,所以当Dubbo在发布服务前进行包匹配时就无法完成匹配; 解决办法是: 切换Spring的动态代理,使用cglib动态代理的方式,还需要在@ Service注解中加入interfaceClass属性,指定服务的接口类型; 来源: CSDN 作者: 素颜淡笑 链接: https://blog.csdn.net/qq_45542344/article/details/104630326

2020/03/03面经  

余生颓废 提交于 2020-03-04 11:08:01
2020/03/03面经 后续整理补充答案 常用的分布式锁 redis 持久化机制 redis的数据结构 redis是怎么实现分布式锁 dubbo是使用哪种序列化方式 dubbo底层是怎么通信的 调用流程 dubbo的负载均衡和集群容错 zookeeper有哪几种节点 线程的生命周期 sleep() wait () 区别 线程池基本组成部分、线程池种类 JVM-内存模型 四种垃圾回收算法 新生代的From Survivor、To Survivor 分区 rocketmq如何判断某台提供者已宕机? SPI机制 Dubbo的SPI和JDK的SPI的区别 dubbo的工作原理 dubbo的心跳机制 dubbo底层之netty 来源: oschina 链接: https://my.oschina.net/AnniHome/blog/3187730

【jmeter】dubbo 枚举数据类型

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-04 00:13:58
在使用jmeter编写dubbo压测接口时,发现参数是枚举类型时出现错误 代码中com.lluozh.api.UserProperty,是一个自定义的枚举类,该枚举有3个值:PHONE、SMS、EMAIl 2020 - 03 - 03 20 : 01 : 55 , 635 ERROR i . g . n . j . p . d . s . DubboSample : Exception: org . apache . dubbo . rpc . RpcException : Failfast invoke providers dubbo : // 172.30 .178 .7 : 20880 / com . xxx . xxx . api . service . xxxxApiService 枚举类型数据比较特殊,是否因为请求参数的格式问题导致,修改请求参数格式如下 报错误 2020 - 03 - 03 20 : 23 : 26 , 913 ERROR i . g . n . j . p . u . JsonUtils : json to class [ sun . reflect . generics . reflectiveObjects . ParameterizedTypeImpl ] is error! com . google . gson .

面经2020.3.3

不想你离开。 提交于 2020-03-04 00:08:10
1、介绍下自己? 2、dubbo如何解决接口幂等性?幂等性如何产生的? 3、分布式锁的使用?锁产生异常如何处理的? 4、数据库的数据重新迁移到另台服务器上如何操作? 5、高并发情况下,MySQL数据中三张表。查询是多表关联查询还是单表? 来源: CSDN 作者: WXF_Sir 链接: https://blog.csdn.net/WXF_Sir/article/details/104636861

最新 Python 调用dubbo接口

为君一笑 提交于 2020-03-03 19:38:36
import json import socket import telnetlib class Dubbo(telnetlib.Telnet): prompt = 'dubbo>' coding = 'utf-8' def __init__(self, host=None, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): super().__init__(host, port) self.write(b'\n') def command(self, flag, str_=""): data = self.read_until(flag.encode()) self.write(str_.encode() + b"\n") return data def invoke(self, service_name, method_name, arg): command_str = "invoke {0}.{1}({2})".format( service_name, method_name, json.dumps(arg)) self.command(Dubbo.prompt, command_str) data = self.command(Dubbo.prompt, "") data = data.decode(Dubbo.coding

架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结

本秂侑毒 提交于 2020-03-03 17:05:40
作者 | 刘军(陆龟)Apache Dubbo PMC 本文整理自架构师成长系列 2 月 18 日直播课程。 关注“阿里巴巴云原生”公众号,回复 “218” ,即可获取对应直播回放链接及 PPT 下载链接。 导读 :Apache Dubbo 是一款开源的 RPC 框架,其提供了简单易用、高性能的 RPC 能力、灵活可控的扩展、强大的服务治理,目前已有 Java、Go、JS、Python 等多个语言支持;并且已经悄然衍进为 Cloud Native 基础设施。这一切成就都离不开 Dubbo 社区的建设,本文将由 Apache Dubbo PMC 刘军来介绍 Dubbo 社区在过去的一年取得的成绩及未来 Dubbo 社区的发展新规划。 非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将: 总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面; 展望未来 Dubbo 社区和框架的新的规划(roadmap)。 社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo

架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结

我们两清 提交于 2020-03-03 15:27:49
导读 :Apache Dubbo 是一款开源的 RPC 框架,其提供了简单易用、高性能的 RPC 能力、灵活可控的扩展、强大的服务治理,目前已有 Java、Go、JS、Python 等多个语言支持;并且已经悄然衍进为 Cloud Native 基础设施。这一切成就都离不开 Dubbo 社区的建设,本文将由 Apache Dubbo PMC 刘军来介绍 Dubbo 社区在过去的一年取得的成绩及未来 Dubbo 社区的发展新规划。 非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将: 总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面; 展望未来 Dubbo 社区和框架的新的规划(roadmap)。 社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo 3.0 协议、服务自省和云原生等方向上也做了深入的探索,对这些方向的支持将是 Dubbo 接下来的重要工作方向,希望能通过这篇文章将其中更详细的思考和计划同步给大家。 社区回顾 回顾 Dubbo

dubbo的SPI应用与原理

核能气质少年 提交于 2020-03-03 14:56:44
dubbo SPI(Service Provider Interface) 本质是 将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类 。这样可以在运行时,动态为接口替换实现类。 在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式 来实现动态加载的机制 。我们在程序只定义一个接口,具体的实现交个不同的服务提供者;在程序启动的时候,读取配置文件,由配置确定要调用哪一个实现; 通过 SPI 机制为我们的程序提供拓展功能,在dubbo中,基于 SPI,我们可以很容易的对 Dubbo 进行拓展。例如dubbo当中的protocol,LoadBalance等都是通过SPI机制扩展。 想要学习 Dubbo 的源码,SPI 机制务必弄懂。接下来,我们了解下JAVA SPI与dubbo SPI的用法,再分析DUBBO SPI的源码,本文的dubbo源码是基于2.7.5版本。 JAVA 原生SPI 示例 先简单介绍JAVA SPI的应用。首先,我们定义一个Car接口 public interface Car { String getBrand () ; } 定义该接口的两个实现类。 public class BM implements Car { public String getBrand () { System.out.println( "BM car"