Java阶段五Day06

news2024/11/22 21:38:52

Java阶段五Day06

文章目录

  • Java阶段五Day06
    • 问题解析
      • 阶段性架构图
    • Dubbo组件
      • 远程调用
      • RPC概括
      • Dubbo
      • Dubbo调用案例
        • 调用业务选择和dubbo角色
        • 环境准备
        • dubbo远程调用原理

问题解析

阶段性架构图

这个架构图,由于nacos的功能,可以实现服务治理(服务实例信息的管理)

需要引入新的组件,来完成服务调用

nacos管理的服务集群中,由于业务存在调用关系,需要实现的负载均衡+远程调用

Dubbo组件

远程调用

远程调用,只要走网络通信协议,http也可以实现贴近应用层的协议,我们的微服务之间调用是内部访问,应该更关心性能,如果整个微服务集群对外提供功能,关注方便程度

微服务落地架构,已经把内部http协议通信,换成RPC

对内RPC,对外HTTP

RPC概括

RPC包含2部分内容

  1. 序列化过程: 是调用传输存储过程中,从内存到内存设计的数据转化过程。 有非常多的序列化方法,序列化协议
  2. 通信过程:端与端通信对接,选择使用的底层通信方式(http,tcp)

Dubbo

dubbo是一个RPC框架,序列化,底层通信协议,都可以已经包装好的

官网地址

Apache Dubbo 是一款高性能、轻量级 的开源服务框架。

提示:错误的理解是占用的磁盘空间大小

轻量级:使用方便,快捷,不会在使用和创建的过程中投入过多的时间成本,和学习成本.

SPRING框架轻量级还是重量级: 整体是轻量级的(尤其是在springboot出现之后)早期版本中xml配置是重量级的

提供了六大核心能力:

  • 面向接口代理的高性能RPC调用
  • 智能容错和负载均衡
  • 服务自动注册和发现
  • 高度可扩展能力
  • 运行期流量调度
  • 可视化的服务治理与运维

Dubbo调用案例

调用业务选择和dubbo角色

dubbo需要一些概念的支持

  • provider(服务提供者): 远程调用的被调用的服务实例

  • consumer(服务消费者): 远程调用的调用发起的服务实例

  • 注册中心(服务协调者):dubbo支持很多不同种类的注册中心,比如zookeeper,redis,nacos

环境准备

  1. 启动nacos

  1. 确定两个角色的服务实例

csmall-stock: 能否正常启动

csmall-order: 能否正常启动

  1. 对两个工程挨个引入dubbo组件,引入步骤 依赖,yaml配置,注解+配置类

第一步 依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>

第二步 yaml

spring:
  application:
    name: csmall-stock
dubbo:
  application:
    #dubbo客户端 在nacos注册,携带的服务名称
    name: ${spring.application.name}
  protocol:
    #port表示dubbo底层通信协议使用的端口 -1 自增的端口号
    #20880开始,查看当前服务,哪个没有被占用
    port: -1
    name: dubbo
  registry:
    #告诉dubbo注册中心类型和地址
    address: nacos://localhost:8848
    #禁止dubbo在nacos中自动创建一些无效的配置文件
    use-as-config-center: false
    use-as-metadata-center: false
  cloud:
    #明确当前服务,订阅的其他服务,如果需要调用其他服务,用多个服务拼接,
    #不配置这个属性,会导致当前的dubbo客户端默认订阅nacos所有服务
    # 不给值,订阅空
    subscribed-services: 
  consumer:
    #如果当前程序 有consumer的角色,不会在启动时检查provider是否存在
    #如果当前程序不是consumer,这个配置没有任何作用
    check: false

第三步 配置类+注解

在项目启动类中,添加dubbo配置导入@Enable***

在业务层,使用dubbo注解,提供注册信息携带数据

根据上述步骤完成provider配置之后,使用dubbo整合order

和provider不同的在于注解的使用,调用远程service实现的引入bean对象的注解不再使用@Resource@Autowired

建议: 明确调用关系(business=>orderorder=>stockorder=>cart),避免频繁启动,停止,造成调用混乱。每次启动,从被调用者开始启动,保证调用者启动时,有可用的调用实例

测试入口 就是OrderController 使用前段接口文档页面 localhost:20001/doc.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fhXpHnjY-1689311989225)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day06/assets/image-20230714120619602.png)]

dubbo远程调用原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nPukqJSc-1689311989226)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day06/assets/image-20230714115606261.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/752249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精确长延时电路/数字式长延时电路设计

精确长延时电路 该电路由CD4060组成定时器的时基电路&#xff0c;由电路产生的定时时基脉冲&#xff0c;通过内部分频器分频后输出时基信号。在通过外设的分频电路分频&#xff0c;取得所需要的定时控制时间。 一、电路工作原理 电路原理如图13 所示。 通电后&#xff0c;时…

MySQL在Centos 7环境安装

说明&#xff1a; 1.安装与卸载中&#xff0c;用户全部切换成为root&#xff0c;一旦安装&#xff0c;普通用户都能使用。 2.初期练习&#xff0c;mysql不进行用户管理&#xff0c;全部使用root进行&#xff0c;尽快适应mysql语句&#xff0c;后面学了用户管理&#xff0c;在考…

Unity UnityWebRequest使用http与web服务器通讯

一、搭建客户端与服务器http通讯 1.在Nodejs中文官网Node.js 中文网 (nodejs.com.cn)&#xff0c;下载并安装Nodejs 2.在项目文件夹下新建WebServer文件夹&#xff0c;打开CMD窗口&#xff0c;在WebServer文件夹路径下安装express 3.在WebServer文件夹中新建main.js文件&#…

【UE4 塔防游戏系列】03-创建第一个敌人

