当前位置: 首页 > news >正文

【Spring Cloud】微服务通信概述

SueWakeup

                                                      个人主页:SueWakeup

                                                      系列专栏:学习技术栈

                                                      个性签名:人生乏味啊,我欲令之光怪陆离

本文封面由 凯楠📷 友情赞助播出

 目录

前言

1. Dubbo(Spring Cloud Alibaba)和 Spring Cloud 的适用场景

2.  Dubbo(Spring Cloud Alibaba)实现 RPC 调用

3. Dubbo(Spring Cloud Alibaba)和传统 Dubbo 的区别

4. 处理服务之间同步和异步通信(Spring Cloud Alibaba)

5. 实现服务间的安全通信


前言

什么是微服务通信?

        微服务通信指的是在微服务架构中,应用程序被拆分成多个小型的、独立部署的服务单元,微服务通信通过网络协议帮助不同的微服务之间进行数据传输、调用对方的功能,实现系统的整体业务逻辑。


1. Dubbo(Spring Cloud Alibaba)和 Spring Cloud 的适用场景

场景DubboSpring Cloud
通信协议主要适用 RPC 协议,适合内部高效的服务间同步调用倾向于 RESTful HTTP 协议,适用于跨网络的异构系统集成
性能和延迟

在性能和延迟方面表现更优

适合对性能要求较高的内部服务通信

在通用性和易用性方面更强
生态和集成

专注于服务调用和性能优化

提供更全面的微服务解决方案

如配置管理、服务发现等

社区和支持适用于对性能有特殊要求的场景社区更活跃,与各种云平台的集成更深入

2.  Dubbo(Spring Cloud Alibaba)实现 RPC 调用

  1. 依赖配置:在项目中引入 Dubbo 和 Spring Cloud Alibaba 相关依赖
  2. 服务提供者配置:在服务提供者端配置 Dubbo 的服务暴露相关参数,如接口、版本等
  3. 服务消费者配置:在服务消费者端配置 Dubbo 的服务引用相关参数,如接口、版本等
  4. 注册中心配置:配置适用 Nacos 、ZooKeeper 等作为 Dubbo 的注册中心
  5. 服务调用:通过 Duubo 提供的代理机制实现远程服务的透明调用

3. Dubbo(Spring Cloud Alibaba)和传统 Dubbo 的区别

(Spring Cloud Alibaba)Dubbo传统 Dubbo
集成程度

更深入地集成了 Spring Cloud 生态

提供了与 Spring Cloud 组件的无缝衔接

配置管理

可以利用 Nacos 等配置中心进行配置管理

实现配置的动态更新

服务发现与注册支持适用 Nacos 等服务发现和注册中心通常适用 Zookeeper
熔断与限流可以与 Sentinel 等组件结合,提供熔断和限流功能
云原生支持对云原生环境提供更好的支持,适应容器化和微服务架构


4. 处理服务之间同步和异步通信(Spring Cloud Alibaba)

  1. 同步通信:适用 RESTful 或 Dubbo 等 RPC框架进行同步调用,适用于对实时性要求高的场景
  2. 异步通信:利用消息队列(RocketMQ、RabbitMQ等)进行异步消息传递,适用于耗时操作或解耦服务间的直接依赖
  3. 合适的通信方式:根据业务场景的实时性、可靠性和解耦需求选择合适的通信方式
  4. 服务回调机制:在异步通信中,使用回调机制处理相应结果,确保业务逻辑的连续性
  5. 事务一致性处理:在异步通信中注意事务一致性的问题,利用分布式事务解决方案保证数据的一致性

5. 实现服务间的安全通信

  • HTTPS 配置:在服务间通信中使用 HTTPS 协议加密数据传输
  • 服务认证:通过 OAuth2、JWT 等机制实现服务间的认证
  • 权限控制:利用 Spring Security 或其他安全框架实现细粒度的权限控制
  • API 网关安全:在 API 网关层实施安全策略,如请求限流
  • 数据加密:对敏感数据进行加密处理,确保数据在传输和存储过程中的安全

相关文章:

  • 【C语言】结构体内存对齐问题
  • <JavaEE> 了解网络层协议 -- IP协议
  • 从零到一构建短链接系统(八)
  • 通过jsDelivr实现Github的图床CDN加速
  • Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)
  • Visual Studio 2022下配置 OpenMP 多线程编程环境与运行
  • java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
  • 计算机网络相关
  • 实战打靶集锦-027-SoSimple1
  • 【Redis】Redis常见原理和数据结构
  • AI开源概览及工具使用
  • PHP全新美化广告横幅在线制作源码
  • Qt-QDialog非模态置于窗口之上且操作主窗口不隐藏dialog的方法
  • npm run dev命令的执行顺序和原理
  • 【WEEK4】 【DAY1】整合SSM框架之基本环境搭建—第二部分【中文版】
  • 【RocksDB】TransactionDB源码分析
  • 2017-09-12 前端日报
  • Android框架之Volley
  • EOS是什么
  • Java 多线程编程之:notify 和 wait 用法
  • JAVA之继承和多态
  • Ruby 2.x 源代码分析:扩展 概述
  • spring + angular 实现导出excel
  • ubuntu 下nginx安装 并支持https协议
  • Vue.js源码(2):初探List Rendering
  • WebSocket使用
  • WePY 在小程序性能调优上做出的探究
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 免费小说阅读小程序
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 无服务器化是企业 IT 架构的未来吗?
  • 新版博客前端前瞻
  • 异常机制详解
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #pragma once
  • (52)只出现一次的数字III
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (SpringBoot)第二章:Spring创建和使用
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)程序员疫苗:代码注入
  • .net 7 上传文件踩坑
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net Signalr 使用笔记
  • .net 按比例显示图片的缩略图
  • .Net 高效开发之不可错过的实用工具
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池