09 2020 档案
摘要:如何解耦? 个性化代码上浮,通用代码下沉,服务化更彻底! 总结与启示 (1)讨论技术方案时,不要总以: “放在你那边做代码少” “放在你那边做时间短” 作为设计折衷的理由,而要多问: “怎么做合理” (2)尽量杜绝底层出现 switch case (biz_type) 走不同分支的代码。 (3)个性
阅读全文
摘要:方案对比 解耦之前: 解耦之后: (1)代码简单,一次数据库访问 (1)代码更复杂,多次数据库访问 (2)逻辑实现在SQL里 (2)逻辑实现在服务层 (3)数据库耦合 (3)数据库解合 达到效果:给机器就能扩容! 总结 场景三:“数据库耦合”如何解耦? 第一步:公共数据访问服务化,数据私藏 第二步:
阅读全文
摘要:总结 如何发现系统中的耦合? 查找“被动联动”的点。 场景一:“IP耦合”如何解耦? 使用内网域名来替代内网IP。 场景二:“公共库耦合”如何解耦? 粗暴方案:代码各自拷贝一份。 优化方案: (1)垂直拆分,个性业务代码“上浮” (2)服务化,共性业务代码“下沉”
阅读全文
摘要:总结 MQ是一个互联网架构中常见的解耦利器。 如何实现MQ的平滑迁移? 步骤一:消费方双向订阅; 步骤二:生产方升级为新发布; 步骤三:消费方下线旧订阅; 如何快速实现统一迁移? 浅浅的封装一层
阅读全文
摘要:总结 MQ是一个互联网架构中常见的解耦利器。 什么时候不使用MQ? 上游实时关注执行结果,通常采用RPC。 什么时候使用MQ? (1)数据驱动的任务依赖。 (2)上游不关心执行结果。 (3)上游关注结果,但执行时间很长。 (4)削峰填谷,流量控制,保护下游。
阅读全文
摘要:总结 有什么核心痛点? (1)上游痛: 扩容的是下游,改配置重启的是上游(耦合,典型反向依赖) (2)下游痛: 不知道谁依赖于自己(难以实施服务治理) 怎么解耦,怎么解决? (1)“配置私藏”架构 (2)“全局配置文件”架构 (3)“配置中心”架构
阅读全文
摘要:工作中有的时候需要将某个库中的表、视图、函数、存储过程等创建语句导出,又不需要表中的数据。同时最好放在同一个文件里面,这样方便拷贝。 方法一:需要拷贝的创建语句条数不多,不至于让你拷到头脑发晕的地步,你可以选择直接拷贝DDL语句 方法二:使用Navicat的备份功能 1.新建备份 2.按需勾选待备份
阅读全文
摘要:千万流量,要玩好服务化,数据库,缓存
阅读全文
摘要:总结 什么时候选redis? (1)复杂数据结构 (1)持久化 (1)天然高可用 (1)存储内容比较大 什么时候选memcache? 纯KV 为什么mc在纯KV能更快呢? (1)预分配内存池 (1)redis的VM机制更慢 (1)redis的CPU计算复杂 (1)多线程可利用多核 其他 (1)red
阅读全文
摘要:总结 (1)如果最新的数据不在数据库,缓存里要存数据; (2)并发更新可能出现每次相互失效; (3)异步更新,是一个常见的策略;
阅读全文
摘要:总结 (1)数据库主从,何时不一致?写后立即读,短时间内,读旧数据 (2)数据库缓存,何时不一致?写后立即读,短时间内,旧数据入缓存 (3)优化思路:如果有旧数据入缓存,应该及时把这个旧数据淘汰掉 (4)优化方法: - 二次淘汰法(异步,服务) - 设定超时时间,有机会修正
阅读全文
摘要:MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slow query log) 6:一般查询日志(general log) 7:中继日志(relay log)。
阅读全文
摘要:大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 而存
阅读全文