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

Dubbo是框架,并不是像http那种传输协议

传统系统间通信方式:

系统A和系统B之间耦合性非常大,系统A配置文件里面基本会把系统B的所有接口写进去,若果系统B有多个tomcat,中间还得配个Nginx,若经常有机器增减,Nginx配置也要经常改,扩展起来非常麻烦

如果A系统要调用B系统里面的函数,只能通过http接口去调,数据传输需要转换成json,返回来再把json转成对象,而转json对性能损耗非常大

比如:JdbcTest(系统A)要去调JavaVuser(系统B)下的JdbcTest里面的方法

Dubbo框架

zookeeper的作用:

1、配置管理

2、负载均衡

可以把zookeeper理解为一个类似于mysql的数据库,主不过里面存的不是表,而是系统B的ip、端口号、url

当项目B启动的时候,会自动的把项目B的ip、端口号、url全部写入到zookeeper中

当A需要调B里面的接口的时候,就不用去连接B,只需要去zookeeper找到B接口,再去找ip、端口号,然后通过TCP进行通信,而不是http

当同一个接口,有多个ip和端口号的时候(项目B布了多台机器),zookeeper也是采用轮询的策略

所以,Dubbo框架中,就用zookeeper,不需要使用Nginx

想要使用Dubbo框架,需要系统A和系统B去zookeeper里面写入数据(可以把此过程叫注册),留下ip、端口号

所以每Dubbo框架里面,每一个系统都有一个配置文件,配的是zookeeper的ip和端口号

zookeeper有一个心跳机制,如系统B部署了5个机器,zookeeper每秒钟检测一次,发现有3台机器没有响应了,就视为挂了,会自动去掉这几个的ip

zookeeper提供了一个管理工具:dubbo-admin,类似于navicat连接数据库一样

性能测试二十七:环境部署之Dubbo原理的更多相关文章

  1. 性能测试二十八:环境部署之Dubbo部署

    Zookeeper部署 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...

  2. 性能测试二十二:环境部署之Nginx

    由于单纯用tomcat只能通过ip+端口号的形式访问,这样只能访问一个tomcat,而真实项目中又不可能只用一两个tomcat,所以就需要Nginx来进行分配访问请求, Nginx本身性能非常好,据官 ...

  3. [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行

    一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...

  4. Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现

    昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...

  5. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

  6. Spring Boot (二)集成Jsp与生产环境部署

    一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...

  7. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  8. (二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署

    在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题. 这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的. ------------首 ...

  9. Linux——Django 开发环境部署(二)python版本控制器pyenv

    python版本控制器pyenv 之前的 那篇是说明了django环境的site package完全独立出来了,但是使用的python解释器还是系统的,为了继续独立出来,甚至是达到ruby的rvm的自 ...

随机推荐

  1. 获取天气预报API5_统计最容易生病时间段

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  2. javascript 模拟京东关闭广告栏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Hive记录-hive权限控制

    在使用Hive的元数据配置权限之前必须现在hive-site.xml中配置两个参数,配置参数如下: <property> <name>hive.security.authori ...

  4. 使用Spring时web.xml中的配置

    使用Spring时web.xml中的配置: <?xml version="1.0" encoding="UTF-8"?> <web-app x ...

  5. spring注解第07课 @Valid和@Validated的总结区分

    @Valid: @Valid注解用于校验,所属包为:javax.validation.Valid. ① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Gir ...

  6. C# 面向对象的new关键字的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  7. np.savetxt()——将array保存到txt文件,并保持原格式

    问题:1.如何将array保存到txt文件中?2.如何将存到txt文件中的数据读出为ndarray类型? 需求:科学计算中,往往需要将运算结果(array类型)保存到本地,以便进行后续的数据分析. 解 ...

  8. CEdit使用(Edit Control控件)

    CEdit使用(Edit Control控件) 编辑框只读 属性 Read Only等于 True,就有了只读效果 密码框 属性 Password 等于 True,就有了密码效果 获取值/赋予值 Up ...

  9. C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)

    什么是面向对象? 在软件的设计过程中的两种方式: 把程序按照算法的执行步骤来拆解,一步步实现,这是面向过程编程: 把程序按照现实世界的理解,分成不同对象,通过多个对象之间的相互作用,来完成程序的最终功 ...

  10. 【转】Python中的字符串与字符编码

    [转]Python中的字符串与字符编码 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常 ...