Dubbo

dubbo和zookeeper的启动

感情迁移 提交于 2020-02-27 10:25:57
1 、需要这四个 tomcat dubbo-admin zookeeper java 2 开启zookeeper ./zkServer.sh 3 在tomcat中配置开启dubbo-admin的线程 4 开启tomcat ./startup.sh 5 结果 来源: oschina 链接: https://my.oschina.net/u/2511906/blog/3175477

dubbo

隐身守侯 提交于 2020-02-27 07:27:07
什么是dubbo? dubbo是一个分布式服务框架,致力于提高性能和透明化远程RPC远程服务调用方案。 SOA服务治理方案(自行百度)。 dubbo能做什么? 透明化的远程方法调用。 软负载均衡及容错机制。 服务自动注册于发现,注册中心基于接口名查询服务提供者ip。 dubbo服务之间通讯协议有哪些? 第一:dubbo协议 dubbo缺省协议采用单一长连接合NIO异步通讯,适合于小数据量大并发的服务调用。 第二:rmi协议 java标准的远程调用协议 连接个数:多个连接 连接方式:短连接 传输协议:tcp 传输方式:同步 序列化:java标准二进制序列化 范围:传入传出参数数据大小包混合,消费者与提供者个数相近,可传文件。 采用jdk标准的java.rml实现,采用阻塞短连接合jdk标准序列化范式 commons-collections3 与commons-collections4存在反序列化风险 如果接口继承了java.rmi.remote接口,可以与原生的RMI互操作 如果没有继承会自动生成一个remote接口并继承java.rmi.remot 如果再spring设置中定义的了就会走spring的rmiLnvocationHandler接口 第三:hessian协议 基于hessian远程调用协议 连接个数:多个连接 连接方式:短连接 传输协议:http协议 传输方式:同步

Spring Cloud 微服务开发系列整理

落花浮王杯 提交于 2020-02-27 07:23:20
转载请标明出处: http://blog.itwolfed.com/ 本文出自 程序员果果的博客 源码 github | Spring Boot 系列 : https://github.com/gf-huanchupk/SpringBootLearning ,记得star哦! github | Spring Cloud 系列 : https://github.com/gf-huanchupk/SpringCloudLearning ,记得star哦! Spring Boot 系列 Spring Boot 教程 | Spring Boot 自定义 starter Spring Boot 教程 | Spring Boot 整合 mybatis-plus Spring Boot 教程 | Spring Boot 整合 spring cache Spring Boot 教程 | Spring Boot 整合 rabbitmq Spring Boot 教程 | Spring Boot 整合 elasticsearch Spring Boot 教程 | Spring Boot 整合 docker Spring Boot 教程 | Spring Boot 整合 elk Spring Boot 教程 | Spring Boot Admin 2.0 详解 Spring Boot 教程 |

面试

ε祈祈猫儿з 提交于 2020-02-27 07:12:01
Dubbo默认使用的是什么通信框架? Netty Dubbo的序列化? dubbo序列化,阿里尚不成熟的java序列化实现。 hessian2序列化:hessian是一种跨语言的高效二进制的序列化方式,但这里实际不是原生的hessian2序列化,而是阿里修改过的hessianlite,它是dubboRPC默认启用的序列化方式。 json序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自已实现的简单json库,一般情况下,json这种文本序列化性能不如二进制序列化。 java序列化:主要是采用JDK自带的java序列化实现,性能很不理想。 Dubbo的调用关系? 提供者启动时,向注册中心注册自己提供的服务。 消费者启动时,向注册中心订阅自己所需的服务。 注册中心返回提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 消费者,从远程接口列表中,调用远程接口,dubbo会基于负载均衡算法,选一台提供者进行调用,如果调用失败则选择另一台。 消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 Dubbo中ZooKeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? 注册中心对等集群,任意一台宕掉后,会自动切换到另一台。 注册中心全部宕掉

dubbo 反序列化空指针排查

