架构篇
Winn~
这个作者很懒,什么都没留下…
展开
-
面试经典-Redis数据库的数据倾斜
对于集群系统,一般缓存是分布式的,即不同节点负责一定范围的缓存数据。我们把缓存数据分散度不够,导致大量的缓存数据集中到了一台或者几台服务节点上,称为数据倾斜。一般来说数据倾斜是由于负载均衡实施的效果不好引起的。原创 2024-04-18 19:36:34 · 1348 阅读 · 0 评论 -
手把手教你实现一个Java Agent
团队中有同事在做性能优化相关的工作,因为公司基础设施不足,同事在代码中写了大量的代码统计某个方法的耗时,大概的代码形式就是这样的代码非常多,侵入性很大,联想到之前学习的Java Agent技术,可以无侵入式地解决这类问题,所以做了一个很小很小的demo。原创 2023-12-05 12:17:37 · 165 阅读 · 0 评论 -
elasticsearch命令大全
16、bool查询must_not(not),既不是也不是。17、bool查询filter,某个字段还可以比较大小范围。14、bool查询must(and),同时满足多个条件。15、bool查询should(or),满足一个就行。2、要按文档数对所有索引进行降序排序。10、phrase最左前缀查询。13、按某个字段降序查询。6、查询索引的结构信息。DELETE 索引名。4、查看集群各个节点。5、查看集群健康状态。9、phrase查询。原创 2023-11-21 16:11:34 · 686 阅读 · 0 评论 -
如何在10亿级别用户中检查用户名是否存在?
不知道大家有没有留意过,在使用一些app注册的时候,提示你用户名已经被占用了,需要更换一个,这是如何实现的呢?你可能想这不是很简单吗,去数据库里查一下有没有不就行了吗,那么假如用户数量很多,达到数亿级别呢,这又该如何是好?原创 2023-11-16 11:10:59 · 1603 阅读 · 0 评论 -
Sentinel底层原理(下)
Sentinel的核心原理,也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。Sentinel会为每个资源创建一个处理链条,就是一个责任链,第一次访问这个资源的时候创建,之后就一直复用,所以这个处理链条每个资源有且只有一个。SphU.entry(…)这行代码背后就会调用责任链来完成对资源的检查逻辑。这个责任链条中每个处理节点被称为ProcessorSlot,中文意思就是处理器槽这些实现会通过SPI机制加载,然后按照一定的顺序组成一个责任链。原创 2023-11-14 16:54:15 · 329 阅读 · 0 评论 -
Sentinel浅层介绍(上)
Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。原创 2023-11-14 15:42:45 · 244 阅读 · 0 评论 -
五大限流设计方式
计数器是一种最简单限流算法,其原理就是:在一段时间间隔内,对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。这个就像你去坐车一样,车厢规定了多少个位置,满了就不让上车了,不然就是超载了。原创 2023-07-17 14:27:28 · 250 阅读 · 0 评论 -
单机性能极限优化六大绝招
索引的原理是拿额外的存储空间换取查询时间,增加了写入数据的开销,但使读取数据的时间复杂度一般从O(n)降低到O(logn)甚至O(1)。索引不仅在数据库中广泛使用,前后端的开发中也在不知不觉运用。在数据集比较大时,不用索引就像从一本没有目录而且内容乱序的新华字典查一个字,得一页一页全翻一遍才能找到;用索引之后,就像用拼音先在目录中先找到要查到字在哪一页,直接翻过去就行了。书籍的目录是典型的树状结构,那么软件世界常见的索引有哪些数据结构,分别在什么场景使用呢?原创 2023-07-11 18:58:28 · 208 阅读 · 0 评论 -
订单自动取消的11种实现方式(下)
在Redis中,有个发布订阅的机制生产者在消息发送时需要到指定发送到哪个channel上,消费者订阅这个channel就能获取到消息。图中channel理解成MQ中的topic。并且在Redis中,有很多默认的channel,只不过向这些channel发送消息的生产者不是我们写的代码,而是Redis本身。这里面就有这么一个channel叫做__keyevent@__:expired,db是指Redis数据库的序号。当某个Redis的key过期之后,Redis内部会发布一个事件到__keyevent@__原创 2023-07-07 14:48:06 · 457 阅读 · 0 评论 -
订单自动取消的11种实现方式(上)
DelayQueue是JDK提供的api,是一个延迟队列DelayQueue泛型参数得实现Delayed接口,Delayed继承了Comparable接口。getDelay方法返回这个任务还剩多久时间可以执行,小于0的时候说明可以这个延迟任务到了执行的时间了。compareTo这个是对任务排序的,保证最先到延迟时间的任务排到队列的头。原创 2023-07-07 12:06:41 · 230 阅读 · 0 评论 -
分布式中灰度方案就该这样设计!
分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版本之间的隔离性,验收需要将请求路由到指定版本号的服务上处理;假设存在三个服务:A、B、C,且服务B和C都存在多个版本,那么让请求按照即定的路由规则执行,即可保证研发期间的验收是版本间隔离的,并且可以实现灰度部署的策略;原创 2023-07-06 11:04:58 · 238 阅读 · 0 评论 -
Redis10大性能优化策略(下)
1)尽量不使用 O(N) 以上复杂度过高的命令,对于数据的聚合操作,放在客户端做。2)执行 O(N) 命令,保证 N 尽量的小(推荐 N原创 2023-07-05 14:31:06 · 1128 阅读 · 0 评论 -
Redis10大性能优化点(上)
对 Redis 进行基准性能测试例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,但是如果你的硬件配置比较高,那么在你的运行环境下,可能延迟是 0.5ms 时就可以认为 Redis 变慢了。所以,你只有了解了你的 Redis 在生产环境服务器上的基准性能,才能进一步评估,当其延迟达到什么程度时,才认为 Redis 确实变慢了。为了避免业务服务器到 Redis 服务器之间的网络延迟,你需要直接在 Redis 服务器上测试实例的响应延迟情况。原创 2023-07-05 11:42:45 · 716 阅读 · 0 评论 -
设计一个高流量高并发的系统需要关注哪些点
做好一个高流量高并发的系统,不论前端还是后端,过程中每一个步骤都是至关重要的。设计一个系统除了满足功能性,还要考虑兼容性、易用性、可靠性、安全性、可维护性、可移植性等软件质量。同时要对系统的吞吐量、并发数、平均响应时间等指标要完全掌握,在指标异常时可以快速做出决策避免一系列问题发生。原创 2023-06-29 18:11:19 · 337 阅读 · 0 评论 -
ES+Redis+MySQL,这个高可用架构设计太顶了!
会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并,越来越多的系统需要打通同程APP、艺龙APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销,用户买了一张火车票,此时想给他发酒店红包,这就需要查询该用户的统一会员关系。原创 2023-03-14 17:13:34 · 3357 阅读 · 2 评论 -
构建高性能内存队列:Disruptor
为了提高CPU的速度,Cpu有高速缓存Cache,该缓存最小单位为缓存行CacheLine,他是从主内存复制的Cache的最小单位,通常是64字节。一个Java的long类型是8字节,因此在一个缓存行中可以存8个long类型的变量。如果你访问一个long数组,当数组中的一个值被加载到缓存中,它会额外加载另外7个。因此你能非常快地遍历这个数组。原创 2022-12-22 14:52:28 · 700 阅读 · 0 评论 -
xxl-job惊艳的设计,怎能叫人不爱
xxl-job 使用 netty http 的方式进行通信,虽然也支持 Mina,jetty,netty tcp 等方式,但是代码里面固定写死的是 netty http。原创 2022-12-22 11:37:27 · 143 阅读 · 0 评论 -
一张图看懂ElasticSearch聚合
原创 2021-12-13 15:57:26 · 1034 阅读 · 0 评论 -
一张图看懂MySQL架构原理和优化
原创 2021-12-10 17:17:08 · 629 阅读 · 0 评论 -
一文看懂并发量计算公式
1、估算业务并发量的公式C=nL/TC^=C+3×(C的平方根)其中:C是平均的业务并发用户数、n是login session的数量、L是login session的平均时间长度、T是指考察的时间段长度、C^是指业务并发用户数的峰值。例子分析:假设OA系统有1000用户,每天400个用户发访问,每个登录到退出平均时间2小时,在1天时间内用户只在8小时内使用该系统。则平均并发量和最大并发量如下:C=400×2/8=100C^=100+3×(100的平方根)=100+3×10=130此外,如转载 2021-12-08 14:28:41 · 20358 阅读 · 0 评论 -
一张图看懂Elasticsearch查询
原创 2021-12-06 17:23:20 · 1173 阅读 · 0 评论 -
一张图看懂Elasticsearch简介
原创 2021-12-06 16:13:59 · 1154 阅读 · 0 评论 -
一张图看懂Netty原理
原创 2021-12-02 14:41:26 · 234 阅读 · 0 评论 -
一张图看懂Future异步回调模式
原创 2021-12-01 11:29:12 · 102 阅读 · 0 评论 -
一张图看懂基于Java NIO的Reactor反应器模式示例
原创 2021-11-30 16:31:41 · 376 阅读 · 0 评论 -
一张图看懂Java NIO通信
原创 2021-11-30 11:22:28 · 328 阅读 · 0 评论 -
一张图看懂高并发IO的底层原理
原创 2021-11-29 15:05:11 · 166 阅读 · 0 评论 -
一张图看懂Redis集群
原创 2021-11-26 16:01:08 · 441 阅读 · 0 评论 -
一张图看懂Redis主从复制和哨兵机制
原创 2021-11-25 16:54:18 · 585 阅读 · 0 评论 -
一张图看懂Redis整体模型
原创 2021-11-24 16:45:23 · 924 阅读 · 0 评论 -
一张图看懂Redis持久化
原创 2021-11-23 18:06:33 · 347 阅读 · 0 评论 -
一张图看懂Redis数据库是如何保存的
原创 2021-11-23 12:08:20 · 314 阅读 · 0 评论 -
一张图看懂Redis五大对象结构
原创 2021-11-22 15:03:16 · 454 阅读 · 0 评论 -
一张图看懂Redis底层数据结构
原创 2021-11-19 16:35:49 · 830 阅读 · 0 评论 -
一张图看懂Kafka应用
原创 2021-11-18 12:07:40 · 977 阅读 · 0 评论 -
一张图展示Kafka服务端几个亮点
原创 2021-11-17 11:25:01 · 320 阅读 · 0 评论 -
一张图看懂Kafka的数据存储
原创 2021-11-16 15:30:03 · 1317 阅读 · 0 评论 -
一张图看懂Kafka主题与分区
原创 2021-11-15 17:40:40 · 454 阅读 · 0 评论 -
一张图看懂Kafka消费者
原创 2021-11-12 15:54:24 · 825 阅读 · 0 评论 -
一张图看懂Kafka生产者
原创 2021-11-11 19:30:04 · 743 阅读 · 0 评论