架构
张申傲
LangChain/Nacos/MyBatis 核心Contributor
展开
-
Redisson 分布式锁执行流程
Redis分布式锁执行流程原创 2022-04-28 17:53:37 · 691 阅读 · 0 评论 -
熔断机制——断路器状态机
断路器状态流转过程:断路器初始状态为 CLOSED,此时服务可用正常调用;当调用失败的次数达到阈值时,熔断状态从 CLOSED 切换到 OPEN 状态。一般在实现时,如果调用成功一次,就会重置调用失败次数;当断路器处于 OPEN 状态时,我们会启动一个超时计时器,当计时器超时后,状态切换到 HALF_OPEN 半打开状态。你也可以通过设置一个定时器,定期地探测服务是否恢复;在断路器处于 HALF_OPEN 状态时,请求可以达到后端服务,如果累计一定的成功次数后,状态切换到 CLOSED;如果仍然出原创 2021-10-26 22:00:38 · 483 阅读 · 0 评论 -
根据 DAU 估算 QPS 的一般思路
根据 DAU 估算流量和容量的一般思路以 DAU = 1000w 为例:PV按照日访问量为日活的10倍计算,PV = 1000w * 10 = 1亿均值QPS均值 QPS = 访问量/时长 = 1亿/(246060) = 1160峰值 QPS峰值 QPS 按照均值的10倍预估 = 11600。考虑到静态资源流量的放大效应,按照放大10倍计算,系统峰值 QPS = 116000容量考虑高可用、异地多活等策略,容量x2,QPS = 232000未来发展按照未来半年业务增长1.5倍计算,最原创 2021-07-20 10:59:22 · 4205 阅读 · 2 评论 -
Kafka和RocketMQ的消息复制实现对比
消息队列复制基本单位复制方式可用性一致性RocketMQ(原生)Broker同时支持同步双写和异步复制不支持主从自动切换,无法保证可用性可以保证消息一致性KafkaPartition异步复制基于Zookeeper实现主从自动切换,保证高可用可通过配置 ISR 保证一致性并不存在一种完美的消息复制策略,都是在高性能、高可用和一致性之间做出权衡。...原创 2020-11-17 11:05:11 · 433 阅读 · 0 评论 -
系统常用指标经验值(持续更新)
系统常用指标经验值(持续更新)一. 数据库相关MySQL 单实例,读写 QPS 通常只有千级别(3000~6000),经过优化的查询语句,在性能较好的机器上,读 QPS可接近 1w。MySQL 执行一次普通的查询或者修改操作,平均耗时在 10~100ms 级别。慢查询:针对用户端的查询操作,slow_query 建议设置在 1s 以内。二. 缓存相关单机 Memcached 的读写 QPS 可以达到 10w~100w 级别,读写平均耗时在 1ms 以内。单机 Redis 的读写 QPS原创 2020-09-04 14:16:40 · 1502 阅读 · 0 评论 -
如何预估系统QPS
如何预估系统QPS场景举例:开屏广告,全天流量 = 12000CPM = 1200w PV根据8/2原则,80%的流量在20%的时间段内产生峰值QPS = (1200w * 0.8) / (24 * 60 * 60 * 0.2) = 760保险起见,预留20%的Buffer,因此可预估系统峰值QPS=920...原创 2020-06-30 09:53:03 · 1633 阅读 · 1 评论 -
互联网系统数据库设计军规
军规适用场景:并发量大、数据量大的互联网业务一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的(4)禁止使用存储过程、视图、触发器、E...原创 2020-04-03 11:53:56 · 296 阅读 · 0 评论 -
Git精华
Git精华一. Git工作区域划分二. 本地仓库初始化#创建本地工作目录mkdir git_learn#进行git初始化cd git_learngit init三. 常用操作查看本地仓库状态git status将本地修改同步到暂存区git add eshop.txt将暂存区内容提交到本地仓库git commit -m '开始开发电商系统'四...原创 2020-03-21 21:20:57 · 201 阅读 · 0 评论 -
MySQL字符集与排序规则小结
MySQL字符集与排序规则小结一. 字符集utf8mb4说明MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。utf8 VS utf8mb4utf8最大字...原创 2020-02-24 18:09:14 · 158 阅读 · 0 评论 -
MySQL权限
MySQL权限一. 用户标识用户标识= 用户名+ IP二. 用户权限相关的表mysql.user:一行记录代表一个用户标识(用户名+ip)mysql.db:一行记录代表一个数据库的权限mysql.tables_priv:一行记录代表对表的权限mysql.columns_priv:一行记录代表对某一列的权限三. 权限相关的常用命令为用户授权#为用户dev授权,允许查询ar...原创 2019-12-23 17:11:13 · 244 阅读 · 0 评论 -
为什么HashMap的容量为2的指数
为什么HashMap的容量为2的指数一. HashMap的容量揭秘我们知道,HashMap的容量要求为2的指数(16、32、256等),默认为16。此外,HashMap也支持在构造器中指定初始容量initialCapacity,并会将容量设置为大于等于initialCapacity的最小的2的指数。HashMap会基于这个容量创建table数组:/** * The table, i...原创 2019-09-03 15:58:24 · 1399 阅读 · 0 评论 -
MySQL的锁
MySQL的锁一. 全局锁Flush tables with read lock (FTWRL):这个命令可以加一个全局锁,让整个数据库处于只读状态,这样所有的DDL、DML和更新事务的操作都会被阻塞。全局锁的典型使用场景,是做全库逻辑备份。让这个库只读的风险:如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就要停摆;如果在从库上备份,那么备份期间从库不能执行主库同步过来...原创 2019-08-07 10:42:31 · 147 阅读 · 0 评论 -
MySQL索引详解
MySQL索引详解一. 索引的作用索引的作用:提高数据查询的效率。如果没有索引,每次查询数据都需要扫描全表。二. 索引的常见模型哈希表:以key-value的形式保存数据。优点:查询速度很快 O(1)缺点:只适用于等值查询的场景,无法进行模糊查询和范围查询。有序数组优点:采用二分查找,等值查询和范围查询的效率都比较高O(logn)缺点:插入或者更新数据时,需要移动元素,...原创 2019-08-06 22:03:37 · 140 阅读 · 0 评论 -
事务隔离级别总结
事务隔离级别总结一. ACID特性事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功要么全部失败。 事务是区分文件存储系统与Nosql数据库重要特性之一,其存在的意义是为了保证即使在并发情况下也能正确的执行CRUD操作。怎样才算是正确的呢?这时提出了事务需要保证的四个特性即ACID:A:原子性(Atomicity)一个事务中的所有操作,要么全...原创 2019-07-10 13:47:01 · 268 阅读 · 0 评论 -
理解BloomFilter
理解BloomFilter一. 产生背景很多时候,我们都有这样一个需求:判断一个元素是否存在于集合中。比如IDEA中的单词拼写检查,要判断一个用户输入的单词是否在词库中。我们轻易能想到的一个简单的解决方案,就是使用一个Hash表,将所有合法的单词都保存在Hash表中,这样写入和查询的时间复杂度都为O(1),还是很快的。但是这样做有一个问题,就是太耗费空间。而且由于Hash表的散列冲突问题,就...原创 2019-06-22 08:53:59 · 232 阅读 · 0 评论