Dubbo简介:  

  Dubbo 是阿里巴巴公司开源(以前不开源)的一个高性能优秀的服务框架, 使得应用可通过高性能的 RPC 实现服务的输入和输出功能, 可以和spring框架无缝集成.

  那么这里, 啥是RPC啊?

  这么来说吧, 业务逻辑层和展现层不在同一台电脑上, 甚至不在同一个城市, 当我展现层想调用逻辑层的东西, 怎么调? RPC 就是为了解决这个问题的. 你说将逻辑层做成了接口, 通过http调用接口的方式, 确实可以调用得到, 但是速度和性能没有 RPC 高.

度娘解释:

  RPC (Remote Procedure Call) - 远程过程调用. 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

  看的可能有点云里雾里, 不过没关系, 总的, 可以将RPC理解为, 将业务层的某些方法, 做成了接口, 变成服务端, 供客户端去调用.

框架演变:

  1. 单一应用框架(ORM) 
    当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 
    缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 

  2. 垂直应用框架(MVC) 
    垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率。 
    缺点:但是在垂直架构中相同逻辑代码需要不断的复制,不能复用。 

  3. 分布式应用架构(RPC) 
    当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心 

  4. 流动计算架构(SOA) 
    随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,这时候, 就需要一个应用来治理这些复杂的关系, 从而诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架

从以上是电商系统的演变可以看出架构演变的过程: 

  • 单一应用架构

    • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
    • 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
  • 垂直应用架构

    • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
    • 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
  • 分布式服务架构 
    • 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
    • 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
  • 流动计算架构 
    • 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
    • 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

Dubbo架构:

主页地址: http://dubbo.io/

Provider: 暴露服务的服务提供方。 
Consumer: 调用远程服务的服务消费方。 
Registry: 服务注册与发现的注册中心。 
Monitor: 统计服务的调用次数和调用时间的监控中心。

调用流程

0.服务容器负责启动,加载,运行服务提供者。 
1.服务提供者在启动时,向注册中心注册自己提供的服务。 
2.服务消费者在启动时,向注册中心订阅自己所需的服务。 
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 
4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

Dubbo 注册中心:

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀; 
对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。 
而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,有需要消费服务。

通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。

Dubbo提供的注册中心有如下几种类型可供选择

  • Multicast注册中心
  • Zookeeper 注册中心
  • Redis注册中心
  • Simple注册中心

优点:

  1. 透明化的远程方法调用 
    - 像调用本地方法一样调用远程方法;只需简单配置,没有任何API侵入。
  2. 软负载均衡及容错机制 
    • 可在内网替代nginx lvs等硬件负载均衡器。
  3. 服务注册中心自动注册 & 配置管理 
    -不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip。 
    使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群。
  4. 服务接口监控与治理 
    -Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。

以上部分来源于参考地址, 其实, 和某机构培训视频里面讲的, 差不多.

zookeeper(注册中心) 下载和部署

下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/

我这里下载的是 linux 版本的. 所以也会部署到linux上去, linux系统用的centos.

1. 拿到下载的文件, 进行解压缩到事先建好的 /usr/java 文件中 (mkdir /usr/java)

tar -zxvf zookeeper-3.4.11 -C /usr/java

2. 新建data文件夹

cd /usr/java/zookeeper-3.4.11
mkdir data

3. 修改配置文件 zoo_sample.cfg

cd conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

将dataDir修改为之前新建的data文件夹

4. 启动zookeeper

cd ../bin
./zkServer.sh start

注册服务监控

1. 下载地址

https://github.com/alibaba/dubbo

将项目下载下来之后, 打开其中的target文件夹, 下面有一个已经编译好的war包

将此war包拷贝到linux系统中的tomcat webapps文件夹下, 且重命名为 dubbo-admin.

2. 访问监控页面

如果是在linux 系统中直接访问, 则输入以下地址:

  http://localhost:8080/dubbo-admin/

如果是在别的电脑中访问, 则输入替换地址为linux系统的ip地址即可.

在进入的时候, 会要求输入账号和密码, 默认都是 root

参考:

  dubbo入门

dubbo + zookeeper 简介和部署的更多相关文章

  1. Dubbo与Zookeeper 简介

    转自http://blog.csdn.net/congcong68/article/details/41113239 首先说一下Dubbo解决什么问题: (1)当服务越来越多时,服务Url配置管理变得 ...

  2. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  3. 面试连环炮系列(六):Dubbo应用为什么要部署Zookeeper

    Dubbo应用为什么要部署Zookeeper? Zookeeper用来注册和发现服务,简单说就是提供端注册接口信息到Zookeeper,调用端在Zookeeper上查找接口对应的服务IP和端口.由于Z ...

  4. ZooKeeper简介与集群部署

    ZooKeeper 是一个开源的分布式协调服务,由雅虎公司创建,是Google Chubby的开源实现,ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的 ...

  5. 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!

    平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...

  6. 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis

     分类: 分布式技术(3)    目录(?)[+]   平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...

  7. dubbo+zookeeper+spring实例

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

  8. dubbo使用简介

    ---------------------------------------------------------------------------------------------------- ...

  9. 【Dubbo&&Zookeeper】1、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    转自:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架 ...

随机推荐

  1. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  2. 网络timeout区分

    ConnectTimeout 连接建立时间,三次握手完成时间 SocketTimeout 数据传输过程中数据包之间间隔的最大时间 下面重点说下SocketTimeout,比如有如下图所示的http请求 ...

  3. java基础知识-比较运算符

    演示比较运算符 == : 判断两个值是否相等 != : 判断两个数是否不相等(不能写成<>) > :判断左边值是否大于右边值 < :判断左边值是否小于右边值 >= : 判 ...

  4. [javascript-snippet]使用javascript+html5实现图片的灰度处理

    // 源码出自:潇湘夜雨<!DOCTYPE> <html> <head> <meta charset="utf-8"/> </ ...

  5. 我的ecshop二次开发经验分享

    https://jingyan.baidu.com/article/358570f65dbad2ce4724fcc7.html

  6. Redis数据库介绍

    引言 redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. redis数据结构 redis是一种高级的key:value存储系统,其中value支 ...

  7. TaskCreationOptions.LongRunning 运行比可用线程数更多的任务

    最近在学WebSocket,服务端需要监听多个WebSocket客户端发送的消息. 开始的解决方法是每个WebSocket客户端都添加一个线程进行监听,代码如下: /// <summary> ...

  8. jQuery ajax 302跨域

    一.ajax 302 ajax用于异步获取服务器数据,但是某天有这么一个使用场景: > 基于安全考虑,登录的用户的信息失效时,系统的所有ajax接口都由服务器直接重定向到系统的登录页面,此时登录 ...

  9. Unity LuaFramework LuaBundleMode

    设置 AppConst.cs 中的 LuaBundleMode 为 true,开启 Lua 代码 AssetBundle 模式. 启动程序报错,Moudle XXX not found. 我在 Ass ...

  10. Swift5 语言参考(四) 表达式

    在Swift中,有四种表达式:前缀表达式,二进制表达式,主表达式和后缀表达式.评估表达式会返回一个值,导致副作用,或两者兼而有之. 前缀和二进制表达式允许您将运算符应用于较小的表达式.主要表达式在概念 ...