dubbo详解-程序员宅基地

技术标签: 笔记  java  dubbo  分布式  

分布式与RPC

软件架构

单一应用架构

  • 即将所有的功能都部署到同一个服务器中

  • 优点

    • 简单易用 开发难度低 适合用于规模流量小的网站
  • 缺点

    • 扩展困难

    • 不利于多人同时开发 升级维护

    • 系统的空间占用大

在这里插入图片描述

分布式服务架构

  • 即将核心业务抽取出来 形成一个独立的服务

在这里插入图片描述

分布式系统

  • 即将服务分散部署到若干台计算机服务器上

  • RPC(Remote Procedure Call)为远程过程调用

dubbo

概述

  • 是一个分布式服务框架 是一个高性能轻量级的Java RPC框架

  • 主要功能

    • 面向接口的远程方法调用

    • 智能容错与负载均衡

    • 服务自动注册与发现

基本架构

在这里插入图片描述

  • 说明

    1. 服务容器Container负责启动、加载、运行服务提供者Provider

    2. Provider在启动时向注册中心Registry注册自己所提供的服务

    3. 服务消费者Consumer在启动时向Registry订阅自己所需的服务

    4. Registry返回Provider的地址列表给Consumer 若有变更 Registry将基于长连接推送变更数据给Consumer

    5. Consumer从Provider的地址列表中基于软负载均衡算法选一台Provider进行调用 若调用失败 再选另外一台Provider进行调用

    6. Provider与Consumer在内存中会累计调用次数与调用时间并每分钟定时的发送一次统计数据到监控中心Monitor

  • dubbo支持多种协议 但官方推荐使用dubbo协议 端口号默认为20880

    <dubbo:protocol name="dubbo" port="20880" />
    

直连方式

  • 即消费者直接通过一不变的url来访问固定的提供者

    <dubbo:reference url="dubbo://localhost:20880" />
    

术语

  • 分包

    • 即将服务接口、服务模型(实体bean)、服务异常等都放到公共包中以便提供者与消费者调用
  • 粒度

    • 服务接口要尽可能的大粒度 即每个服务方法应代表一个功能而不是某个功能的某个步骤 否则将面临分布式事务的问题 且dubbo暂未提供分布式事务的支持

    • 服务接口应以业务场景为单位来划分 并对相似业务进行抽象 以防止接口数量爆炸

    • 不建议使用过于抽象的接口 如Map query(Map map) 这样的接口没有明确的语义 会给后期的维护带来诸多不便

  • 版本

    • 每个提供者、消费者都应定义版本号 为后续的不兼容升级提供便利
    • 变更服务版
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dddddd_hdysj/article/details/126286384

智能推荐

如何使用SmS-Activate 服务接收海外短信验证码-程序员宅基地

文章浏览阅读7.8k次,点赞10次,收藏22次。有些国外应用不支持+86号注册,接收不到信息验证码,无法注册针对这一场景,市场上有很多成熟的解决方案,如sms-activate提供的服务。_sms-activate

Flink基础系列5-Flink 配置文件参数_sql-client-defaults.yaml-程序员宅基地

文章浏览阅读1.6w次。文章目录一.Flink配置文件概述1.1 基础配置1.2 高可用性配置1.3 容错和检查点 配置1.4 web 前端配置1.5 高级配置1.6 Flink 集群安全配置1.7 Zookeeper 安全配置1.8 HistoryServer1.9 masters1.10 slaves1.11 zoo.cfg1.12 日志配置1.13 sql-client-defaults.yaml参考:一.Flink配置文件概述安装目录下主要有 flink-conf.yaml 配置、日志的配置文件、zk 配置、Flink_sql-client-defaults.yaml

探索Fofa-hack:一款强大的网络数据搜索工具-程序员宅基地

文章浏览阅读368次,点赞5次,收藏3次。探索Fofa-hack:一款强大的网络数据搜索工具项目地址:https://gitcode.com/Cl0udG0d/Fofa-hack在网络安全和渗透测试的世界里,数据搜索是至关重要的一个环节。Fofa-hack 是一个基于Fofa API开发的工具,旨在帮助安全研究人员、开发者以及爱好者更有效地发现和定位目标信息。本文将详细介绍Fofa-hack的功能、技术实现和应用场景,以期吸引更多用户...

