微服务学习(三):网关 + 配置管理 + RabbitMQ

2024最新SpringCloud微服务开发与实战 视频教程 下载 │ Elasticsearch01-14.JavaRestClient-文档的CRUD.mp4。│ Elasticsearch01-13.JavaRestClient-新增文档.mp4。│ MybatisPlus-10.核心功能-IService的Lambda方法.mp4。│ MybatisPlus-11.核心功能-IService的批量新增.mp4。│ Elasticsearch01-07.索引库操作-索引库的CRUD.mp4。 阅读详情

微服务学习(三):网关 + 配置管理 + RabbitMQ

在微服务架构中,网关(Gateway)负责统一流量入口,配置中心(Config Center)承担动态配置管理,而消息队列(MQ)则解决服务间的异步通信问题


一、API 网关:系统的统一流量入口

1. 网关是什么?

网关是介于客户端(前端/App)与后端微服务之间的中间层,所有请求的第一站。它扮演“总调度室”角色,屏蔽内部服务细节,提供统一的访问入口。

2. 核心职责(三大件)

职责描述
路由(Route)根据请求路径(如 /api/order/**)精准分发到对应的后端微服务集群。
转发(Forward)将请求原样或加工后透传给下游服务,并将响应返回客户端。
身份校验(Auth)拦截所有请求,进行 JWT Token 校验、黑白名单过滤,合法才放行(网关最核心的安全价值)。

3. 生产级进阶能力

  • 限流熔断:防止流量洪峰冲垮下游(如令牌桶、滑动窗口)。
  • 日志监控:统一记录全链路请求日志,便于排查。
  • 跨域处理:统一配置 CORS,避免每个微服务各自配置。
  • 动态路由:结合配置中心实现路由规则热更新。

二、配置中心:系统的“动态大脑”

在传统单体项目中,配置写在 application.yml 里即可。但在微服务架构下,几十上百个服务的配置管理会成为“配置地狱”。

1. 三大痛点

  • 重复配置多,维护成本高:每个服务都要配数据库、Redis、日志级别,IP 一变动就得改几十处。
  • 变更需重启,服务中断:业务开关、线程池调整等修改后,必须打包重启,影响可用性。
  • 网关路由写死:新增微服务或调整路由,需重启网关,导致所有请求中断。

2. 配置中心的解决方案(以 Nacos / Spring Cloud Config 为例)

核心能力实现方式
配置共享抽取公共配置(如 common-db.yml),服务通过 spring.cloud.config.import 引入,一处修改,处处生效。
配置隔离通过 namespace(环境隔离:dev/test/prod)和 group(业务线)区分不同场景。
热更新(动态刷新)服务监听配置变更事件,通过 @RefreshScope 或 @ConfigurationProperties 实时刷新内存配置,无需重启。
路由动态下发网关监听配置中心的 routes 配置,变更时自动更新内存路由表,实现零停机路由调整。

3. 网关 + 配置中心协作架构

┌─────────────┐          ┌─────────────────────────────────────────────────┐
│   前端/App   │ ──请求──▶│              API 网关 (Gateway)                │
└─────────────┘          │  1. 白名单过滤                                 │
                         │  2. JWT 身份校验                               │
                         │  3. 动态路由转发                               │
                         └──────────┬──────────────────────────────────────┘
                                    │
                        ┌───────────┴───────────┐
                        ▼                       ▼
              ┌─────────────────┐     ┌─────────────────┐
              │  用户微服务      │     │  订单微服务      │
              │  (User-Service) │     │  (Order-Service)│
              └────────┬────────┘     └────────┬────────┘
                       │                       │
                       └─────┬─────────────────┘
                             │  监听配置变更
                             ▼
                ┌─────────────────────────────┐
                │     配置中心 (Config Center)  │
                │  Nacos / Apollo / Consul     │
                │  - 配置文件存储               │
                │  - 动态刷新推送               │
                └─────────────────────────────┘

三、RabbitMQ:异步通信的桥梁

在微服务体系中,服务间除了同步调用(REST/Feign),还需要异步解耦。下面从同步与异步的对比开始,逐步深入 RabbitMQ。

1. 同步调用 vs 异步调用

对比维度同步调用(如 HTTP/Feign)异步调用(如 MQ)
优缺点优点:实时性高,结果立即可得;缺点:强依赖,服务阻塞,易引发级联超时,吞吐量受限。优点:解耦、削峰填谷、异步非阻塞、提高系统弹性;缺点:实时性降低,需处理最终一致性,运维复杂度增加。
适用场景要求强一致、实时响应的操作(如支付扣款)。耗时操作(如发送短信)、事件通知、日志采集、流量削峰。

2. MQ 技术选型(对比)

特性RabbitMQRocketMQActiveMQKafka
开发语言ErlangJavaJavaScala/Java
吞吐量万级(适中)十万级(高)万级百万级(极高)
消息可靠性高(持久化+确认)高高默认丢消息,需配置
消费模式推拉结合推拉结合推拉拉模式(轮询)
适用场景企业级通用,中小规模金融、电商大促老项目日志收集、大数据管道
社区活跃度高高(阿里)较低高

选型建议:中小型业务、对可靠性要求高的首选 RabbitMQ;大流量、对吞吐量极致要求的考虑 RocketMQ 或 Kafka。

3. 虚拟主机(Virtual Host)—— 数据隔离

RabbitMQ 中的 Virtual Host 类似于“命名空间”,每个 vhost 拥有独立的交换机、队列、绑定关系。不同 vhost 之间完全隔离,常用于多环境(dev/test/prod)或多租户隔离。

4. 使用步骤(快速上手)

  1. 引入依赖(Spring Boot):
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    
  2. 配置服务端信息(application.yml):
    spring:
      rabbitmq:
        host: 127.0.0.1
        port: 5672
        virtual-host: /dev
        username: guest
        password: guest
    
  3. 发送消息:注入 RabbitTemplate,调用 convertAndSend(exchange, routingKey, message)。
  4. 接收消息:在方法上标注 @RabbitListener(queues = "queueName"),监听指定队列。

5. 交换机类型与路由策略

交换机类型路由规则典型场景
Fanout(广播)忽略 routingKey,将消息发送给所有绑定的队列。广播通知、全局缓存更新。
Direct(直连)routingKey 完全匹配队列绑定的 bindingKey。单点精准路由,如订单状态更新。
Topic(主题)支持通配符:* 匹配一个单词,# 匹配零个或多个单词。灵活的多条件路由,如日志按级别和模块分发。
Headers(头匹配)根据消息头属性匹配,较少使用。复杂条件路由。

6. 声明队列与交换机(Spring 方式)

使用 @Configuration + @Bean 声明,或直接通过 @RabbitListener(bindings = @QueueBinding(...)) 简化。

7. 消息转换器

默认使用 SimpleMessageConverter(序列化为字节)。可替换为 Jackson2JsonMessageConverter,直接发送/接收 Java POJO,方便序列化。

@Bean
public MessageConverter messageConverter() {
    return new Jackson2JsonMessageConverter();
}

四、RabbitMQ 高级特性(生产必备)

1. 发送者可靠性

  • 发送者重连:配置 spring.rabbitmq.connection-timeout 和重试策略,应对网络抖动。
  • 发送者确认机制(Publisher Confirm):
    • 设置 publisher-confirm-type: correlated,RabbitMQ 收到消息后异步回调确认。
    • 还可设置 publisher-returns 处理不可路由的消息。

2. MQ 自身的可靠性

  • 数据持久化:队列和消息都设置 durable=true,保证 broker 重启不丢失。
  • Lazy Queue(惰性队列):RabbitMQ 3.6+ 支持,将消息直接存入磁盘(而非内存),适合超长队列,避免内存溢出,但吞吐量略有下降。

3. 消费者可靠性

  • 消费者确认机制(Ack):
    • 手动确认:channel.basicAck()(成功)或 basicNack()(失败并重新入队)。
    • 自动确认(默认)易丢消息,生产环境强烈建议手动 Ack。
  • 消费者失败重试策略:
    • 配置本地重试(spring.rabbitmq.listener.simple.retry),重试多次后仍失败,可记录死信或人工处理。
  • 业务幂等处理:防止消息重复消费,利用数据库唯一键、Redis 分布式锁或状态机保证幂等。

4. 延迟消息(Delay Message)

  • 什么是延迟消息:消息发送后,不立即消费,而是等待指定时间后再投递。
  • 实现方案:
    • 死信交换机(DLX) + TTL:为消息或队列设置过期时间(TTL),过期后转入死信交换机,再由死信交换机路由到业务队列,从而实现延迟。
    • 官方延迟插件(rabbitmq-delayed-message-exchange):更简单,直接指定延迟时间。
  • 典型场景:取消超时订单(订单下单后 30 分钟未支付,自动关闭)。
    流程:订单创建 → 发送延迟消息(30 分钟 TTL)→ 到期后死信转发 → 消费者检查订单状态,若未支付则取消。

我学习时遇到的疑惑?

为啥需要虚拟主机?为啥需要数据隔离?

原因有三点,极其硬核:

环境隔离(最核心的日常用途):在实际开发中,我们有 Dev(开发)、Test(测试)、UAT(预发布)、Prod(生产) 四套环境。如果没有 vhost,所有环境的消息都会混在一起。你在开发环境调试代码,结果把 Prod(生产环境)的订单队列给消费了,那是灾难性的事故。 有了 vhost,每个环境各用各的,互不干扰。

多租户/多业务线隔离:在一个大公司里,RabbitMQ 往往是公共中间件集群。订单团队和物流团队如果混用,万一订单团队发消息剧增,可能导致物流队列阻塞。通过 vhost,可以做到物理逻辑隔离,A 业务线的消息堆积不会影响 B 业务线。

权限控制的最小粒度:RabbitMQ 的用户权限(Username)是绑定在 vhost 上的。你可以给 A 用户只开放 /order 虚拟主机的写权限,给 B 用户只开放 /log 虚拟主机的读权限。没有 vhost,权限控制就无法精细化。

一句话总结:如果你把 RabbitMQ 比作一台物理服务器,那么 vhost 就是这台服务器上的虚拟机(VM)——各自拥有独立的文件系统、进程空间,互不打扰。

Lazy Queu把消息存到磁盘 那到时候用完了是不是得删除?

答:一定会删除,且 RabbitMQ 会自动清理,不会永久占用磁盘空间。

Lazy Queue 的设计初衷是“用磁盘空间换取内存稳定”,但它绝不是一个“历史数据归档库”。它的磁盘清理机制如下:

删除触发条件(核心):当消费者成功处理完消息并返回 ACK(确认应答)后,RabbitMQ 会立刻将该消息标记为“可删除”。

异步擦除(并非实时逐条删):为了性能,RabbitMQ 不会 每 ACK 一条就去磁盘删一条(那样随机 IO 会卡死)。它是将消息顺序追加写入日志文件(Segment)。当整个日志文件里的所有消息都被 ACK 后,这个文件会被整体标记为“空闲”,然后被垃圾回收(GC)或直接操作系统的 unlink() 系统调用删除。

对比非惰性队列:

非惰性队列(默认):消息尽量留在内存,内存压力大时才会换页(Swap)到磁盘。当消息被消费完,内存中的直接删除,磁盘上的换页文件也会被清理。

惰性队列(Lazy):消息一开始就存磁盘。当消息被消费完并 ACK 后,磁盘占用会瞬时降下来(实际体现为日志文件的滚动删除)。

特别注意(容量规划):
虽然 Lazy Queue 会删除已消费消息,但它有一个“积压期(Backlog)”。如果消费者宕机了,消息在生产端疯狂涌入,Lazy Queue 会把所有积压消息全写在磁盘上。这时确实会撑爆硬盘!
所以,开启 Lazy Queue 时,必须 配合以下措施:

监控磁盘剩余容量(RabbitMQ 默认有磁盘水位线 disk_free_limit,低于阈值会阻塞生产者)。

给消息设置 TTL(过期时间),防止死消息永久堆积。

五、小结

  • 网关统一流量入口,负责路由、鉴权、限流;
  • 配置中心集中管理动态配置,实现热更新和零停机;
  • RabbitMQ提供异步解耦、削峰填谷和可靠消息通信。

三者配合,让微服务系统具备高可用、高扩展和高弹性的能力。掌握这些中间件的核心原理和生产实践,是进阶分布式架构师的必经之路。

微服务常用技术栈 微服务技术栈的选择应根据项目需求、团队技能和长期维护成本来决定。一个成功的微服务架构需要综合考虑服务治理、部署自动化、数据一致性、监控和日志等多个方面。通过上述技术栈的合理组合和应用,开发者可以构建出高效、可靠且易于维护的微服务系统。随着技术的不断进步,新的工具和框架也在不断涌现,开发者需要保持学习和适应,以充分利用这些技术来提升微服务架构的性能和稳定性。 阅读详情

相关推荐

微服务架构落地的四维方法体系——服务模型、实现技术、基础设施与研发过程

微服务落地不是单点技术决策,而是一项系统工程。本文提出由服务模型、实现技术、基础设施与研发过程构成的四维方法体系:服务模型借助领域驱动设计与限界上下文划定边界,以绞杀者模式渐进拆分存量单体;实现技术围绕通信、事件驱动、网关、配置、数据一致性与可靠性等十大专题给出方案与取舍依据;基础设施覆盖测试金字塔、契约测试、持续交付、可观测性与零信任安全;研发过程依据康威定律重组全功能团队,用部署频率等四大效能指标度量转型成效。文末附上四维自查清单与六个常见误区,助你循序渐进、系统推进微服务架构转型落地。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

学习微服务(笔记)

如何利用OpenFeign实现远程调用?引入OpenFeign和SpringCloudLoadBalancer依赖利用@EnableFeignClients注解开启OpenFeign功能编写FeignClient如何配置OpenFeign的连接池?引入http客户端依赖,例如OKHttp、HttpClient配置yaml文件,打开OpenFeign连接池开关OpenFeign使用的最佳实践方式是什么?由服务提供者编写独立module,将FeignClient及DTO抽取。

weixin_45415107的博客 783

一张微服务地图的十年演进:Spring Cloud 核心、扩展与工具组件的定位、原理与选型

本文把 Spring Cloud 当作一张微服务地图来读:先说明它是由 Commons 抽象层、实现层和 Boot 装配层构成的发行版,再沿一次请求梳理注册发现、负载均衡、声明式调用、容错限流、网关、配置、追踪与总线七类核心组件的原理与换代,并扩展到云平台、服务网格、消息流、批处理、安全与周边生态。仿真实测:默认参数下实例宕机平均 242 秒才被感知,优雅下线降到 47 秒;一个慢实例让轮询的 P99 达 49 秒,P2C 仅 203 毫秒。最后给出退场替代表、技术栈组合、升级路线和决策树。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 169万+

微服务相关组件学习笔记

项目一键部署docker ps:查看docker容器(运行之后查看是否运行成功),用于查看正在运行的容器。docker images:于查看本地Docker服务器上的所有可用镜像。docker logs -f 【容器名字】:查看运行日志Note:需要改进RestTemplateGateAwayFilter:一般都使用GlobalFilter就够了,有对应需求时再看解决基于Bean声明队列交换机绑定Key臃肿的问题。

StepheBing的博客 924

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1367

Zabbix Trigger actions访问出现500

本篇博客详细介绍了Zabbix访问'Trigger actions'出现的错误状况,访问界面出现500,并提供了解决方案。

格子的博客 561

微服务学习(上)(黑马商城笔记,自用)

记录学习微服务过程,冲冲冲

Asuna_shino的博客 852

[FPGA高速以太网]基于Verilog与1G/2.5G Ethernet PCS/PMA IP核的2.5G UDP通信实战

本文详细介绍了基于FPGA与1G/2.5G Ethernet PCS/PMA IP核实现2.5G UDP通信的完整实战方案。文章以黑金AX7A200开发板为硬件平台,深入讲解了从硬件选型、IP核配置、Verilog测试逻辑编写到系统调试与性能验证的全过程,重点剖析了利用SGMII接口与GTP收发器实现高速数据传输的关键技术与避坑指南,为FPGA高速以太网应用开发提供了宝贵经验。

sql99的博客 567

微服务学习

一.跨服务之间的远程调用。

king9991的博客 482

数字通信:信源编码、信道编码、调制、物理信道、解调、信道解码、信源解码

在通信系统中,信息的传输通常需要经过一系列的处理步骤,确保数据可以在信道中高效且可靠地传输。以下是信源编码、信道编码、调制、物理信道、解调、信道解码、信源解码的具体含义及其常见技术的解释。

weixin_44012667的博客 4804

从FPGA工程师视角看CXP-12:如何用Xilinx GTX/GTH收发器搞定一条50Gbps的工业相机数据流?

本文从FPGA工程师视角详细解析了如何利用Xilinx GTX/GTH收发器实现50Gbps的CXP-12工业相机数据流传输。通过协议分析、硬件设计要点和FPGA逻辑实现,帮助开发者高效构建高带宽工业视觉系统,特别适合4K/8K高分辨率图像处理需求。

weixin_42533622的博客 279

微服务学习(黑马)

命令最后的点表示dockerfile在当前目录下。上面的dockerfile有很多可以减少的地方,上面我们基于ubuntu开始构建,需要自己配置jdk,但我们可以基于java:8-alpine在Centos7中使用Docker安装-p 15672:15672 \ #rabbitmq的管理平台的端口-p 5672:5672 \ #之后做消息通信的端口,发消息收消息要通过该端口-d \

abcd661054026的博客 1127

RK3568 解决MIPI屏幕开机只显示uboot logo的问题

之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法,这次产品迭代,硬件改版,选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路,事情总是事与愿违,同样的路,遇到新的坑。

fhqlongteng的博客 5425

微服务日常学习

服务的拆分及远程调用 调用其他服务用restTemplate 其实用过好多次了,只不过原来是微服务的内容啊 Eureka注册中心 管理服务,30s心跳 配置 1 引入依赖 2添加注解 3 添加yml配置信息 这就配好了服务,4还要在每个服务中yml添加一下Eureka的地址就可以了。 那么如何调用呢 1修改url地址写服务名称 实现负载均衡 给RestTemplate加注解 @LoadBalanced 更改负载均衡的规则 在service中。 @Bean public IRule randomRule().

MRzhenglea的博客 468

在天问block环境下LU-ASR01与51单片机的基础运用

正确步骤将模块和电脑连接后,仍然显示未连接(如4.1中图片中的编译下载后面显示未连接),可以尝试关闭软件后尝试,如果仍然不行换一条type-c线再试;以上方式都不行,可能要怀疑ASR01硬件损坏,跟商家联系!!!

BUG7073的博客 1万+

【01】总目录——软件设计师50讲通关地图|从零基础到工程师职称

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏的01篇总目录,系统梳理了50篇博文的完整架构与核心逻辑。专栏覆盖软考软件设计师(中级)全部考点,分为导学规划、基础知识、设计模式、下午题专项、算法实战、冲刺模拟、收官进阶七大模块,既兼顾上午题75道单选题的理论攻坚,也聚焦下午题案例分析的解题能力提升。每篇博文均包含考点精讲、真题解析、实战技巧与速记方法,配套可运行代码、解题模板及备考资源。无论你是零基础转行、在校学生还是在职程序员,都能通过这份学习地图明确进度、精准定位薄弱环节,高效搭建知识体系

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1278

5个步骤快速上手.NET eShop:终极微服务架构学习指南

.NET eShop是一个基于Microsoft .NET技术栈开发的完整电子商务平台参考应用,采用现代化的微服务架构设计,为开发者提供了一个学习企业级应用开发的绝佳示例。这个开源项目不仅展示了如何构建可伸缩、高可用的电商系统,还融入了最新的云原生技术和最佳实践,是学习.NET微服务架构的完美起点。 ## 🚀 为什么选择.NET eShop作为学习项目? 在当今的软件开发领域,微服务架构已经

gitblog_00476的博客 739

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

微服务讲解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iP8rs5Oi-1662454500902)(C:\Users\fanvil\AppData\Roaming\Typora\typora-user-images\1662364131986.png)]一般我们需要配置的是日志级别自定义Feign的配置有两种方式方式一:配置文件方式全局生效。

Chen_Sir____的博客 1241

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

eShopOnAbp微服务通信机制:gRPC与HTTP API的最佳实践

eShopOnAbp是基于ABP Framework和.NET构建的参考微服务解决方案,它在Kubernetes上运行并使用Helm配置,包含API网关、Angular和ASP.NET Core MVC应用程序以及PostgreSQL和MongoDB数据库。本文将深入探讨eShopOnAbp中微服务通信的两种主要机制:gRPC和HTTP API,并分享它们的最佳实践。 ## 微服务通信概览:为什

gitblog_00054的博客 717

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

学习笔记-微服务基础(黑马程序员)

1、定义新的IRule,将轮询策略(默认)变成随机策略@Bean2、配置文件方式userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则区分全局和单个服务xxservice服务全局修改日志级别NONEBASICHEADERSFULL响应结果的解析器。

weixin0605的博客 1019

微服务架构实战指南:ASP.NET Core微服务开发

欢迎来到ASP.NET Core微服务开发的深度实践之旅。本教程基于[aspnetrun/run-aspnetcore-microservices](https://github.com/aspnetrun/run-aspnetcore-microservices)这一开源项目,它展示如何在.NET平台上构建复杂的微服务体系。本项目融合了最新的.NET 8特性与C# 12,覆盖了从垂直架构到清洁架

gitblog_00997的博客 1051

求职学习day11背八股

本质上我和早睡早上起来玩一早上的游戏没有区别,甚至学习状态更差。得想个办法 12 点睡觉。第三次 hr 面,为德科和华为的工作效率感到无语。下周一两场面试。真是要死,这五天时间基本没学什么。八股、项目、手撕。。没一个有能力的感觉。java基础、SpringCloud、Redis、RibbitMQ、Springboot、消息队列、微服务。

m0_60350022的博客 608

【实用篇】SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud分布式

配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则(针对某个服务的负载均衡策略)user-service: # 给某个微服务配置负载均衡规则,这里是user-service服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则1. Feign可以支持很多的自定义配置。

m0_46638350的博客 1737

年薪百万架构师必备:微服务架构宝典(4大模块 全是重点)

SpringCloud笔记手册(三)SpringCloud笔记手册(四)在实际的企业开发中,消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。不同的中间件其实现方式,内部结构是不一样的。

2401_84003554的博客 719

ASP.NET Core 微服务项目教程

`run-aspnetcore-microservices` 是一个基于 ASP.NET Core 的微服务架构示例项目。该项目展示了如何使用 ASP.NET Core 构建、部署和管理微服务。它涵盖了微服务架构中的常见模式,如服务发现、配置管理、API 网关、事件驱动架构等。通过这个项目,开发者可以学习到如何在实际应用中实现微服务架构。 ## 项目快速启动 ### 环境准备 1. **安装

gitblog_00268的博客 737

Spring-Cloud微服务学习笔记(1)

介绍了微服务中Eureka、nacos、Feign、Gateway、RabbitMq的相关知识

2302_79993738的博客 428
上一篇: 微服务学习(二):服务拆分 + 治理 + OpenFeign
下一篇: 微服务学习最终篇: Elasticsearch
程序员梅雨
博客等级 码龄3年 19粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值