
.NET 8 实战--孢子记账--从单体到微服务--微服务
文章平均质量分 89
.NET 8 实战--孢子记账--从单体到微服务--转向微服务
喵叔哟
Dedicated to promoting and advancing .NET in China for a lifetime.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--前言
在专栏的第一部分,我们将全面介绍微服务的基本概念。首先,我们将讲解什么是微服务,分析微服务与传统单体架构之间的差异,并探讨微服务架构的优势和挑战。微服务架构的核心思想是将一个大而复杂的应用程序拆分为一组小而独立的服务,每个服务都负责一个特定的业务功能,并通过轻量级的通信协议与其他服务进行交互。与传统的单体架构相比,微服务架构具有更好的可扩展性、灵活性和可维护性,同时能够更好地支持持续集成、持续交付和自动化部署。然而,微服务架构并非没有挑战。原创 2025-02-02 12:39:41 · 899 阅读 · 0 评论 -
2. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务概述与演变
微服务(Microservices)是一种将单一应用程序划分为一组小型、自治服务的架构风格。每个服务都围绕具体业务功能构建,可以独立部署、独立扩展,并通过轻量级的通信协议(例如HTTP REST API、gRPC、消息队列等)与其他服务进行协作。与传统的单体应用相比,微服务更加强调“分而治之”,使得每个模块都具备较高的独立性和灵活性。在微服务架构中,每个服务通常会有独立的数据存储和业务逻辑,能够由独立的开发团队负责管理和维护。原创 2025-02-05 21:15:34 · 944 阅读 · 0 评论 -
3. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务的核心特性与设计理念
然而,微服务架构的实现并非没有挑战,它需要开发团队具备良好的架构设计能力、跨领域的技术知识和系统性的思维方式。通过理解微服务架构的核心特性与设计理念,开发者和企业能够更好地应用这一架构模式,实现业务与技术的双重升级,为未来的系统架构设计奠定坚实的基础。服务架构的核心特性之一是服务的独立性和自治性。此外,微服务的可独立部署的特性使得开发团队可以在不影响其他服务的情况下,对某个服务进行独立的更新和部署。通过以业务领域为中心的设计,微服务架构能够更好地适应业务需求的变化,提高系统的灵活性和可维护性。原创 2025-02-06 22:24:47 · 1022 阅读 · 0 评论 -
4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践
微服务设计原则与最佳实践涵盖了从系统整体拆分到各个微服务具体实现的各个方面。本文详细讨论了如何基于业务功能、团队边界和数据隔离合理拆分服务;探讨了服务自治和独立部署的重要性;深入解析了数据管理策略与跨服务通信设计的方法;并介绍了配置管理、容错设计与监控实践等关键环节,辅以实际项目中的成功经验和失败教训,为构建稳定高效的微服务系统提供了全面的指导。在构建微服务架构时,遵循这些设计原则和最佳实践,不仅能提高系统的灵活性和可扩展性,还能显著降低运维和故障恢复的复杂性。原创 2025-02-07 21:49:53 · 1223 阅读 · 0 评论 -
5. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Nacos
Nacos 是阿里巴巴开源的一款云原生应用基础设施,它旨在简化微服务架构中服务治理和配置管理的复杂性。通过 Nacos,服务在启动时可以自动注册,而其他服务则可以通过名称来查找并访问这些注册好的实例。同时,Nacos 内置了实时健康检查机制,能够监控各个服务实例的状态,确保只有健康的服务节点能够处理请求,从而提升整个系统的可靠性和稳定性。此外,Nacos 还提供了一个集中化的配置管理平台,使得应用能够在运行时动态更新配置而无需重启,这不仅大大降低了运维成本,也避免了因硬编码或分布式文件更新而带来的各种问题。原创 2025-02-09 23:35:45 · 1521 阅读 · 0 评论 -
6. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--概念与简单入门
Ocelot是基于.NET Core的开源网关,旨在为微服务架构和服务导向架构提供统一的入口。作为网关,Ocelot通过提供一系列强大而灵活的功能,帮助开发者轻松管理和路由客户端请求。Ocelot的核心功能之一是路由。通过定义路由规则,Ocelot能够将客户端的请求转发至适当的后端服务。每个路由规则包括一个上游路径(客户端请求的路径)和一个下游路径(后端服务的路径)。这种映射机制使得Ocelot可以灵活地处理不同的请求,确保客户端与后端服务之间的通信顺畅。原创 2025-02-20 00:40:31 · 846 阅读 · 0 评论 -
7. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--路由
路由是API网关的核心功能,通过定义规则将客户端请求准确地转发到相应的后端服务,确保请求的正确处理,简化了微服务架构中的服务调用逻辑。Ocelot中的路由配置包括上游路径模板和下游路径模板,并支持路径参数、可选参数、默认值、正则表达式、动态API版本控制和多语言支持等高级功能,提升了系统的灵活性和可维护性。原创 2025-02-26 14:13:17 · 694 阅读 · 0 评论 -
8. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--负载均衡
Ocelot作为API网关的核心组件,通过内置多种负载均衡策略与服务发现机制,为微服务架构提供高效的流量调度能力。其支持轮询、最小连接数、会话粘滞等算法,动态适配不同场景需求:轮询确保基础均衡,最小连接数优化长连接负载,会话粘滞保障有状态服务连续性。深度集成服务发现工具,实时感知实例状态并自动剔除故障节点,结合健康检查实现高可用容错。用户可通过JSON配置快速定义策略,或通过继承ILoadBalancer接口实现加权分发等复杂逻辑,灵活扩展负载均衡能力。原创 2025-02-26 16:03:14 · 906 阅读 · 0 评论 -
9. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--请求聚合
请求聚合是微服务架构中优化客户端交互的核心技术,通过网关(如Ocelot)合并多服务调用为单一请求,减少网络开销与延迟,适配多端数据需求。Ocelot支持静态聚合(通过JSON配置默认拼接响应)与动态聚合(自定义代码实现复杂逻辑),需配置Aggregates节点关联路由,并确保路由Key唯一。静态聚合适用于简单场景,动态聚合支持数据裁剪、错误熔断等高级功能,但需权衡性能与维护成本。实践中需注意事务一致性、监控聚合耗时,并通过缓存优化高频请求,最终实现服务解耦与性能提升的平衡。原创 2025-02-26 18:04:02 · 745 阅读 · 0 评论 -
10. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--认证
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在网络环境中以紧凑、自包含的方式安全传递信息。它基于JSON格式,并通过数字签名保证数据完整性与真实性,广泛应用于身份验证和信息交换。头部(Header)、载荷(Payload)和签名(Signature),并以“.”分隔。头部包含令牌类型及签名算法,如HS256或RSA,经过Base64Url编码后形成第一部分。载荷存储标准声明(如发行者iss、过期时间exp、主题sub。原创 2025-03-09 17:29:33 · 1093 阅读 · 0 评论 -
11.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--整合日志
随着微服务架构和分布式系统的普及,日志数据来源日益分散且数量庞大,单个服务的日志已难以满足故障排查、性能监控和安全审计的需求。通过集中式日志系统,所有日志数据能够实时汇聚到一个中央平台,这不仅便于对历史数据进行归档和检索,更可以通过统一的查询和分析工具对全局日志进行聚合分析,从而迅速识别系统异常、瓶颈和安全隐患。目前市面上较为成熟的集中式日志解决方案主要有 ELK Stack、EFK Stack 以及 Splunk 和 Graylog 等。原创 2025-03-16 21:38:23 · 890 阅读 · 0 评论 -
12.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--熔断与限流
在微服务架构中,熔断与限流机制是保障系统稳定性和高可用性的关键手段。熔断机制通过监控服务健康状态,在请求失败率或超时时间超过阈值时,自动中断对故障服务的调用,防止错误扩散。熔断器有关闭(正常)、打开(拒绝请求)和半开(尝试恢复)三种状态,确保系统在故障发生时能迅速隔离问题。限流机制通过控制单位时间内的请求数量,防止因流量激增导致系统资源耗尽或服务崩溃。常见限流算法包括令牌桶、漏桶和滑动窗口。Ocelot网关通过QoSOptions配置熔断(如异常次数、熔断持续时间、超时时间)和。原创 2025-03-20 22:03:17 · 731 阅读 · 0 评论 -
13.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Refit
创建接口定义在 Refit 中,接口定义是使用接口和特性来描述的。首先,我们需要创建一个接口,并在其中定义我们要调用的 HTTP 方法。[Get[Post"/users"在这个示例中,我们定义了一个名为IMyApi和。每个方法都使用了不同的 HTTP 请求类型特性([Get]和[Post]特性注解详解[Get]:用于发送 HTTP GET 请求。可以包含 URL 路径参数和查询参数。[Post]:用于发送 HTTP POST 请求。通常用于创建资源。原创 2025-04-06 15:44:38 · 1150 阅读 · 0 评论 -
14.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--CAP
CAP 主要功能及设计理念CAP 是一款专为分布式系统和微服务设计的开源框架,核心目标在于解决跨服务数据一致性问题。它通过将本地数据库事务与消息记录绑定,在提交本地事务的同时记录消息,再由后台异步任务确保消息发送到消息中间件(如 RabbitMQ、Kafka 等),从而实现最终一致性。设计理念侧重于降低系统耦合、优化性能和简化开发难度,为分布式事务提供轻量级且高可靠性的解决方案。核心概念事件驱动:系统各个模块通过事件通知触发业务操作,解耦业务逻辑。发布/订阅模型。原创 2025-04-12 14:43:41 · 757 阅读 · 0 评论 -
15.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--SonarQube部署与配置
在将孢子记账系统从单体架构转向微服务架构的过程中,SonarQube的引入为我们提供了一个强大的代码质量管理解决方案。通过本文的详细指导,我们完成了以下关键任务:环境搭建、工具集成、自动化流程、佳实践。通过这些步骤,我们为孢子记账系统的微服务架构建立了一个完整的代码质量管理体系。这不仅有助于提高代码质量,还能帮助团队更好地协作,确保系统的长期可维护性和稳定性。在微服务架构中,每个服务都是独立部署和运行的,因此确保每个服务的代码质量都达到高标准变得尤为重要。原创 2025-04-20 19:26:30 · 1224 阅读 · 0 评论 -
16.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Github Action
GitHub Actions 作为 GitHub 提供的持续集成和持续部署(CI/CD)平台,在微服务架构中发挥着至关重要的作用。通过工作流(Workflow)、作业(Job)、步骤(Step)和动作(Action)等核心概念,我们可以构建出高效、可靠的自动化流程。在微服务架构中,GitHub Actions 能够为每个独立的服务定制专门的自动化流程,包括代码质量检查、单元测试、集成测试、容器镜像构建以及部署等步骤。通过环境变量、条件执行和矩阵构建等高级功能,我们可以实现更加灵活和智能的自动化流程。原创 2025-04-26 21:13:13 · 1370 阅读 · 0 评论 -
17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--loki
Loki是一个开源的日志聚合系统,专为高效收集、存储和分析大规模日志数据而设计。其架构由Loki(存储和查询)、Promtail(日志收集)和Grafana(可视化)组成,支持与Kubernetes、Docker等容器化平台集成,并提供了灵活的查询语言和丰富的API。在微服务架构中,Loki能够显著提升系统的可观察性和可维护性。通过Docker可以快速安装Loki、Promtail和Grafana,并配置日志收集和可视化。在.NET 8中,可以使用Serilog和Serilog.Sinks.Loki将日志数原创 2025-05-11 14:10:10 · 729 阅读 · 0 评论 -
18.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--RESTful API
REST(Representational State Transfer,表述性状态转移)是一种架构风格,由 Roy Fielding 在其 2000 年的博士论文中提出。REST 不是一种标准或协议,而是一组设计原则和约束条件,用于指导 Web 服务的设计和实现。REST 架构的核心是将服务器上的功能视为资源,每个资源都可以通过唯一的 URI(统一资源标识符)进行标识。客户端通过 HTTP 协议与这些资源进行交互,使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE)对资源执行操作。原创 2025-05-27 00:24:57 · 1081 阅读 · 0 评论 -
19.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--微服务的部署与运维
微服务架构的成功实施离不开高效的部署与运维体系,这为系统的高可用性、扩展性和稳定性提供了可靠保障。通过容器化与编排技术,微服务得以实现独立部署和高效管理。Docker 容器化能够将微服务及其运行环境打包成独立的容器,简化部署流程,同时保证环境一致性。Kubernetes 则通过集群管理实现自动化部署、负载均衡和弹性扩展,使得微服务能够轻松应对高并发和故障容忍场景。API 网关作为客户端与微服务的统一入口,承担了流量管理、负载均衡和安全策略的职责。原创 2025-04-12 19:08:00 · 1181 阅读 · 0 评论 -
20.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--如何拆分单体
按业务领域划分微服务的边界应与业务领域高度契合,这样可以使每个微服务聚焦于特定的业务功能。例如,电商系统可以划分为用户服务、订单服务、支付服务、商品服务等,每个服务负责一类业务逻辑。使用领域驱动设计(DDD)的方法,可以帮助识别核心领域和支撑领域,从而定义清晰的服务边界。遵循单一职责原则微服务的设计应遵循单一职责原则(SRP),即每个服务只关注一个特定的功能领域,避免职责混乱。例如,订单服务只负责订单的创建、查询和管理,而不应该包含任何与用户认证或库存管理相关的逻辑。原创 2025-04-12 18:33:37 · 1107 阅读 · 0 评论 -
21.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--当前项目拆分规划
我们制定了从身份认证服务开始,依次拆分配置服务、货币汇率服务、账务核心服务到报表服务的渐进式迁移策略。同时,我们也充分考虑了数据一致性、服务通信延迟、分布式事务等技术挑战,并通过监控系统、服务降级机制、API版本控制等手段来保障系统的可用性和可维护性。这套完整的规划方案将指导我们有序地完成微服务架构转型,构建一个更具扩展性和弹性的系统。原创 2025-04-26 14:45:50 · 1019 阅读 · 0 评论 -
22.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--身份认证服务拆分规划
本文详细介绍了如何从单体应用“孢子记账”项目中拆分出身份认证服务。首先,对身份认证服务的核心功能进行了全面分析,包括用户认证、信息管理、角色权限管理等模块。接着,提出了数据库设计方案,建议使用MySQL、MongoDB和Redis分别存储结构化、非结构化和高频访问数据。随后,设计了RESTful API接口,确保服务间的高效交互,并强调了安全性和性能优化的重要性。最后,总结了拆分工作的关键步骤,强调身份认证服务将成为独立的微服务,具备高性能、高安全性和良好的扩展性,为后续微服务架构的稳定运行奠定基础。原创 2025-05-10 15:48:54 · 916 阅读 · 0 评论 -
23.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--增加公共代码
本文介绍了在微服务架构中提取公共代码的步骤,重点包括日志记录、异常处理和Redis通用代码的整合。首先,创建了一个名为 SP.Common 的类库项目,并在其中分别建立了 Redis、ExceptionHandling 和 Logger 文件夹,用于存放相关代码。接着,详细讲解了Redis通用代码的实现,包括配置类、服务接口和具体实现,采用接口与实现分离的设计模式,并通过依赖注入和选项模式简化配置和使用。整体设计封装了底层StackExchange.Redis库的操作,提供了异常处理和日志记录,支持多种Re原创 2025-05-13 16:25:22 · 1222 阅读 · 0 评论 -
24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
通过以上步骤,我们实现了一个基于 ASP.NET Core Identity 和 OpenIddict 的认证微服务。这个微服务支持用户注册、登录、令牌生成和刷新等功能,并且可以灵活地扩展和定制。我们使用了 Entity Framework Core 作为数据访问层,MySQL 作为数据库存储用户和角色信息,同时通过自定义的用户存储类和授权服务,实现了对用户数据的高效管理。// 客户端凭证默认1小时有效期。原创 2025-06-03 23:34:14 · 1286 阅读 · 0 评论 -
25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口
摘要 本文介绍了用户管理模块的核心设计与高级特性实现。主要内容包括: 用户状态管理 - 利用ASP.NET Core Identity的锁定机制实现用户禁用/启用功能,通过设置LockoutEnd和LockoutEnabled属性控制用户权限。 分页查询优化 - 采用动态IQueryable构建查询,结合并行执行获取总数和分页数据的策略提升查询性能。 用户信息更新 - 基于Identity的用户管理功能实现安全更新,包含用户存在性检查和异常处理机制。 设计特点: 使用异常处理机制统一错误管理 通过异步编程提原创 2025-06-08 21:48:24 · 830 阅读 · 0 评论 -
26.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--角色权限管理
本文系统介绍了企业级应用中角色权限管理的核心实现方案。控制器层提供了四个关键接口:权限分配、权限查询、权限移除及用户权限获取。服务层具体实现包括:通过RoleManager进行权限声明(Claim)的增删查操作,使用LINQ筛选权限标识,并处理多角色用户的权限合并。该方案采用异步编程保障性能,通过异常处理确保健壮性,实现了灵活、安全的权限管理基础架构,满足企业应用对权限系统的动态分配、高效查询和安全管控需求。原创 2025-06-18 22:20:46 · 676 阅读 · 0 评论 -
27.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(一)
本文介绍了币种服务的基础搭建与初始化实现。首先创建了包含币种名称和缩写的实体类,并建立数据库上下文连接MySQL。通过重写OnModelCreating方法,在数据库迁移时自动初始化人民币、美元等9种常用货币数据。文章还提到后续将讲解汇率同步和查询功能,为完整实现币种服务奠定基础。整个服务采用微服务架构,使用了AutoMapper、EntityFramework等核心组件。原创 2025-07-12 17:54:54 · 543 阅读 · 0 评论 -
28.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(二)
本文介绍了记账应用中实现多币种汇率同步的解决方案。文章对比了三种获取汇率数据的途径:爬取数据(维护成本高且有法律风险)、手动输入(不适合频繁更新)和第三方API(推荐方案)。作者选择使用Exchangerate API的免费版本,其特点包括每日更新和1500次/月的调用限制。技术实现部分展示了C#代码示例:通过ExchangeRateApiData类映射API返回的JSON数据,包括汇率、更新时间等字段;ExchangeRateTimer类则作为定时任务,使用Quartz调度框架定期调用API获取最新汇率,原创 2025-07-20 17:35:06 · 1054 阅读 · 0 评论 -
29.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户配置服务
孢子记账用户配置服务实现摘要 用户配置服务是孢子记账的核心功能之一,主要用于存储和管理用户的自定义配置项。当前版本仅支持默认币种设置,未来将根据用户反馈增加更多配置项。 服务实现包含两个核心API: 获取配置:通过GET请求查询用户所有配置项,使用AutoMapper将数据库实体转换为响应模型 更新配置:通过PUT请求修改配置值,包含数据校验和异常处理 采用事件驱动架构处理新用户注册后的默认配置: 用户注册服务通过RabbitMQ发布"默认币种设置"消息 配置服务通过后台服务消费消息并创原创 2025-07-27 22:29:17 · 687 阅读 · 0 评论 -
30.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--公共代码--用户上下文会话
本文介绍了如何实现ContextSession类来获取当前用户信息,并详细说明了将用户信息写入Claims的过程。ContextSession通过IHttpContextAccessor访问HTTP上下文,从Claims中读取用户ID和用户名,实现了业务逻辑与认证的解耦。文章还提供了ApplicationMiddleware中间件的实现代码,该中间件负责在用户登录后将用户信息写入Claims。这种设计具有统一管理用户上下文、便于测试维护等优点,使用时需在Program.cs中注册相关服务。原创 2025-07-28 01:21:04 · 498 阅读 · 0 评论 -
31.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--收支分类
本文介绍了孢子记账应用中财务服务模块的核心功能——收支分类的设计与实现。收支分类作为财务系统的基础模块,通过与其他功能(如预算管理、账本管理)的深度集成,实现了数据的统一管理和高效共享。文章重点阐述了收支分类的功能设计,包括获取子分类、更新分类、批量更新父级分类和批量删除分类四个核心API接口的实现。通过从单体应用中提取并重构这些功能,确保了系统的可扩展性和维护性。控制器和服务层代码展示了具体的实现细节,保持了原有业务逻辑的同时优化了系统架构。该设计为后续财务功能开发奠定了坚实基础。原创 2025-07-29 13:30:01 · 698 阅读 · 0 评论 -
32.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--账本与预算
本文介绍了孢子记账应用中账本模块的微服务化改造过程。账本作为记录收支流水的核心模块,需要实现创建、删除、更新和分页查询四项基本功能。改造重点是将单体应用代码迁移至微服务分支,主要调整了Controller层的路由地址,使其符合RESTful风格:基础路径设为"/api/account-books",各Action分别使用POST、DELETE、PUT和HTTP方法。文中展示了改造后的Controller代码结构,并说明Service层代码基本保持不变。文章指出后续微服务化改造将聚焦于关键原创 2025-07-31 00:38:31 · 478 阅读 · 0 评论 -
33.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--记账
本文介绍了将记账模块从单体架构迁移到微服务架构的改造过程。重点针对记账模块的新增、修改、删除功能进行了调整,主要是将原有的单体应用代码抽离出来,并按照微服务架构标准进行重构。改造内容包括:将接口改为标准的RESTful风格、调整Controller基类继承关系、修改路由地址等。文中特别展示了原单体应用中涉及事务处理的复杂业务逻辑代码片段,这些代码在迁移过程中需要进行相应调整。文章提供了具体的代码示例,说明如何将原有基于数据库事务的操作迁移到微服务环境。原创 2025-07-31 23:09:09 · 610 阅读 · 0 评论 -
34.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--报表服务
本文介绍了将单体应用的报表服务部分迁移至微服务的过程。重点迁移了Controller和Service层,保留了数据查询功能以确保前端兼容性,但暂不迁移定时统计功能。原因在于当前报表功能尚不完善,需要后续重构优化。文章还讨论了接口兼容性问题,强调在微服务化过程中需注意新老接口的平滑过渡。此次迁移为后续全面重构报表服务奠定了基础,同时确保现有功能正常使用。原创 2025-08-03 02:20:22 · 862 阅读 · 0 评论 -
35.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--数据缓存
摘要 本文探讨了缓存技术在Web应用中的优化作用,重点介绍了孢子记账项目的缓存实现方案。文章首先阐述了传统后端查询模式的局限性,提出了引入缓存的必要性。随后详细讲解了三种缓存类型(内存缓存、磁盘缓存、分布式缓存)及其适用场景,并分析了六种典型的缓存使用场景。针对缓存使用中的常见问题(雪崩/穿透/击穿)给出了解决方案。在技术选型方面,文章对比了五种.NET缓存组件,最终选择Redis作为孢子记账项目的缓存方案。最后以用户配置为例,展示具体的业务代码调用方式。文章为开发者提供了从理论到实践的完整缓存优化指南,特原创 2025-08-03 18:11:37 · 951 阅读 · 0 评论 -
36.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--缓存Token
本文解释了在使用OpenIddict时获取不到Token的问题根源。OpenIddict采用分层架构设计,Token的生成是在中间件处理过程中完成的,而不是在Controller层直接生成的。这种延迟生成机制实现了业务逻辑与认证流程的解耦,确保了Token生成的一致性和安全性。文章通过架构图和工作流程图详细说明了OpenIddict的核心组件和Token生成流程,并提供了解决方案:需要创建自定义中间件来捕获OpenIddict生成的Token响应,在中间件处理请求后解析响应内容来获取Token。这种设计虽然原创 2025-08-04 23:47:02 · 683 阅读 · 1 评论 -
37.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--增加Github Action
摘要:本文介绍了如何为微服务项目添加GitHub Action支持,实现自动化构建与部署。首先回顾了GitHub Action作为CI/CD工具的核心功能,包括其自动化工作流、GitHub集成和可视化优势。随后以SP.ConfigService为例,详细讲解了Dockerfile的编写过程,采用多阶段构建优化镜像大小与安全性,并创建.dockerignore文件排除非必要内容。最后展示了如何创建GitHub Action工作流文件deploy-config-service.yml,通过YAML配置实现代码推原创 2025-08-05 23:17:49 · 923 阅读 · 0 评论 -
38.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--增加日志记录器
本文介绍了如何将Loki日志系统集成到孢子记账微服务项目中。首先通过修改日志公共代码,利用Nacos配置中的ServiceName作为Loki的AppName,避免了重复配置。然后在各个微服务中引入日志服务,以用户配置服务为例演示了日志记录的使用方法。这种集中式日志管理方案减少了代码冗余,提高了维护效率,便于问题定位和系统监控。文章还强调了合理使用日志级别的重要性,并指出Loki能有效提升日志管理效率。原创 2025-08-07 14:50:49 · 357 阅读 · 0 评论 -
39.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--调整发布脚本
本文介绍了为微服务项目调整发布脚本以支持多环境(本地、开发、生产)配置的方法。主要内容包括:1)三个环境的定义与差异,本地环境侧重开发调试,开发环境用于团队协作,生产环境保障稳定安全;2)通过修改launchSettings.json指定本地环境配置;3)创建各环境专用的appsettings.json文件;4)优化Dockerfile移除硬编码环境变量,改为运行时动态注入;5)调整GitHub Action工作流实现按环境选择配置。这些调整使得同一套代码能灵活适配不同环境,同时保持部署流程的简洁性和可维护原创 2025-08-09 23:59:35 · 1126 阅读 · 2 评论 -
40.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--初始化网关
本文介绍了在孢子记账项目中集成Ocelot网关的初始化过程。首先阐述了引入网关的必要性,包括统一入口、路由负载均衡、安全认证等六大优势。然后详细说明了创建网关项目的步骤:新建ASP.NET Core项目,安装Ocelot相关NuGet包,在Nacos中配置路由规则,并在Program.cs中完成Ocelot的基本配置。通过将网关配置动态存储在Nacos中,实现了更灵活的服务管理。这为后续实现微服务架构的各项功能奠定了基础。原创 2025-08-10 13:54:32 · 854 阅读 · 0 评论