消息处理
一、A 推 B
A服务将数据推送给B服务,这个时候B数据会接收到数据并且保存到数据库,这个时候B服务就需要做一个幂等操作,对应A而言,如果B没有抛出异常,则会将状态修改。
- 但是如果A请求超时了,但是B服务却执行了,会导致状态没有修改成功,这样会导致不一致了。
- 如果B服务执行成功了,返回给A服务,但是返回A服务后,A服务还没来得及修改状态,就宕机了,导致数据不一致性。
对于B服务而言,A服务可能会再次推送相同的数据,因此需要在B服务添加幂等操作。避免同数据过来,导致业务执行错误。
二、A 拉 B
A 服务通过请求会拉取 B 服务,那么B服务应该不能有状态保持,比如A服务拉取项目数据,对于B服务而已仅仅是提供一个Get请求,不应该去更新数据库表。如果更新了数据库表,那么B更新成功后,然后将数据返回给A服务,A服务这个时候挂了,或者回滚了,则会导致A服务不会回滚。