ContentMapping
开篇词|高并发系统,技术实力的试金石
用户中心:读多写少的系统高并发优化实践
01|结构梳理:大并发下,你的数据库表可能成为性能隐患??
02|缓存一致:读多写少时,如何解决数据更新缓存不同步???
03|Token:如何降低用户身份鉴权的流量压力???
04|同城双活:如何实现机房之间的数据同步???
05|共识Raft:如何保证多机房数据的一致性???
电商系统:强一致性系统如何改造
06|领域拆分:如何合理地拆分系统?DDD 的很好的示例 - TODO
领域驱动设计 MOC
DDD 补充
07|强一致锁:如何解决高并发下的库存争抢问题?秒杀活动怎么保持高性能?
08|系统隔离:如何应对高并发流量冲击?xx
09|分布式事务:多服务的2PC、TCC都是怎么实现的?xx
答疑课堂|思考题答案(一)xx
基础服务:写多读少的链路跟踪系统
10|稀疏索引:为什么高并发写不推荐关系数据库?xx
11|链路追踪:如何定制一个分布式链路跟踪系统 ?链路跟踪 TODO
12|引擎分片:Elasticsearch如何实现大数据检索?链路跟踪 TODO
13 | 实时统计:链路跟踪实时计算中的实用算法链路跟踪 TODO
14|跳数索引:后起新秀ClickHouse链路跟踪 TODO
15|实践方案:如何用C++自实现链路跟踪?链路跟踪 TODO
直播互动:读多写多系统如何实现
16|本地缓存:用本地缓存做服务会遇到哪些坑?xx
17|业务脚本:为什么说可编程订阅式缓存服务更有用?xx
18|流量拆分:如何通过架构设计缓解流量压力?高可用-不同场景下的高可用
19|流量调度:DNS、全站加速及机房负载均衡TODO
内网建设:系统如何降低业务复杂度
20|数据引擎:统一缓存数据平台TODO 但应该接触不到需要建设的时候
21|业务缓存:元数据服务如何实现?分布式文件&对象存储 TODO
22|存储成本:如何推算日志中心的实现成本?系统评估&成本评估 TODO
23|网关编程:如何通过用户网关和缓存降低研发成本?API 网关 TODO
24|性能压测:压测不完善,效果减一半高可用-压力测试 TODO

Q:用户如果更换了昵称,如何快速更换 token 中保存的用户昵称呢?

A:在更换用户昵称,同时更换修改端的 token。如果我们的用户有多个客户端,那么可以利用缓存更新提及的 Version 版本号,让客户端定期检测判断 token 是否需要更换。

对于这个问题,置顶留言里 @徐曙辉同学的回答也很有趣:

如果我来做快速更换昵称的功能,有两种方式:

a. 在用户修改昵称后,内存中加入一个用户标识,解析 token 后读取该标识,有则返回特定 code,让客户端重新拿 token。甚至可以不用客户端参与,返回 301 重定向到获取新 token 的路由。

b. token 里面不存用户信息,只存用户 ID,需要用户信息的时候从缓存读。

徐同学的第一个解法很暴力,但是很有趣。

第二个方式也很有意思,这里我也补一个应用技巧:我们可以通过设定固定网址 user/ 用户 uid/heaer.jpg 方式,直接获取用户头像,这样也不用考虑更新问题了。

围绕着我的补充,这个话题还有后续讨论,我也一并展示出来,仍然是徐同学的回答:

按这样做,头像可以 http://xx.com/user/ 用户 ID/header.jpg,静态文件可以,因为反正都是远程 http 渲染。但是昵称和其他信息都这样处理,每一项都放到远程地址性能不是很好,是不是可以 http://xxx.com/user/ 用户 ID/info.json,再反序列化呢?

这样确定是占了额外的存储空间,优点是不用查 DB 和缓存,减少它们的压力,在 Web 应用中,用户信息读取挺频繁。

我认为这个思路很优秀,建议尽量使用对象存储做。关于对象存储的话题,你还可以参考第二十一节课的内容,我在里面详细分享了对象存储如何管理小文件和大文本。

HTAP = OLAP + OLTP

  • OLTP (Online Transaction Processing,在线事务处理)
  • OLAP (Online Analytical Processing,在线分析处理)
  • HTAP (Hybrid Transaction/Analytical Processing,混合事务/分析处理)