独自空忆成欢 提交于 2020-02-27 06:24:05
dubbo 反序列化空指针排查 背景 一个线上问题,dubbo provider 接收到的dto对象时,报空指针错误。但是将同样的dto第二次调用,就没问题。异常如下 java.lang.NullPointerException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate(JavaDeserializer.java:305) at com.alibaba.com.caucho.hessian.io

ZhaoWei-2020-02-06

淺唱寂寞╮ 提交于 2020-02-27 04:55:44
Dubbo(2) 第一层:service 层,接口层,给服务提供者和消费者来实现的 该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。 第二层:config 层,配置层,主要是对 dubbo 进行各种配置的 配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。 第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都会给你生成代理,代理之间进行网络通信 服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。 第四层:registry 层,服务注册层,负责服务的注册与发现 服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服务。 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务 集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心

Dubbo的特点

空扰寡人 提交于 2020-02-27 04:33:52
1.介绍   DUBBO有良好的连通性、健壮性、伸缩性、升级性。结合dubbo可以相对于单体系统提升系统整体的扩展性 2. 连通性 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表 注册中心和监控中心都是可选的,服务消费者可以直连服务提供者 3.健状性 监控中心宕掉不影响使用,只是丢失部分采样数据 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务 注册中心对等集群,任意一台宕掉后,将自动切换到另一台 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯 服务提供者无状态,任意一台宕掉后,不影响使用 服务提供者全部宕掉后

源码分析Dubbo集群容错策略

最后都变了- 提交于 2020-02-27 04:30:48
前面的文章,已经单独对服务发现(Directory、RegistryDirectory)、路由机制(Router)、负载均衡机制( LoadBalance ),本节将重点分析集群容错机制 ( AbstractClusterInvoker), AbstractClusterInvoker 就是将上述机制融合在一起,整个集群容错中,上述组件扮演的角色见下图所示,本文将重点分析 AbstractClusterInvoker 是如何融合这些组件的。 AbstractClusterInvoker#invoke @Override public Result invoke(final Invocation invocation) throws RpcException { checkWhetherDestroyed(); LoadBalance loadbalance = null; List<invoker<t>> invokers = list(invocation); // @1 if (invokers != null && !invokers.isEmpty()) { loadbalance = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(invokers.get(0).getUrl()

SpringCloud 初识

孤街醉人 提交于 2020-02-27 03:23:57
SpringCloud 基于 SpringBoot 提供了一套 微服务解决方案 ,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。 SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud 离不开SpringBoot ,属于依赖的关系。SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的 服务治理 框架。 Spring Cloud 和 Dubbo SpringCloud 抛弃了Dubbo的RPC 通信,采用的是基于HTTP的REST方式。服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。 Spring Cloud能够与Spring Framework、Spring Boot、Spring Data、Spring Batch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构需要组合服务,存在问题治理比较困难,而Spring Cloud大量的兼容性测试,保证了更高的稳定性。 Dubbo是RPC服务框架,而Spring Cloud 是微服务一站式解决方案; 技术站分享: Spring官网

【模块十四】分布式篇--Dubbo框架篇☞参考答案

╄→尐↘猪︶ㄣ 提交于 2020-02-27 03:05:36
一、Dubbo 简介 1、是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架 它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 2、为什么使用? A、产生原因 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,因此诞生了面向服务的架构体系(SOA),Dubbo这样的 布式系统的服务治理框架也随之产生。 B、作用 而dubbo在整个分布式系统的架构中,按照分层的架构来架构,使得各个层级之间最大限度的松耦合。 1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 3、注册 与 发现原理 结构图一定要能画出来,并解释清楚每个角色,下面为Dubbo官网原理图 节点角色说明: Container:服务运行器 Provider:暴露服务的服务提供方 Consumer:调用远程服务的服务消费方 Register:服务注册与发现的注册中心 Monitor:统计服务的调用次数和调用时间的监控中心 调用流程说明: 1.服务容器负责启动,加载