我正在设计一个解决方案,并想仔细检查这是否符合微服务架构。
我们有客户、账户和交易,就像普通的银行账户一样。客户有基本数据,如姓名和地址。账户可能用于储蓄,或者当前交易是两个账户之间的转账。
所以我用下面的方式设计:
1个管理客户端数据的微服务(将仅管理客户端基本数据及其地址)
1管理帐户数据的微服务(将管理帐户基本信息,客户端id是帐户数据的一部分)
管理货币数据的1个微服务(将拥有帐户余额和所有转账)
请告诉我这是否符合微服务架构,以及您是否有其他理解。
发布于 2019-08-03 07:33:46
根据我的理解,微服务架构的主要目标是支持大型系统的不同部分更快、更连续的发布,而不是彼此等待。有两种方法来设计一个新的系统,首先是微服务方法,然后是微服务方法。在第一种方法中,系统从底层设计为遵循微服务体系结构,系统最初被分解为多个服务,这些服务通常通过HTTP和REST相互通信。在另一种方法中,系统最初不是作为微服务构建的,所有模块都在单个应用程序下。这两种方法各有优缺点,这是一个单独的讨论。
在您的案例中,您将采用第一种方法来设计新系统,为每个功能提供单独的服务。我不是银行领域的专家,但据我所知,客户(客户)系统绝对可以是一个独立的服务,并负责维护客户主数据。帐户服务可以负责维护帐户数据并提供帐户相关信息。但是,帐户余额是帐户的一个不可或缺的属性,应该始终与帐户关联。最后,转账可以是一个单独的服务,可以记录帐户之间的转账。每当有转账时,它可以查询账户的当前余额,如果转账是有效的,则可以记录转账。
然而,由于这涉及到金融交易,您必须确保每个交易都遵循ACID规则。在分布式系统中维护ACID属性很棘手,有几种方法可以缓解这一问题,例如只在最关键的区域使用ACID事务,并在其他区域保持最终的一致性。例如,银行不会立即将所有交易反映为“已完成”,而是显示消息“待处理”(最终一致性),以便客户知道确切的状态。
https://stackoverflow.com/questions/57211100
复制相似问题