Dubbo

Dubbo的使用及原理浅析.

随声附和 提交于 2020-02-04 04:10:19
Dubbo的使用及原理浅析. 前面几个博文中关于SSM 框架已经搭建完成, 这里来讲下项目中使用到的Dubbo以及自己了解到的关于Dubbo的一些知识. Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。 Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 Dubbo能做什么? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 Spring集成

Dubbo应用优雅停机实践

大城市里の小女人 提交于 2020-02-04 01:56:16
网上相关的帖子很多,主要方法也都是加钩子HOOK,这里我对优雅停机进行了实践 目前不管是dubboX、apache的dubbo、alibaba的dubbo都没有实现真正意义上的优雅停机(截止20191231) 标红是重点,目前jar中自带的hook并不能满足先从注册中心移除、再销毁容器的顺序,且激活hook需要在JVM变量(启动参数)中配置dubbo.shutdown.hook=true参数 这里我通过监听事件,在spring容器初始化后,自己注册了一个HOOK,new TpspShutDownHook() @Slf4j public class ShutDownListener implements ApplicationListener { @SneakyThrows @Override public void onApplicationEvent(ApplicationEvent event) { if(event instanceof ContextRefreshedEvent) { if(((ContextRefreshedEvent) event).getApplicationContext().getParent() != null ){ return; } //root application context 没有parent,他就是老大. log.info("##

spring-dubbo.xml

岁酱吖の 提交于 2020-02-03 17:43:48
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!-

Dubbo

两盒软妹~` 提交于 2020-02-03 17:32:29
dubbo是什么? 是阿里巴巴开源的基于Java的高性能RPC分布式服务架构 核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现 为什么要用Dubbo? 使用dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用,灵活扩展,使前端应用能够响应多变的市场需求 dubbo与Spring Cloud的区别? 两个没有关联,区别有几点: 1)通信方式不同 : dubbo使用RPC通信,Spring Cloud使用Http RestFul通信 2)服务注册中心不同: dubbo使用ZooKeeper Spring Cloud使用 eureka dubbo内置的服务容器? Spring Container Jetty Container Log4j Container dubbo的服务容器只是一个简单的main方法,并加载一个简单的spring容器,用于暴露服务 dubbo里面的节点角色? 服务提供方 provider 服务消费方 consumer 注册中心 registry 监控中心 monitor 运行容器 container dubbo默认使用ZooKeeper作为注册中心,还有redis,multicast,simple(不推荐) dubbo的配置方式? 1)spring配置 2)java API配置

dubbo的SPI扩展机制

怎甘沉沦 提交于 2020-02-03 12:37:44
dubbo的SPI(Service Provider Interface)是在java的SPI基础上做了功能特性的扩展;但本质上都是做了和Spring IOC\AOP一样的事,服务(或者bean)的注册统一管理、以及实例化;此外spi提供的是一种jvm级别的服务发现机制,我们只需按照spi的要求,在jar包中进行适当的配置,jvm就会在运行时通过懒加载,帮我们找到所需要的服务并加载。如果我们一直不适用这个服务,那么他就不会被加载,一定程度上避免了资源浪费; SPI怎么用到我们的业务服务的注册解析管理上?dubbo存在大量的扩展点,业务代码也存在大量扩展点,so.........(此处应该有总结//todo) 1、Java的SPI扩展机制 使用上就只需要注意下面几点: 虽然没有强制要求使用功能interface或者abstract class作为spi的注册服务,但是作为可扩展服务,尽量养成使用interface或者abstract class的习惯; 必须放在JAR包或项目的指定路径,即 META-INF/services 下; 必须以服务的全限定名命名配置文件,比如本例中,配置文件必须命名为 cn.jinlu.spi.demo.Animal,java会根据此名进行服务查找; 内容必须是一个实现类的全限定名,如果要注册多个实现类,按行分割。注释以#开头。; 源码解析部分: (1)

Apache Dubbo vs Django REST framework

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-03 00:59:32
Django搭建个人博客_韦人人韦-CSDN博客 https://blog.csdn.net/ddydavie/article/details/77198758 还有多少人在用 Django 开发业余项目或者小项目? - V2EX https://www.v2ex.com/t/535113 Python调用基于Dubbo的Hessian协议接口_python_吕海洋的博客-CSDN博客 https://blog.csdn.net/wuchenlhy/article/details/79207355 Apache Dubbo vs Django REST framework | What are the differences? https://stackshare.io/stackups/apache-dubbo-vs-django-rest-framework Django REST framework vs Spring Cloud | What are the differences? https://stackshare.io/stackups/django-rest-framework-vs-spring-cloud Dubbo 疯狂更新! | 《Linux就该这么学》 https://www.linuxprobe.com/dubbo-update.html Django

使用Dubbox构架分布式服务

﹥>﹥吖頭↗ 提交于 2020-02-02 15:57:02
第一部分:Dubbo的背景分析及工作原理 1. Dubbo是什么? Dubbo是一个来自阿里巴巴的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架 其核心部分包含: 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 2. Dubbo能做什么? 1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 Dubbo采用全Spring配置方式,透明化接入应用

ZooKeeper的shell操作命令

﹥>﹥吖頭↗ 提交于 2020-02-01 03:53:47
ZooKeeper的shell操作命令 使用 zkServer.sh 启动ZooKeeper服务器后,接下来就可以使用 zkCli.sh 脚本启动ZooKeeper客户端来连接ZooKeeper服务器;Windows对应的是 zkServer.cmd 和 zkCli.cmd 。 (1)使用 help 命令可查看ZooKeeper的shell操作可用的命令,如下: [ zk: localhost:2181 ( CONNECTED ) 4 ] help ZooKeeper -server host:port cmd args stat path [ watch ] set path data [ version ] ls path [ watch ] delquota [ -n | -b ] path ls2 path [ watch ] setAcl path acl setquota -n | -b val path history redo cmdno printwatches on | off delete path [ version ] sync path listquota path rmr path get path [ watch ] create [ -s ] [ -e ] path data acl addauth scheme auth quit getAcl

最全最简单的dubbo教程-开篇《一》

主宰稳场 提交于 2020-02-01 00:07:04
转载: 最全最简单的dubbo教程-开篇《一》 前言 网上看dubbo相关文章,都是一堆复制粘贴的,有的甚至直接复制官网的变成自己的博客。无奈之下只有自己学习,顺便把学习的结果分享给大家。全部案例均使用最新的springboot的形式,传统mian方法启动的方式参考快速入门案例。 如果项目紧急需要五分钟上手dubbo进行开发,请参考: 最简单的dubbo教程-快速入门 本文主要参考: dubbo官网 简介 本文会用HelloWorld开始,带大家从0到1,逐渐学会dubbo,都有demo的案例可以下载。如果看不懂没关系,最后会写一个简单的RPC调用,用来深刻体会dubbo调用原理,这时再回头看之前的文章应该就能懂了。dubbo的其它简介自行看 dubbo官网 这里不作过多的解释。写文章的目的一为巩固知识,二是分享求大家批评指正。最讨厌复制粘贴一堆别人看不懂的,浪费大家时间。 文章目录 五分钟上手dubbo案例 最全最简单的dubbo教程-开篇《一》 最全最简单的dubbo教程-以XML的形式整合dubbo《二》 最全最简单的dubbo教程-以属性配置的形式整合dubbo《三》 最全最简单的dubbo教程-以api注解的形式整合dubbo《四》 最全最简单的dubbo教程-最新dubbo管理平台搭建(jar包的形式)《五》 最全最简单的dubbo教程

ZooKeeper学习笔记及应用场景梳理

守給你的承諾、 提交于 2020-01-31 23:53:38
官网文档地址: https://zookeeper.apache.org/doc/r3.5.4-beta/zookeeperOver.html 概述 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架, 它负责存储和管理大家都关心的数据, 然后接受观察者的注册, 一旦这些数据的状态发生变化, Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应 , 从而实现集群中类似Master/Slave管理模式。 Zookeeper 是一个分布式的服务框架,主要用来 解决分布式集群中应用系统的协调和一致性问题 ,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等。 它能够为分布式应用提供高性能和可靠地协调服务,使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。协同服务很难正确运行,经常出现竞争危害和死锁。ZooKeeper 的目的就是降低协同服务实现与维护的成本。 架构及原理 集群架构 Zookeeper集群是由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点