![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 相关
会点代码的大叔
这个作者很懒,什么都没留下…
展开
-
【从单体架构到分布式架构】(三)请求增多,单点变集群(2):Nginx
上一个章节,我们学习了负载均衡的理论知识,那么是不是把应用部署多套,前面挂一个负载均衡的软件或硬件就可以应对高并发了?其实还有很多问题需要考虑。比如:1. 当一台服务器挂掉,请求如何转发到其他正常的服务器上?2. 挂掉的服务器,怎么才能不再访问?3. 如何保证负载均衡的高可用性?等等等等...让我们带着这些问题,实战学习一下 Nginx 的配置和使用。1. 前置概念在正式介绍 Nginx 之前,首先让我们先了解一下概念。1. 中间件干 IT 太累了,我准备辞职开了个烧烤摊,卖羊肉串原创 2020-06-14 10:52:01 · 269 阅读 · 0 评论 -
【从单体架构到分布式架构】(二)请求增多,单点变集群(1):负载均衡
上一个章节,我们搭建了一个最简单的单体服务项目,单体架构就是把所有的功能都放在一个工程项目中。但是当访问量不断增加,我们只部署一套环境就有些吃不消了,这时候有什么解决方案么?如果我们去一个超市购物,当客户数量不多的时候,超市只开通一个结账通道就可以满足需要,但是当客户数量增加,只有一个结账通道的话,会造成客户等待时间过长,最简单的解决方法就是多开几个结账通道。在软件架构中也会有相似的问题:如果项目的用户量少、访问量不大、数据量也不多的时候,一台服务器足以支撑,那么直接项目部署一套,直接访问使用就可原创 2020-06-07 09:53:50 · 686 阅读 · 0 评论 -
明白了缓存穿透和缓存雪崩,再了解一下缓存击穿!
缓存击穿和缓存雪崩的区别在于:雪崩针对很多 key,而击穿只针对于某一个热点 key。设置缓存永不过期,这个方法虽然很暴力,但是确实能解决大部分的问题,当然,大部分场景也不太适用;设置随机过期时间,这个方案对于缓存击穿来说就不太适用了,因为击穿只针对一个热点 key,只要它一失效,大量的访问就会击垮数据库;其余的方案比如使用互斥锁、双缓存机制,也都可以解决缓存击穿的问题,让我们看看这些方案的具体实现。主动刷新缓存缓存设置成永不过期,在更新或删除 DB 中的数据时,也主动地把缓存中的数据更新或删除掉原创 2020-06-03 15:21:04 · 259 阅读 · 0 评论 -
如何在分布式场景下生成全局唯一 ID ?
在分布式系统中,有一些场景需要使用全局唯一 ID ,可以和业务场景有关,比如支付流水号,也可以和业务场景无关,比如分库分表后需要有一个全局唯一 ID,或者用作事务版本号、分布式链路追踪等等,好的全局唯一 ID 需要具备这些特点:全局唯一:这是最基本的要求,不能重复;递增:有些特殊场景是必须递增的,比如事务版本号,后面生成的 ID 一定要大于前面的 ID ;有些场景递增比不递增要好,因为递增有利于数据库索引的性能;高可用:如果是生成唯一 ID 的系统或服务,那么一定会有大量的调用,那么保证其高可用就非原创 2020-06-02 20:30:06 · 377 阅读 · 0 评论 -
用了强大的 Redis,我们的项目是不是不再惧怕高并发查询了?缓存穿透和缓存雪崩了解一下。
关于 Redis 的使用,大家应该已经不陌生了,我也介绍过 Redis 的使用、数据结构、使用场景分析,既然 Redis 这个强大,那么架构中引入了 Redis 之后,是不是就“无敌”了呢?其实所有的架构、框架、组件,在解决一部分问题的同时,同样也会带来新的问题,让我们看看使用 Redis 可能会遇到什么样的问题。缓存穿透Redis 大部分的使用场景,都是根据 key ,先在 Redis 中查询,如果查询不到的话,再查询数据库。当有大量的请求,key 值根本不在 Redis 中,那么查询就会落到数据原创 2020-06-01 22:09:23 · 170 阅读 · 0 评论 -
Java 反射:框架设计的灵魂
在学习 Java 反射之前,先让我们看看这几个概念。1. 解释型语言和编译型语言解释型语言: 不需要编译,在运行的时候逐行翻译解释;修改代码时可以直接修改,可以快速部署,不过性能上会比编译型语言稍差;比如 JavaScript、Python ;编译型语言: 需要通过编译器将源代码编译成机器码才能执行;编译之后如果需要修改代码,在执行之前就需要重新编译。比如 C 语言;Java 严格来说也是编译型语言,但又介于编译型和解释型之间;Java 不直接生成机器码而是生成中间码:编译期间,是将源码交给编译器生原创 2020-05-30 22:48:46 · 346 阅读 · 0 评论 -
一个接口查询关联了十几张表,响应速度太慢?那就提前把它们整到一起
不知道开发的同学有没有遇到过类似这样的需求:相同类型的数据在多个系统中,如果要得到全部的信息,就要连续调多个系统的接口;业务复杂,一个需求需要关联几张表甚至几十张表才能得到想要的结果;系统做了分库分表,但是需要统计所有的数据。那么此类需求要如何满足呢?我们选择了“通过 ETL 提前进行数据整合”的方案。什么是 ETL说到ETL,很多开发伙伴可能会有些陌生,更多的时候 ETL 是用在大数据、数据分析的相关岗位;我也是在近几年的工作过程中才接触到ETL的,现在的项目比较依赖 ETL,可以说是项目原创 2020-05-30 22:33:28 · 1604 阅读 · 0 评论