步骤 1. 新建一个父类为“Chararcter”类&#xff0c;作为所有敌人的总类&#xff0c;命名为“TotalEnemyCategory” 以“TotalEnemyCategory”为父类创建子蓝图类&#xff0c;命名为“Enemy1” 2. 新建一个动画蓝图 选择目标骨骼为“Skeleton_Crossbowman_Skel” &#xff0c…

Stable Diffusion - After Detailer 插件 脸部和手部 重绘算法与应用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131699857 After Detailer 是一个用于 Stable Diffusion Webui 的扩展插件&#xff0c;可以自动检测、遮盖和修复图片中的人脸、手部或全身&#…

Latex 合并单元格 (合并同列的两行不居中问题)

Excel转latex 即使设置了居中&#xff0c;在latex也会不居中 删除上面这个

音频播放器Web页面集成(基于HTML5)

音频播放器是云点播Web播放器的重要补充&#xff0c;主要应用于音频为主的业务场景&#xff0c;基于HTML5实现PC/移动端兼容&#xff0c;并深度融合了视频云业务&#xff0c;如支持加密播放等&#xff0c;为用户提供简单、快速、安全、稳定的播放服务。 基础功能 支持播放上传…

冒泡排序模拟实现qsort()函数

冒泡排序模拟实现qsort函数 前言1. 分析2. 解决一&#xff0c;如何接受不同数据3. 解决二&#xff0c;如何实现不同数据的比较4. 解决三&#xff0c;如何实现不同数据交换5. 模拟bubble_sort&#xff08;&#xff09;函数排序整型所有代码实现6. 结构体排序实现7. 结尾 前言 要…

将字符串转为类名

使用globals函数将字符串转为类名 如下&#xff1a; class Data:def __init__(self):self.name kellydef hello(self):print(hello)#直接使用字符串报错 res Data().hello() #res Data.hello()res1 globals()[Data]().hello()#通过字符串获取变量数据&#xff08;变为类中…

【ACM】—蓝桥杯大一暑期集训Day1

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

怎样优雅地增删查改(五):按组织架构查询

文章目录 原理实现应用测试 之前我们实现了Employee&#xff0c;Alarm管理模块以及通用查询应用层。 Employee的集合查询业务&#xff0c;是通过重写CreateFilteredQueryAsync方法&#xff0c;来实现按组织架构查询的过滤条件。 我们将这段逻辑代码提取到通用查询应用层中&…

【前后缀GCD】ABC125 C

C - GCD on Blackboard (atcoder.jp) 题意&#xff1a; 思路&#xff1a; 这道题&#xff0c;多看看样例大概就出来了 由样例可知&#xff0c;换成的数可以是其他N-1个数的gcd&#xff0c;这样对答案的贡献也没有影响 所以直接去枚举换的是什么数就行 因此怎么去快速求其他…

对于 Spring MVC 了解? SpringMVC 的执行流程?SpringMVC 的核心是什么?请求的流程是怎么处理的?控制反转怎么实现的?

对于 Spring MVC 了解? 之前 Model1 和 Model2 这两个没有 Spring MVC 的时代。 Model1 时代 : 整个 Web 应用几乎全部用 JSP 页面组成&#xff0c;只用少量的 JavaBean 来处理数据库连接、访问等操作。 JSP 既是控制层又是表现层&#xff0c;存在很多问题&#xff0c;如①将…

逆天!安卓正式超越 Windows 成世界第一大操作系统

导读Android是一种基于Linux的自由及开放源代码的操作系统&#xff0c;主要使用于移动设备&#xff0c;如智能手机和平板电脑&#xff0c;由Google公司和开放手机联盟领导及开发。 10 亿的用户数意味着 Windows 依然是第一大桌面操作系统&#xff0c;不过如果算上智能手机平台…

抖音seo源码矩阵系统开发规则开发者分享(一)

抖音SEO矩阵系统源码开发&#xff0c;需要遵循一下步骤 1. 确定需求和功能&#xff1a;明确系统的主要目标和需要实现的功能&#xff0c;包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构&#xff1a;根据需求和功能确定系统的架构&am…

微信公众号错误代码:40125

微信公众号错误代码&#xff1a;40125 报错代码 错误代码&#xff1a;40125, 错误信息&#xff1a;invalid appsecret rid: 64b0ba1d-74e53e36-717abb43&#xff0c; 微信原始报文&#xff1a;{"errcode":40125,"errmsg":"invalid appsecret rid: 6…

金融数据库的战场,太平洋保险和OceanBase打了场胜仗

点击关注 文丨刘雨琦 “数据库的国产替代&#xff0c;必须经过严格的考虑&#xff0c;保证不会出错&#xff0c;所以大多数企业的领导层选择按兵不动或者简单扩容。因为不换就不会错&#xff0c;选了很久如果选错&#xff0c;还可能会出现重大事故。” 某银行数据库技术人员…

UG\NX二次开发 获取对象的边界包容盒 UF_MODL_ask_bounding_box_aligned

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取对象的边界包容盒 UF_MODL_ask_bounding_box_aligned,可以得到指定坐标系下的盒子,速度快,结果不精确 效果: 代码: //UF_MODL_ask_bounding_box_aligned #include "me.hpp" #i…

【ABAP】数据类型(六)「域的概要」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…

Java使用EsayExcel导出模板,涉及多个sheet

需求&#xff1a;利用excel模板导出&#xff0c;有两个sheet&#xff0c;其中一个sheet涉及固定字段导出和多数 据(List)导出 1、模板 sheet1&#xff1a; sheet2&#xff1a; 2、主要代码 public static void outputExcelForTunnelMonitor(HttpServletResponse r…