BankNext 微服务:案例研究

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: “ BankNext ”正处于雄心勃勃的数字化转型阶段,并希望使其客户入职流程无缝衔接。经过详细的功能流程分析,BankNext 实现了一个编排架构,可以在各种微服务之间进行协作。

本文是“BankNext”的案例研究:它包括数字化转型、客户入职流程以及事件驱动和隐藏地雷。

业务目标

“ BankNext ”正处于雄心勃勃的数字化转型阶段,并希望使其客户入职流程无缝衔接。经过详细的功能流程分析,BankNext 实现了一个编排架构,可以在各种微服务之间进行协作。

业务流程

  1. 启动:潜在客户在 BankNext 上启动加入流程
  2. 预检查:BankNext 首先调用筛选 MSvc和重复数据删除 Msvc来研究潜在客户并确保该实体不存在于系统中
  3. 处理(预检查通过后):CustomerMgt Msvc创建客户实体,AccountMgt Msvc为该客户创建 Account 实体。
  4. 合规性:在初始阶段监控 Msvc以检查可疑活动并推荐 Msvc以根据客户偏好提供客户满意度。

构建反馈

BankNext 对这种架构非常满意,原因如下:

  1. Entity Orchestrator Msvc 为系统提供了在多个微服务之间进行协作的能力。
  2. 协调器能够对调用进行排序和同步。
  3. 编排器根据来自被调用微服务的响应/异常响应地调整操作。
  4. 协调器巧妙地使用可完成的未来从异步并行调用中受益,只要调用不相互依赖。

构建负面反馈

BankNext 很快意识到:我们有一个问题:

  1. 调用和整理来自多个微服务的响应时出现不希望的延迟 。
  2. 假设每个 Msvc 需要 300ms,那么所有 7 个所需的总时间至少为 1 秒(即 300ms * 7)。
  3. 这种等待使潜在客户不高兴。
  4. 任何新 Msvc 的引入都会迫使 Orchestrator 显式编写该调用调用,这会导致不希望的紧密耦合。

回到规划

经过深入分析,工程和业务团队共同确定延迟的根本原因是运行时间最长的服务。

商业评论

业务审查得出结论,筛选和重复数据删除预检查是强制性的。一旦通过,用户就可以清楚地获得一个帐户,因此可以发送确认信息。监控和推荐是辅助服务,不应耽误用户确认。

技术挑战

为了实现这一业务愿景,系统设计必须演变为打破流程,以便在预检查后立即发送用户确认。其余的过程,即客户创建和帐户创建、监控和推荐应该异步发生。这将极大地提升用户体验。

技术实施

  1. 工程团队立即意识到事件驱动的编排将是解决这一挑战的正确方法。
  2. 成功预检查后,EntityMgt Msvc*将此新实体 txn 发布到 Kafka “ *new_entity_initiated_topic ”。
  3. EntityMgt Msvc 将初始确认信息发送回用户。
  4. CustomerMgt Msvc订阅 Kafka “new_entity_initiated_topic” 并使用此事件。
  5. CustomerMgt Msvc 在系统中创建客户并将此事件发布到 Kafka “ new_customer_created_topic ”。
  6. AccountMgt Msvc 订阅 Kafka “ new_customer_created_topic ”并使用此事件。
  7. AccountMgt Msvc 在系统中为该客户创建帐户并将此事件发布到 Kafka “ new_account_created_topic ”
  8. 新实体在系统中成功创建。
  9. 支持服务,即监控 Msvc 和推荐 Msvc 订阅 Kafka “ new_account_created_topic ”。

10.由于此过程是异步的,因此还需要一个新的 Notification Msvc 将帐户详细信息通知给客户。

11.这个 Notification Msvc 可以通过简单的订阅 Kafka “ new_account_created_topic ”快速连接到这个新架构中。

新架构的优点

  1. 对客户的响应能力显着提高。
  2. 消除紧密耦合,因为不再需要显式服务调用。系统只需要知道要发布或订阅的主题。
  3. 通过订阅正确的主题,可以快速整合新服务,从而获得巨大的未来灵活性。

新的建筑负面因素:隐藏的地雷

  1. 随着灵活性的提高,这种架构带来了更高的系统复杂性。
  2. 通过引入健壮的消息传递组件,主要的基础架构增强以启用事件驱动的处理。
  3. 可观察性、系统调试和跟踪能力需要显着提高,以排除故障场景。
  4. 状态管理、重试和系统范围的回滚机制增加了复杂性。
  5. 系统原子性需要详细的 SAGA 实现

摘要:架构、TechStack 和基本原理

架构目标

战略

技术栈

基本原理

灵活和可扩展的集成

Topics

Topics

消除集中协调器依赖

事件驱动能力

消息系统

Kafka

消除 svcs 之间的紧密耦合

未来的能力效率

Publish/Subscribe

Kafka

消除显式的新 svc 调用调用

系统范围的可观察性

Centralized logging/tracing

ELK/Sleuth

异步日志记录和可观察性

Heavy volume/TPS

Streaming

Kafka/Async operations

极低的延迟

并行聚合

可完成的未来

java

一般用途

框架

微服务

Springboot

一般用途

目录
相关文章
|
19天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
57 4
|
2月前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
4月前
|
负载均衡 Java 微服务
Java中的可扩展微服务架构设计案例解析
Java中的可扩展微服务架构设计案例解析
|
4月前
|
存储 Java 数据中心
Spring Boot与微服务治理框架的集成成功案例
Spring Boot与微服务治理框架的集成成功案例
|
6月前
|
缓存 负载均衡 Java
基于微服务架构的后端性能优化研究
基于微服务架构的后端性能优化研究
74 0
|
Java 持续交付 API
叹服!阿里自述SpringCloud微服务:入门+实战+案例
SpringCloud自述 微服务?Spring?SpringBoot?SpringCloud?......作为一名Java开发人员,对于这些字眼,是否有一种既熟悉又陌生的感觉。你见过,了解过,知道它们也是面试中很重要的一部分,但是不会运用,不会实践到项目中,这就是很尴尬的一种局面,那么你该如何对它们进行深层的剖析呢?
496 0
|
6月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
155 0
|
Cloud Native 测试技术 Go
golang 微服务中的断路器 hystrix 小案例
golang 微服务中的断路器 hystrix 小案例
|
存储 NoSQL Java
微服务技术系列教程(46)-SpringBoot整合MongoDB(文章评论案例)
微服务技术系列教程(46)-SpringBoot整合MongoDB(文章评论案例)
247 0
|
Dubbo Java 应用服务中间件
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
92 0
下一篇
无影云桌面