什么是dubbo

快速入门dubbo

了解什么是dubbo之前,我们得先了解什么是分布式系统?

  • 《分布式系统原理与范型》定义:

    • 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统
    • 分布式系统(distributed system)是建立在网络之上的软件系统。
    • 简单来说:多个(不同职责)人共同来完成一件事
    • 任何一台服务器都无法满足淘宝的双十一的数据吞吐量,一定是很多台服务器公共来完成

      的。(服务器比做人)
  • 歇后语:“三个臭皮匠赛过诸葛亮”,就是分布式系统的真实写照

系统架构的演变

1 单一应用架构

  • 当网站流量很小时,只需要一个应用,将所有的功能部署到一起(所有业务都放在一个tomcat

    里),从而减少部署节点和成本;
  • 此时,用于简化 增删改查 工作量的数据访问框架 (ORM)是关键;mybatis就是orm框架。ORM:对象关系映射(Object Relational Mapping)
  • 例如:某个超市的收银系统,某个公司的员工管理系统

优点:

  • 小项目开发快 成本低
  • 架构简单
  • 易于测试
  • 易于部署

缺点

  • 大项目模块耦合严重 不易开发 维护 沟通成本高
  • 新增业务困难
  • 核心业务与边缘业务混合在一块,出现问题互相影响

2 垂直应用架构

  • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成几个互不相干的几个应

    用,以提高效率;
  • 大模块按照mvc分层模式,进行拆分成多个互不相关的小模块,并且每个小模块都有独立的服务器
  • 此时,用于加速前端页面开发的web框架(MVC)是关键;因为每个小应用都有独立的页面

MVC:模型视图控制器 (Model View Controller)

  • 缺点:

    • 模块之间不可能完全没有交集,公用模块无法重复利用,开发性的浪费

3 分布式服务架构

  • 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的业务,逐渐形成

    稳健的服务中心,使前端应用能更快速的响应多变的市场需求;
  • 此时,用户提高业务复用及整合的分布式服务框架(RPC)远程调用是关键;

RPC:独立的应用服务器之间,要依靠RPC(Romote Procedure Call)才能调用

  • 这也会出现一个问题:当物流服务不忙,有100台服务器; 商品服务特别忙,也是100台服务器;
  • 如何做到资源优化调配?↓下面的流动计算架构能帮我们解决实际问题。

4 流动计算架构

  • 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐呈现,此时需增加一个调度中心基于

    访问压力实时管理集群容量,提高集群利用率;
  • 此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键;

SOA:面向服务架构(Service-Oriented Architecture),简单理解就是“服务治理”,例如:公交车站

的“调度员”

Dubbo简介

  • Dubbo是分布式服务框架,是阿里巴巴的开源项目,现交给apache进行维护
  • Dubbo致力于提高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案
  • 简单来说,dubbo是个服务框架,如果没有分布式的需求,是不需要用的

1 RPC

  • RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式

  • RPC基本的通信原理

    1. 在客户端将对象进行序列化
    2. 底层通信框架使用netty(基于tcp协议的socket),将序列化的对象发给服务方提供方
    3. 服务提供方通过socket得到数据文件之后,进行反序列化,获得要操作的对象
    4. 对象数据操作完毕,将新的对象序列化,再通过服务提供方的socket返回给客户端
    5. 客户端获得序列化数据,再反序列化,得到最新的数据对象,至此,完成一次请求
  • RPC两个核心模块:通讯(socket),序列化。

2 节点角色关系

节点 角色说明
Provider 服务的提供方(类似于洗浴中心)
Consumer 服务的消费方(客人)
Registry 服务注册与发现的注册中心(便民服务中心,所有的饭店娱乐场所都在已在本中心
注册)
Monitor 监控服务的统计中心(统计服务被调用的次数)
Container 服务运行容器(烧烤一条街,洗浴一条街)

3 调用关系

1.服务容器负责启动,加载,运行服务提供者;

2.服务提供者在启动时,向注册中心注册自己提供的服务;

3.服务消费者在启动时,向注册中心订阅自己所需的服务;

4.在注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给

消费者;

