摘要: 为什么需要复杂均衡: 分流 业务拆分导致的分布式环境 解决单点故障 5大负载均衡策略 轮询 加权轮询(轮询时比其它节点轮到的概率高一点) hash ip(解决session不能跨域,同一客户端一直发送到同一服务器) 分配给较小连接数的pod hash url(适合给url做缓存使用) 阅读全文
posted @ 2024-09-09 10:54 山野村夫01 阅读(4) 评论(0) 推荐(0) 编辑
摘要: https://mp.weixin.qq.com/s/RUQXIyN95hvi2wM3CyPI9w 阅读全文
posted @ 2024-08-26 16:45 山野村夫01 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 缓存一致性(redis&DB) 链接:> https://mp.weixin.qq.com/s/OWuP66WxpciBAgm2mptUxw 阅读全文
posted @ 2024-04-11 15:12 山野村夫01 阅读(3) 评论(0) 推荐(0) 编辑
摘要: #性能调优攻略 - 测试:两个关键指标:吞吐量,延迟 - 测试之后,定位性能瓶颈 ### 查看操作系统负载 ​ 看看操作系统的CPU利用率,看看内存使用率,看看操作系统的IO,还有网络的IO,网络链接数,等等 ​ 比如linux系统:top命令 1. 如果cpu利用率不高,但是两个关键指标上不去了, 阅读全文
posted @ 2023-05-22 16:14 山野村夫01 阅读(24) 评论(0) 推荐(0) 编辑
摘要: IM 实时性 发展: 短轮询: 缺点:无脑消耗资源,因为有的时候并没用新的数据产生 优点:技术和维护简单 长轮询: 优点:降低了服务器请求负载,实时性有所提升,因为是主动等 缺点:1. 在等待消息的过程中服务器需要开启消息查询线程,仍然存在无用功 2. 实时性还存在不足:在轮询结束和下一次轮询发起之 阅读全文
posted @ 2023-05-17 15:43 山野村夫01 阅读(41) 评论(0) 推荐(0) 编辑
摘要: cpu缓存分为L1cache,L2cache,L3cache L1为每个cpu独有缓存,L3为几个cpu的共有缓存,所以内存大小L3也是最大相应的L1,L2,L3速度也是由快到慢 cpu cache从内存读取数据的单位是缓存块(Cache Line),大小取决于coherency_line_size 阅读全文
posted @ 2023-04-13 20:13 山野村夫01 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 如何正确停止线程? 停止线程应该是一种通知协作的方式,比如interrupt,但是它仅仅是通知线程,线程拥有完全的自主权,根据自身业务来判断什么时候停止,因为如果选择立即停止就可能导致数据不完整这种问题 在休眠状态的线程是否可以感应到中断 可以,程序会抛出一个异常 为什么用 volatile 标记位 阅读全文
posted @ 2022-09-23 11:44 山野村夫01 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 属性:公平,互斥,可重入(业务涉及不多) 可使用redis,zookeeper,etcd实现 redis实现: 一般追求高性能使用redis redis采用单线程架构,可以保证单个命令的原子性,但是无法保证一组命令在高并发场景下的原子性(引入lua脚本) 注意点: 独占排他:setnx 防死锁: r 阅读全文
posted @ 2022-09-12 21:11 山野村夫01 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 回溯问题 三种情况 每种情况都有子集,组合,排列三种题型 无重复元素不可复选 //子集问题 static List<List<Integer>> res=new LinkedList<>(); static LinkedList<Integer> track=new LinkedList<>(); 阅读全文
posted @ 2022-08-23 15:06 山野村夫01 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 并发编程学习 Semaphore Semaphore 可以允许多个线程访问一个临界区。 应用:实现线程池 CountDownLatch 应用: 业务原始状态:一个线程执行查询订单,查询派送单,对比差异,写入数据库 优化后:多线程并发执行:一个线程查询订单,一个线程查询派送单,一个线程对比差异并写入数据库 问题:线 阅读全文
posted @ 2022-08-22 11:58 山野村夫01 阅读(18) 评论(0) 推荐(0) 编辑