7 什么是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基本的通信原理
- 在客户端将对象进行序列化
- 底层通信框架使用netty(基于tcp协议的socket),将序列化的对象发给服务方提供方
- 服务提供方通过socket得到数据文件之后,进行反序列化,获得要操作的对象
- 对象数据操作完毕,将新的对象序列化,再通过服务提供方的socket返回给客户端
- 客户端获得序列化数据,再反序列化,得到最新的数据对象,至此,完成一次请求
RPC两个核心模块:通讯(socket),序列化。
2 节点角色关系
节点 | 角色说明 |
---|---|
Provider | 服务的提供方(类似于洗浴中心) |
Consumer | 服务的消费方(客人) |
Registry | 服务注册与发现的注册中心(便民服务中心,所有的饭店娱乐场所都在已在本中心 注册) |
Monitor | 监控服务的统计中心(统计服务被调用的次数) |
Container | 服务运行容器(烧烤一条街,洗浴一条街) |
3 调用关系
1.服务容器负责启动,加载,运行服务提供者;
2.服务提供者在启动时,向注册中心注册自己提供的服务;
3.服务消费者在启动时,向注册中心订阅自己所需的服务;
4.在注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给
消费者;
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,
再选另一台调用;
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中
心;
7 什么是dubbo的更多相关文章
- 用dubbo时遇到的一个序列化的坑
首先,这是标题党,问题并不是出现在序列化上,这是报错的一部分: Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to s ...
- dubbo服务提供与消费
一.前言 项目中用到了Dubbo,临时抱大腿,学习了dubbo的简单实用方法.现在就来总结一下dubbo如何提供服务,如何消费服务,并做了一个简单的demo作为参考. 二.Dubbo是什么 Dubbo ...
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
- Dubbo 备注
Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. ...
- Dubbo学习小记
前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境. 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo----公司的服务都是 ...
- Running Dubbo On Spring Boot
Dubbo(http://dubbo.io/) 是阿里的开源的一款分布式服务框架.而Spring Boot则是Spring社区这两年致力于打造的简化Java配置的微服务框架. 利用他们各自优势,配置到 ...
- 【转】Dubbo使用例子并且和Spring集成使用
一.编写客户端和服务器端共用接口类1.登录接口类public interface LoginService { public User login(String name, String psw ...
- 基于SOA分布式架构的dubbo框架基础学习篇
以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...
- dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】
最近维护的系统切换了网络环境,由联通换成了电信网络,因为某些过滤规则导致系统连不上zookeeper服务器(应用系统机器在深圳,网络为电信线路,zookeeper服务器在北京,网络为联通线路),因为我 ...
随机推荐
- 虚拟机VMware 安装centos、常规配置、共享文件等
安装centos7[通过vm来安装运行centos7] 一.准备工作 1.centos7 的安装镜像下载链接:http://isoredirect.centos.org/centos/7/isos/x ...
- JQ的is()
is():根据选择器.元素或jQuery对象来检测匹配元素集合, 如果这些元素中至少有一个元素匹配给定的参数,则返回true. <!DOCTYPE html> <html lang ...
- k8s client-go源码分析 informer源码分析(2)-初始化与启动分析
k8s client-go源码分析 informer源码分析(2)-初始化与启动分析 前面一篇文章对k8s informer做了概要分析,本篇文章将对informer的初始化与启动进行分析. info ...
- 在SpringBoot中使用logback优化异常堆栈的输出
一.背景 在我们在编写程序的过程中,无法保证自己的代码不抛出异常.当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来.通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息.那么我们 ...
- .NET混合开发解决方案14 WebView2的基本身份验证
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
- C++面向对象-类和对象那些你不知道的细节原理
一.类和对象.this指针 OOP语言的四大特征是什么? 抽象 封装.隐藏 继承 多态 类体内实现的方法会自动处理为inline函数. 类对象的内存大小之和成员变量有关 类在内存上需要对齐,是为了减轻 ...
- Vulnhub-napping
1.信息收集 先用arp-scan探测出靶机地址 arps-scan -l 显然靶机地址 10.1.1.106,然后利用nmap进行详细信息收集 nmap -A 10.1.1.106 可以看到,目标的 ...
- Vmware虚拟机安装及相关配置流程
1.Vmware虚拟软件安装 1.1下载地址 vmware 12 pro 的版本稳定性较好,所有我们最好选择该版本 下载地址:https://www.onlinedown.net/soft/10053 ...
- TL,你是如何管理项目风险的?
沙包和打伞的故事 美国在1961年到1972年组织实施的一系列载人登月飞行任务.目的是实现载人登月飞行和人对月球的实地考察,为载人行星飞行和探测进行技术准备,它是世界航天史上具有划时代意义的一项成就. ...
- 物联网无线数传应用中的Modbus通信网关协议到底是什么?
什么是物联网 通信Modbus网关 Modbus协议无线通信网关就是将一种Modbus协议帧转换为其他物联网无线数传协议帧. 比如将Modbus RTU的数据与Modbus TCP数据进行相互转换:也 ...