5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,

再选另一台调用;

6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中

心;

7 什么是dubbo的更多相关文章

  1. 用dubbo时遇到的一个序列化的坑

    首先,这是标题党,问题并不是出现在序列化上,这是报错的一部分: Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to s ...

  2. dubbo服务提供与消费

    一.前言 项目中用到了Dubbo,临时抱大腿,学习了dubbo的简单实用方法.现在就来总结一下dubbo如何提供服务,如何消费服务,并做了一个简单的demo作为参考. 二.Dubbo是什么 Dubbo ...

  3. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  4. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

  5. Dubbo 备注

    Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. ...

  6. Dubbo学习小记

    前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境. 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo----公司的服务都是 ...

  7. Running Dubbo On Spring Boot

    Dubbo(http://dubbo.io/) 是阿里的开源的一款分布式服务框架.而Spring Boot则是Spring社区这两年致力于打造的简化Java配置的微服务框架. 利用他们各自优势,配置到 ...

  8. 【转】Dubbo使用例子并且和Spring集成使用

    一.编写客户端和服务器端共用接口类1.登录接口类public interface LoginService {    public User login(String name, String psw ...

  9. 基于SOA分布式架构的dubbo框架基础学习篇

    以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...

  10. dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】

    最近维护的系统切换了网络环境,由联通换成了电信网络,因为某些过滤规则导致系统连不上zookeeper服务器(应用系统机器在深圳,网络为电信线路,zookeeper服务器在北京,网络为联通线路),因为我 ...

随机推荐

  1. C# 有关List<T>的Contains与Equals方法

    [以下内容仅为本人在学习中的所感所想,本人水平有限目前尚处学习阶段,如有错误及不妥之处还请各位大佬指正,请谅解,谢谢!]   !!!观前提醒!!! [本文内容可能较为复杂,虽然我已经以较为清晰的方式展 ...

  2. Linux常用命令格式

    Linux命令格式 命令 选项 参数COMMAND [OPTIONS...] [ARGUMENTS...]COMMAND COMMAND COMMAND .... 选项:用于启用或关闭命令的某个或某些 ...

  3. C++基础-2-引用

    2. 引用 2.1 引用的基本语法 1 #include<iostream> 2 using namespace std; 3 4 5 int main() { 6 7 //引用的基本语法 ...

  4. 一文看懂:网址,URL,域名,IP地址,DNS,域名解析

    一个执着于技术的公众号 前言 今天给大家梳理一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文,并以简单的提问-解答 形式让读者更加深刻理解,希望有助于读者的学习,面试和工作! 1.一个 ...

  5. Water 2.6.3 发布,一站式服务治理平台

    Water(水孕育万物...) Water 为项目开发.服务治理,提供一站式解决方案(可以理解为微服务架构支持套件).基于 Solon 框架开发,并支持完整的 Solon Cloud 规范:已在生产环 ...

  6. 用NetworkX生成并绘制(带权)无向图

    NetworkX是一个非常强大的网络科学工具,它封装了图的数据结构和许多经典图算法,也内置了许多可视化函数可供调用. 1. 随机图生成 最经典的随机图当属我们在上一篇博客<Erdos-Renyi ...

  7. 宽字符输出中文,Devc++解决方法

    有群友问类似问题,然后我编译了一下试试: #include <stdio.h> #include <wchar.h> #include <locale.h> int ...

  8. 『忘了再学』Shell基础 — 14、环境变量(二)

    目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...

  9. 安装Zabbix到Ubuntu(APT)

    运行环境 系统版本:Ubuntu 16.04.2 LTS 软件版本:Zabbix-4.0.2 硬件要求:无 安装过程 1.安装APT-Zabbix存储库 APT-Zabbix存储库由Zabbix官网提 ...

  10. JetBrains IDE全新UI预览版来了,要做简洁与强大兼顾的IDE

    5月23日,JetBrains发布了一篇博文,透露他们正在实现一套全新的界面界面. 他们认为目前行业中的用户界面趋势已经发生了演变,很多新用户认为JetBrains IDE的界面过于笨重,而且过时.所 ...