本文主要是介绍思考(六十六):无状态服务的数据存取与事务处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
痛点一
每次存取数据量太大,影响性能
比如,背包数据,每次请求操作都存取背包数据,会影响机房内流量与数据库性能
痛点二
一次请求,通常会涉及多次数据存取,程序 panic 会导致只提交部分数据到数据库
这涉及到无状态服务如何让便利的逻辑编写同时兼具事务
内置 LRUCache 解决大数量量存取
无状态服务,主要是解绑数据与服务进程间的一一对应关系
即请求到达任何一个服务进程,都能正确处理该请求
因此,本质上与无状态服务上是否有缓存无直接关系
比如,引入 LRUCache ,并做如下规范,还是拿背包数据做例子:
- 背包数据有版本号字段
- 如果 LRUCache 中无对应背包数据,则从数据库加载
- 如果 LRUCache 中有背包数据,则只需要从数据库读取背包数据的版本号
- 如果版本号一致,则直接使用 LRUCache 中的
那么上述操作,就把一次从数据库读取背包数据的操作,替换为读取一个整数值的操作
对于写数据库,则可以根据数据库特点,来实现不需要全量覆盖的背包数据保存方法<
这篇关于思考(六十六):无状态服务的数据存取与事务处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!