获得徽章 1
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
#青训营笔记创作活动#
2月4日 打卡day17
高并发是一套组合拳:
页面优化之【静态化】,对活动页面做静态化🄌处理,用户浏览商品等常规操作,并不会请求到服务端
CDN 是依靠部署在各地的边缘服务器,用户就近获取所需内容,提高用户访问响应速度和命中率。
页面优化之【秒杀按钮】为了性能考虑,一般会将css、js和图片等静态资源文件提前缓存到CDN上,让用户能够就近访问秒杀页面。如果用户点击了一次秒杀按钮,则在10秒之内置灰,不允许再次点击
负载均衡:服务上层有着层层负载均衡,并提供各种容灾手段(双活机房➊、节点容错、服务器灾备等) nginx负载均衡:主要有三种:轮询、加权轮询、ip hash轮询
缓存之【读多写少】秒杀是读多写少的场景,redis,也需要部署多个节点。
缓存预热:定时任务将 状态为已发布且未开始的秒杀活动、秒杀商品写入redis缓存
缓存击穿:加锁、商品提前缓存
缓存穿透:布隆过滤器,但是布隆过滤器也只适用于更新少的场景。(布隆过滤器中的数据如何更缓存中的数据保持一致?同步更新)
2月4日 打卡day17
高并发是一套组合拳:
页面优化之【静态化】,对活动页面做静态化🄌处理,用户浏览商品等常规操作,并不会请求到服务端
CDN 是依靠部署在各地的边缘服务器,用户就近获取所需内容,提高用户访问响应速度和命中率。
页面优化之【秒杀按钮】为了性能考虑,一般会将css、js和图片等静态资源文件提前缓存到CDN上,让用户能够就近访问秒杀页面。如果用户点击了一次秒杀按钮,则在10秒之内置灰,不允许再次点击
负载均衡:服务上层有着层层负载均衡,并提供各种容灾手段(双活机房➊、节点容错、服务器灾备等) nginx负载均衡:主要有三种:轮询、加权轮询、ip hash轮询
缓存之【读多写少】秒杀是读多写少的场景,redis,也需要部署多个节点。
缓存预热:定时任务将 状态为已发布且未开始的秒杀活动、秒杀商品写入redis缓存
缓存击穿:加锁、商品提前缓存
缓存穿透:布隆过滤器,但是布隆过滤器也只适用于更新少的场景。(布隆过滤器中的数据如何更缓存中的数据保持一致?同步更新)
展开
评论
点赞
#青训营笔记创作活动#
2月2日 打卡day16
今天拜读了Hertz在凌晨两点四十七分问我们带来的高质量文章!秒杀系统
秒杀系统,最重要的一个特征就是同一时间、海量请求、商品库存有限。用户为了几百块钱,可以撬动(崩)数十万的服务器。所以,为了不让我们的服务器被撬崩,我们需要一些措施,来保证秒杀服务的抗压能力。另外,也要避免商家的商品被超卖、少卖、数据丢失、服务雪崩等问题。本文主要介绍了利用redis和MQ等中间件对系统进行优化,解决缓存加速、防止重复提交、排队下单、超卖、少卖、异步下单、消峰等核心问题。
2月2日 打卡day16
今天拜读了Hertz在凌晨两点四十七分问我们带来的高质量文章!秒杀系统
秒杀系统,最重要的一个特征就是同一时间、海量请求、商品库存有限。用户为了几百块钱,可以撬动(崩)数十万的服务器。所以,为了不让我们的服务器被撬崩,我们需要一些措施,来保证秒杀服务的抗压能力。另外,也要避免商家的商品被超卖、少卖、数据丢失、服务雪崩等问题。本文主要介绍了利用redis和MQ等中间件对系统进行优化,解决缓存加速、防止重复提交、排队下单、超卖、少卖、异步下单、消峰等核心问题。
展开
评论
点赞
#青训营笔记创作活动#
2月1日 打卡day15
今天学习了mysql架构,和我今天看的秒杀有重合的地方。
秒杀最终的本质是数据库的更新,但是有很多大量无效的请求,我们最终要做的就是如何把这些无效的请求过滤掉,防止渗透到数据库。限流的话,需要入手的方面很多:
2月1日 打卡day15
今天学习了mysql架构,和我今天看的秒杀有重合的地方。
秒杀最终的本质是数据库的更新,但是有很多大量无效的请求,我们最终要做的就是如何把这些无效的请求过滤掉,防止渗透到数据库。限流的话,需要入手的方面很多:
展开
评论
点赞
赞了这篇文章
#青训营笔记创作活动#
2023年1月28日 day 12
今天学习了502问题。502问题发生的原因是:使用TCP去后端服务器那获取数据,并不会为每个消息加入数据边界,直接使用裸的TCP进行数据传输会有"粘包"问题。
响应4xx状态码,意思是这是个客户端的错误,4xx里头的xx可以根据错误的类型,再细分成各种码,比如401是客户端没权限,404是客户端请求了一个根本不存在的网页。
如果是服务器有问题,就返回5xx状态码。5xx由于服务器可能挂掉,一般情况下5xx的状态码其实并不是服务器返回给客户端的。
2023年1月28日 day 12
今天学习了502问题。502问题发生的原因是:使用TCP去后端服务器那获取数据,并不会为每个消息加入数据边界,直接使用裸的TCP进行数据传输会有"粘包"问题。
响应4xx状态码,意思是这是个客户端的错误,4xx里头的xx可以根据错误的类型,再细分成各种码,比如401是客户端没权限,404是客户端请求了一个根本不存在的网页。
如果是服务器有问题,就返回5xx状态码。5xx由于服务器可能挂掉,一般情况下5xx的状态码其实并不是服务器返回给客户端的。
展开
评论
点赞
#青训营笔记创作活动#
高并发场景下,会存在很多问题。例如在秒杀系统中的超卖问题、缓存击穿、接口不能保证幂等性、秒杀url被提前直到、大量请求等等问题。可以从以下几个方面入手:页面静态化、CDN加速、负载均衡、防重、缓存、异步、熔断和限流及分布式锁,解决上述问题。
高并发场景下,会存在很多问题。例如在秒杀系统中的超卖问题、缓存击穿、接口不能保证幂等性、秒杀url被提前直到、大量请求等等问题。可以从以下几个方面入手:页面静态化、CDN加速、负载均衡、防重、缓存、异步、熔断和限流及分布式锁,解决上述问题。
评论
点赞
#青训营笔记创作活动#
1月25日 day11
今天学习了go的登陆认证过程,利用JWT进行登陆认证和访问,通过与mysql数据库中的内容进行比对,如果成功就发送Token。利用gorm完成该项功能的测试。
1月25日 day11
今天学习了go的登陆认证过程,利用JWT进行登陆认证和访问,通过与mysql数据库中的内容进行比对,如果成功就发送Token。利用gorm完成该项功能的测试。
评论
点赞
#青训营笔记创作活动#
1月20日 打卡day8
sql写不好,加班少不了,索引可以帮助查询过程提速,但是通常由于一些操作不当,会导致索引失效
索引失效有哪些场景呢?
1.不符合最左匹配原则
范围查询 orrr 最左优先,以最左边的为起点任何连续的索引都能匹配上
原因是B+树底层,key值是有序,value是散列,如果走最前面的索引,那么查询过程就是无序的
mysql会根据表索引结构进行排序,排序规则是第一个字段排序,在第一个字段的排序基础上,然后在对第二个字段进行排序
2.select *
增加查询分析器解析成本 回表返回结果集小就会使用索引
会引入很多没有用的列,占用内存空间,增加驱动表取数据的次数(内存装不下,就得分多次装),进而低效
3.使用函数、计算
4.模糊查询like % 在左
5.or 左右存在没有索引的列
6.子查询
7.in 范围超过30%,走全表
1月20日 打卡day8
sql写不好,加班少不了,索引可以帮助查询过程提速,但是通常由于一些操作不当,会导致索引失效
索引失效有哪些场景呢?
1.不符合最左匹配原则
范围查询 orrr 最左优先,以最左边的为起点任何连续的索引都能匹配上
原因是B+树底层,key值是有序,value是散列,如果走最前面的索引,那么查询过程就是无序的
mysql会根据表索引结构进行排序,排序规则是第一个字段排序,在第一个字段的排序基础上,然后在对第二个字段进行排序
2.select *
增加查询分析器解析成本 回表返回结果集小就会使用索引
会引入很多没有用的列,占用内存空间,增加驱动表取数据的次数(内存装不下,就得分多次装),进而低效
3.使用函数、计算
4.模糊查询like % 在左
5.or 左右存在没有索引的列
6.子查询
7.in 范围超过30%,走全表
展开
评论
点赞
赞了这篇文章
#青训营笔记创作活动#
2023/01/19 Day7
今天看了这篇文章,主要是关于 从其他语言转go过程中可能遇到的问题。
总结一下,还是需要夯实基础,掌握SQL,Redis,Linux,Nginx的基础知识点
多写代码,重要的是思路的转变
2023/01/19 Day7
今天看了这篇文章,主要是关于 从其他语言转go过程中可能遇到的问题。
总结一下,还是需要夯实基础,掌握SQL,Redis,Linux,Nginx的基础知识点
多写代码,重要的是思路的转变
展开
评论
点赞
#青训营笔记创作活动#
1月18日 打卡day6
今天重新读了一遍这篇文章,里面有很多知识点值得学习
1.一张数据表,有多少个索引,就有多少棵树
2.B+树的高度一般为三层就可以了,进行两次磁盘IO
3.每个叶子节点的数据可以存放16KB
4.利用外部页,存放可变长数据,来处理行长度超过页大小的情况
5.节点内的数据,被查询到后会加入到内存,定位其中某一项内容就会变得非常简单
1月18日 打卡day6
今天重新读了一遍这篇文章,里面有很多知识点值得学习
1.一张数据表,有多少个索引,就有多少棵树
2.B+树的高度一般为三层就可以了,进行两次磁盘IO
3.每个叶子节点的数据可以存放16KB
4.利用外部页,存放可变长数据,来处理行长度超过页大小的情况
5.节点内的数据,被查询到后会加入到内存,定位其中某一项内容就会变得非常简单
展开
评论
点赞