首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >客户端、帐户和事务,如何在微服务方法中设计它?

客户端、帐户和事务,如何在微服务方法中设计它?
EN

Stack Overflow用户
提问于 2019-07-26 06:55:17
回答 1查看 931关注 0票数 0

我正在设计一个解决方案,并想仔细检查这是否符合微服务架构。

我们有客户、账户和交易,就像普通的银行账户一样。客户有基本数据,如姓名和地址。账户可能用于储蓄,或者当前交易是两个账户之间的转账。

所以我用下面的方式设计:

1个管理客户端数据的微服务(将仅管理客户端基本数据及其地址)

1管理帐户数据的微服务(将管理帐户基本信息,客户端id是帐户数据的一部分)

管理货币数据的1个微服务(将拥有帐户余额和所有转账)

请告诉我这是否符合微服务架构,以及您是否有其他理解。

EN

回答 1

Stack Overflow用户

发布于 2019-08-03 07:33:46

根据我的理解,微服务架构的主要目标是支持大型系统的不同部分更快、更连续的发布,而不是彼此等待。有两种方法来设计一个新的系统,首先是微服务方法,然后是微服务方法。在第一种方法中,系统从底层设计为遵循微服务体系结构,系统最初被分解为多个服务,这些服务通常通过HTTP和REST相互通信。在另一种方法中,系统最初不是作为微服务构建的,所有模块都在单个应用程序下。这两种方法各有优缺点,这是一个单独的讨论。

在您的案例中,您将采用第一种方法来设计新系统,为每个功能提供单独的服务。我不是银行领域的专家,但据我所知,客户(客户)系统绝对可以是一个独立的服务,并负责维护客户主数据。帐户服务可以负责维护帐户数据并提供帐户相关信息。但是,帐户余额是帐户的一个不可或缺的属性,应该始终与帐户关联。最后,转账可以是一个单独的服务,可以记录帐户之间的转账。每当有转账时,它可以查询账户的当前余额,如果转账是有效的,则可以记录转账。

然而,由于这涉及到金融交易,您必须确保每个交易都遵循ACID规则。在分布式系统中维护ACID属性很棘手,有几种方法可以缓解这一问题,例如只在最关键的区域使用ACID事务,并在其他区域保持最终的一致性。例如,银行不会立即将所有交易反映为“已完成”,而是显示消息“待处理”(最终一致性),以便客户知道确切的状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57211100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档