/images/avatar.jpg

Crazyfrank 的博客

日志与 Error

日志与 Error

一般来说在我们的项目中,按照严格分层的结构划分的话,大致是 handlerservice(DDD 中细分为 applicationdomain ),dao

对于 dao 层,如果出现错误,我们的处理方式是直接上抛,选择性的打日志处理错误,比如可能有些接口涉及到在 dao层进行参数校验、手动管理事务等,需要日志记录,但错误仍然是直接上抛。

DB-Cache 一致性问题

如何保证缓存和数据库一致性,这是一个老生常谈的话题了。

但很多人对这个问题,依旧有很多疑惑:

  • 到底是更新缓存还是删缓存?
  • 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?
  • 为什么要引入消息队列保证一致性?
  • 延迟双删会有什么问题?到底要不要用?

引入缓存提高性能

我们从最简单的场景开始讲起。

MVCC 及 MySQL 日志

MVCC 机制下,Redo Log 和 Bin Log 主要在事务提交时发挥作用 ,它们的作用和触发时机如下:


事务执行过程中的日志行为

当执行:

UPDATE users SET age = 26 WHERE id = 1;  

MySQL 的 事务执行顺序 (结合 MVCC + 日志)如下: