集群、限流、缓存 BAT 大厂无非也就是这么做

栏目: IT技术 · 发布时间: 6年前

内容简介:集群、限流、缓存 BAT 大厂无非也就是这么做

集群、限流、缓存 BAT 大厂无非也就是这么做

前言

前阵子有网友询问,如何优化网站?这个问题真的很大,跟他简单的聊了一下,随便说了几点,觉得有必要整理一篇文章出来,正好前阵子在做爬虫博客,于是把大体思路分享出来,与大家互通有无,共同进步。

优化

版本一

集群、限流、缓存 BAT 大厂无非也就是这么做

系统开始是这样子的,一个 Tomcat 拖着一个 MySql 服务,跑在一个 2C 4G 的 Linux 服务器上,所有的请求都走 Tomcat,所有的查询都走 MySql,看起来像一句废话?

资源是有限的,那么如何有效的利用资源,提升服务性能?Tomcat 号称能抗住数十万并发访问,但是这事也得分场景,还得有足够牛逼的机器。

Tomcat 优化

Tomcat支持以下三种模式:

  • BIO:一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源,Tomcat7或以下在Linux系统中默认使用这种方式。

  • NIO:利用 Java 的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7 必须修改Connector配置来启(conf/server.xml配置文件):
  • APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

为了方便易用这里我们选择NIO模式,小伙伴们直接下载使用 Tomcat8 以上版本即可,连接池什么的一般使用默认的即可。

版本二

集群、限流、缓存 BAT 大厂无非也就是这么做

可能部分小伙伴知道 Tomcat 容器处理静态请求的性能力并不强,所以这里需要一款能处理静态文件请求又超牛逼的服务,这里推荐 Nginx,当然你可以使用其变种 Tengine、OpenResty 才实现动静分离。

版本三

集群、限流、缓存 BAT 大厂无非也就是这么做

后端服务链接资源是宝贵的,在高并发下,会拖慢整个系统的响应时间。这里我们可以把一些热点数据进行缓存,后端读取缓存,如果数据存在则直接返回,否则再去读取数据库。

版本四

集群、限流、缓存 BAT 大厂无非也就是这么做

资源是有限的,但用户可能是无限的,还可能有一些恶意用户、爬虫、热点搜索。为了大部门用户可以正常访问,这里我们使用前置限流,通过令牌桶算法或者漏桶算法实现多样的限流方案。

版本五

集群、限流、缓存 BAT 大厂无非也就是这么做

在博客系统中,为了提升响应速度,加入了 Redis 缓存,把文章主键 ID 作为 key 值去缓存查询,如果不存在对应的 value,就去数据库中查找 。这个时候,如果请求的并发量很大,就会对后端的数据库服务造成很大的压力。这里我们使用布隆过滤器对空命中进行拦截处理。

终极版

集群、限流、缓存 BAT 大厂无非也就是这么做

  • 如果仅仅对于一个博客而已一个Nginx 足够了,后面可以带多个Tomcat 做负载均衡进群

  • Nginx 应用层面做限流,后端单个服务可以做接口限流

  • 后端服务用户 Session 可以集中存储到 Redsi 中

  • 布隆过滤拦截防止缓存穿透

  • 热点数据读取 Redis 缓存

  • 如有必要 Redis 、MySql 可以做主从集群

小结

优化过程可能仅仅是冰山一角,但大体思路差不多就是这个样子,发现问题然后解决问题,本来架构就是演进而来的。

参考

从SpringBoot构建十万博文聊聊缓存穿透

SpringBoot开发案例之打造十万博文Web篇

从SpringBoot构建十万博文聊聊高并发文章浏览量设计

从0到1构建分布式秒杀系统,脱离案例讲架构都是耍流氓


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

标签: 集群 限流 缓存

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5秘籍(第2版)

HTML5秘籍(第2版)

[美] Matthew MacDonald / 李松峰、朱巍、刘帅 / 人民邮电出版社 / 2015-4 / 89.00元

不依赖插件添加音频和视频,构建适用于所有浏览器的播放页面。 用Canvas创建吸引人的视觉效果,绘制图形、图像、文本,播放动画,运行交互游戏。 用CSS3将页面变活泼,比如添加新奇的字体,利用变换和动画添加吸引人的效果。 设计更出色的Web表单,利用HTML5新增的表单元素更加高效地收集访客信息。 一次开发,多平台运行,实现响应式设计,创建适配桌面计算机、平板电脑和智能手机......一起来看看 《HTML5秘籍(第2版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具