钉钉小程序怎么实现日期和时间段的选择-程序员宅基地

文章浏览阅读675次。1、访问日期是不可以用picker的,这样会重复出现弹框。2、我在这里使用的是view。就可以实现日期的选择了。

sensor简介-程序员宅基地

文章浏览阅读617次。http://wenku.baidu.com/view/404957da5022aaea998f0ffa.html_sensor

[UVM]一文搞懂UVM callback-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏49次。一文搞懂UVM callback 前言:在UVM验证平台中,callback的最大用处就是提高验证平台的复用性。很多情况下,我们期望在一个项目中开发的验证平台能够用于另外一个项目。但是,通常来说,完全的复用是比较难实现的,两个不同的项目之间或多或少会有一些差异。如果把两个项目不同的地方使用callback来做,而..._uvm callback

随便推点

怎么用matlab剔除数据的异常值(3σ准则)_3sigma原则matlab-程序员宅基地

文章浏览阅读5.2w次,点赞27次,收藏379次。参考:https://blog.csdn.net/weixin_30633405/article/details/951770093σ准则又称为拉依达准则,它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的,当测量次数较少的情形用准则剔除粗大误_3sigma原则matlab

导入PYQT5不能使用的坑_pdroid3已经导入pyqt5怎么不管用-程序员宅基地

文章浏览阅读5.1k次,点赞4次,收藏17次。如图:import进来之后里面的类全都不能用是因为这个引用路径下面有中文。改成英文的就不报错了,如果还是报错,那就新建一个项目命名成英文_pdroid3已经导入pyqt5怎么不管用

手推线性模型及最小二乘法(房价预测实例)_基于最小二乘法的房价预测实验报告-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏24次。手推线性模型及最小二乘法(房价预测实例)线性模型及最小二乘法推导房价预测实例Reference线性模型及最小二乘法推导房价预测实例生成数据#生成数据import numpy as np#生成随机数np.random.seed(1234)x = np.random.rand(500,3)#构建映射关系,模拟真实的数据待预测值,映射关系为y = 4.2 + 5.7*x1 + 1..._基于最小二乘法的房价预测实验报告

多文件使用全局变量时extern的规范用法_extern变量多个文件中修改-程序员宅基地

文章浏览阅读494次。关键字extern用来声明变量或者函数是一个外部变量或者外部函数,也就是说告诉编译器是在其他文件中定义的,编译的时候不要报错,在链接的时候按照字符串寻址可以找到这个变量或者函数。(函数默认是外部类型的,不需要显示声明,但是变量必须,如果想把一个函数声明为只在本文件范围有效,那么可以用static来说明) 在某个头文件,比如A.h中定义了全局变量比如int a;,那么在其他文件中的函数调用变量a的时候需要在对应头文件或者定义文件中(保证在使用这个变量前)使用extern int a;..._extern变量多个文件中修改

为 OpenBMC 添加一个新的系统_openbmc对meta名字有要求吗-程序员宅基地

文章浏览阅读773次,点赞15次,收藏27次。在上一篇文章中向大家介绍了OpenBMC的是什么以及它的作用和应用场景,并且以一个自带的示例平台romulus展示了从下载源码包开始到启动系统并访问Web控制页面的整体构建流程。通过前文已经了解到如何为已有的平台构建系统镜像,下面我们来探索一下如何为我们自己的平台构建OpenBMC的系统镜像。_openbmc对meta名字有要求吗

闹钟+秒表+倒计时三合一_时钟和倒计时同时显示-程序员宅基地

文章浏览阅读652次。这个是一个可以实现闹钟,计时,倒计时的安卓简单APP。特别提醒,闹钟部分,国产手机会把后台闹钟服务功能杀掉,延迟几分钟闹甚至不闹。没办法国产手机为了对付某些狗血APP只能强制性。。。倒计时可以在后台运行,但是秒表部分只能在当前界面运行,重新进入就清零了。_时钟和倒计时同时显示