当前位置: > 其它学习 > Dubbo >

Dubbo入门 + Dubbo Admin管理平台

时间:2019-02-22 04:17来源:未知 作者:IT
一、Dubbo是什么?
1.分布式服务框架
什么叫分布式服务框架?
 
分布式就是把一台机器无法承担的处理量分担到多点。提高处理和响应速度。
 
说的简单点就是运行在不同服务器上的软件架构设计。把同一服务分布在不同的服务器上。如:接口服务、数据库服务、文件系统服务等。同样当单台服务器已经满足不了需求的时候就需要做分布式处理了。毕竟一台服务器的处理能力是有限的。
 
2.高性能和透明化的RPC远程服务调用方案
什么是RPC?
 
RPC:远程调用。通过RPC框架,使得我们可以像调用本地方法一样地调用远程机器上的方法:
 
1、本地调用某个函数方法
2、本地机器的RPC框架把这个调用信息封装起来(调用的函数、入参等),序列化(json、xml等)后,通过网络传输发送给远程服务器
3、远程服务器收到调用请求后,远程机器的RPC框架反序列化获得调用信息,并根据调用信息定位到实际要执行的方法,执行完这个方法后,序列化执行结果,通过网络传输把执行结果发送回本地机器
4、本地机器的RPC框架反序列化出执行结果,函数return这个结果
发展过程
 
早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来。假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能。这不是整人么?于是就出现了IPC(Inter-process communication,单机中运行的进程之间的相互通信)。OK,现在A既然有了画图的功能,B就调用A进程上的画图功能好了,程序员终于可以偷下懒了。
 
到了网络时代,大家的电脑都连起来了。以前程序只能调用自己电脑上的进程,能不能调用其他机器上的进程呢?于是就程序员就把IPC扩展到网络上,这就是RPC(远程过程调用)了。现在不仅单机上的进程可以相互通信,多机器中的进程也可以相互通信了。
 
要知道实现RPC很麻烦呀,什么多线程、什么Socket、什么I/O,都是让咱们普通程序员很头疼的事情。于是就有牛人开发出RPC框架(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。
 
OK,现在可以定义RPC框架的概念了。简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。
3.SOA服务治理方案
SOA是什么?(资料https://www.cnblogs.com/renzhitian/p/6853289.html)
 
SOA全英文是Service-Oriented Architecture,中文意思是面向服务编程,是一种思想,一种方法论,一种分布式的服务架构。
 
用途:SOA解决多服务凌乱问题,SOA架构解决数据服务的复杂程度,同时SOA又有一个名字,叫做服务治理。随着我们系统的进一步复杂度的提示,我们不得不进一步对系统的性能进行提升,我们将多个模块分成多个子系统,多个子系统直接互相调用(因为SOA一般用于大型项目,比较复杂,所以一般总系统不会再集成,会拆分多个,分别做成服务,相互调用)。
 
SOA的好处
 
1、降低用户成本,用户不需要关心各服务之间是什么语言的、不需要知道如果调用他们,只要通过统一标准找数据总线就可以了;
2、程序之间关系服务简单;
3、识别哪些程序有问题(挂掉)
缺点:
 
提示了系统的复杂程度,性能有相应影响。
 
 
 
二、Dubbo能做什么
1.透明化的远程方法调用
就像调用本地方法一样调用远程方法;
只需简单配置,没有任何API侵入。
2.软负载均衡及容错机制
可在内网替代F5等硬件负载均衡器(浅谈Nginx负载均衡与F5的区别)
3.服务自动注册与发现
不需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者
 
 
三、Dubbo是一种RPC
1.Dubbo可以选择协议
Dubbo协议,采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)【问题:在大文件传输时,单一连接会成为瓶颈】
Rmi协议,可与原生RMI互操作,基于TCP协议。【问题:偶尔会连接失败,需重建Stub】
Hessian协议,可与原生的Hessian互操作,基于HTTP协议【需要hessian.jar支持,http短连接的开销大】
2.Dubbo可选用多种序列化方式
Hessian Serialization,性能较好,多语言支持(推荐)【问题:Hessian各版本兼容不好】
Dubbo Serialization,通过不传输POJO的类元信息,在大量POJO传输时,性能好【问题:当参数对象增加字段时,需外部文件声明】
Json Serialization,纯文本,可跨语言解析,缺省采用FastJson解析【问题:性能较差】
Java Serialization,java原生支持【问题:性能较差】
3.默认协议为Dubbo,序列化为Hessian
 
 
四、Dubbo基本原理
 
 
节点角色说明: 
Provider: 暴露服务的服务提供方。 
Consumer: 调用远程服务的服务消费方。 
Registry: 服务注册与发现的注册中心。 
Monitor: 统计服务的调用次调和调用时间的监控中心。 
 
 
 
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
 
 
 
五、Dubbo Admin管理平台
dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。
 
也是在网上找的一个支持JDK1.8的war包。
 
下载地址,链接: https://pan.baidu.com/s/1HcnGGS6-t0Un1SkzMEiWdA 密码: rid6
 
将下载的war包放到tomcat中启动:
 
 
 
访问:
 
 
 
root的密码:root,guest的密码:guest
 
登录:
 
 
 
查看服务应用等:
 
 
 
 
 
Dubbo Admin管理平台就完成了,由于还没有添加配置诸如消费者、提供者的信息,所以管理中心暂无数据。
--------------------- 
作者:smartdt 
来源:CSDN 
原文:https://blog.csdn.net/smartdt/article/details/80002227 
 


(责任编辑:IT)
------分隔线----------------------------