Architecture 微服务方法:隔离和解耦

Architecture 微服务方法:隔离和解耦,architecture,microservices,Architecture,Microservices,我必须在我的微服务体系结构中添加一个服务,然后 我的新服务需要计算他负责的数据。这些计算以相对较高的频率进行 为了进行计算,我的新服务需要从另一个服务中检索额外的信息(比如从相同的有界上下文) 这里的问题是,对每个计算的所有这些调用可能会导致一些性能问题 你认为在这里最好的方法是什么? 让我的新服务保存它所需的附加信息的快照(与其他服务的异步同步)是不是一个好主意,这样它就不必在每次需要计算时都执行所有这些调用 使用某种形式的缓存 不管你如何扭转和扭转它,你都需要某种形式的缓存。如果这是您唯一需

我必须在我的微服务体系结构中添加一个服务,然后 我的新服务需要计算他负责的数据。这些计算以相对较高的频率进行

为了进行计算,我的新服务需要从另一个服务中检索额外的信息(比如从相同的有界上下文)

这里的问题是,对每个计算的所有这些调用可能会导致一些性能问题

你认为在这里最好的方法是什么? 让我的新服务保存它所需的附加信息的快照(与其他服务的异步同步)是不是一个好主意,这样它就不必在每次需要计算时都执行所有这些调用

使用某种形式的缓存 不管你如何扭转和扭转它,你都需要某种形式的缓存。如果这是您唯一需要缓存数据的地方,而您还没有像Redis这样成熟的缓存系统,请尽量保持简单

一种简单的方法是在执行高频计算的应用程序中使用内存缓存。根据您的应用程序,这可能是一个选项,也可能不是一个选项


如果这样做,请为正在加载的数据引入一个代理,并确保有一个干净的接口,即不要泄露数据缓存到客户端的事实。然后,在代理实现中,适当地缓存数据,例如,在异步刷新缓存之前,将数据保留X秒

附加信息是否会更改?如果没有,您可以使用LoadingCache或Redis。在存储数据的同一台机器上执行计算如何?复制呢?@pscuderi是的,它们的变化频率与计算频率不同,但它们会变化。