微服务架构开发是目前大多数程序员都在使用的一种开发方式,而今天我们就通过案例分析来了解一下,微服务架构开发都用到了哪些开发技术。
持久化是为了解决网络抖动或者崩溃导致数据丢失的问题,在数据从业务服务到队列,队列自身处理,再从队列到缓存处理程序,中间都可能丢失数据。为了解决丢失数据的问题,需要发送时确认、队列自身持久化、接收时确认;但是需要注意确认机制可能会导致重复数据的产生,因为在未收到确认时就需要重新发送或接收,而数据实际上可能被正常处理,只是确认丢失了;确认机制还会降低队列的吞吐量,但是根据我们的定义业务静态数据的变更频率应该不高,如果同时还需要较高的并发分片是个不错的选择。
在业务服务操作完关系数据库后,数据发送到队列之前(或者不用队列就是直接写入缓存之前),业务服务崩溃了,这时候数据就不能更新到缓存了。还有一种情况是Redis发生了故障转移,master中的更新没有同步到slaver。通过引入这么一个检查程序,定时的检查关系数据库数据和缓存数据的差别,如果缓存数据比较陈旧,则更新之。这样提供了一种极端情况下的挽救措施。
使用缓存过期机制可以不需要缓存处理程序和数据一致检查程序,业务服务先从Redis查询数据,如果数据存在就直接返回,如果不存在则从关系数据库查询,然后写入Redis,然后再返回,这也是一种常用的缓存处理机制,网上可以查询到很多,很多人用的也很好。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
穷追猛打!伊朗准备好160万枚火箭弹轰沉以色列,节节败退,以军慌忙布下地雷阵
财联社4月26日电,波音称,扩大在韩国的研发合作,包括先进生产系统、城市空中交通、航空航天半导体的技术开发。
重磅!OpenAI再放大招:允许所有ChatGPT用户关闭聊天记录,还将推出企业版订阅服务
大疆发布DJI Mavic 3 Pro无人机:13888元起售 首款哈苏三摄
史上最强核显AMD 780M干掉GTX1060!19款3A大作帧率难以置信