/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 + 日志)如下:

负载均衡

概览

在分布式环境下,各个微服务都会有不同的实例,服务注册和服务发现解决了“有哪些可用实例”的问题,剩下面临的就是,“这么多可用实例,我该把请求发给谁?”。直觉来说,大部分人如果听过一些专业名词,此时会直接想到“负载均衡”。那负载均衡到底是什么呢?