引入消息中间件以后,系统交互的复杂性提升,一旦出了问题以后,要想各种各样的解决方案。 如果用消息中间件是为了削峰填谷,那在高峰期积压了慢慢处理即可。 如果用消息中间件只是为了解耦、异步处理,业务对时效性有一定的要求,那么就要求必须尽快处理。 消息积压,一般分为两大类: 生产者生产消息过快 消费者消费过慢 这两个问题,又可能引出别的问题,如中间件的磁盘有限,无法导致 这两大类又可以细分为三种: 生产者消费过快 运营活动(导致单位时间内流量激增) 微信推文 push营销 短信触达 跑批处理,一下子导入过多的数据到消费者…

2021/09/15 0条评论 365点热度 0人点赞 阅读全文

背景 项目DDD重构后,所有依赖重新整理,试运行期间发现链路追踪的抓取信息不够丰富,就翻下原来的项目源码,再看下对应的改造下。 环境依赖 kafka elasticsearch 7.10.0 (jdk11) Kibana 7.10 zipkin server sleuth 随着微服务的应用,我们运维系统时面临以下问题 真实情况的请求链路是什么? 链路请求过程中每个耗时了多少? 请求的参数以及每个系统的响应是什么? 分布式链路追踪解决了以上这些问题(当然需要自己手动扩展下) 分布式链路追踪(Distributed T…

2021/08/08 0条评论 454点热度 0人点赞 阅读全文

什么是布隆过滤器? 布隆过滤器(Bloom Filter)是1970年由布隆提出的本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 特点: 二进制数组+随机hash 空间效率和查询效率都优于一般算法 O(1) 有一定的误识别率(散列冲突) 删除困难(重合) 高并发场景下,防止缓存穿透; 数据结构 如何快速定位一个元素是否存在? 我们通过redis的全局hash表或者hashMap就能解决这个问题; 看上面的数据结构,两个数据结构差…

2021/07/22 0条评论 348点热度 0人点赞 阅读全文

在灰度系列中《基于springcloud的灰度实现方案(二)》,之前规则适配使用数据库+策略模式实现,单个规则还好,多个规则,各种场景使用,还是稍微有点欠缺。就想着用java规则引擎来解决这个问题。 之前在项目中使用过drools,比较重,初始加载复杂,首次执行效率较低,最好预热一下,其次分布式规则处理时的一致性也得自己把控; 之前就了解过aviator,这次就直接用了。 相关资料 # 官网地址https://github.com/killme2008/aviator# 开发文档https://www.yuque.…

2021/07/05 0条评论 476点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 基于springcloud的灰度实现方案(一) 基于springcloud的灰度实现方案(二) 前两篇介绍了灰度方案以及灰度的实现,这篇从feign底层调用上分析一下是如何实现的。 首先,我们在feign调用时,使用了FeignClient注解。 #接口调用@FeignClient("demo-service")public interface DemoServiceFeginClie…

2021/05/20 0条评论 706点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 基于springcloud的灰度实现方案(一) 该项目已经上传到github上,地址如下: https://github.com/yxkong/springboot-gray 项目说明 通过eureka的扩展元数据,标记服务是灰度服务 重写Ribbon的RoundRobinRule轮训算法实现灰度路由 项目结构说明 必须有一个eureka lb-common 公共包 com.yxkon…

2021/05/19 0条评论 428点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 前言 目前所有的服务都是基于springboot/springcloud体系,注册中心使用eureka。 背景: 新的功能上线后,特别是大版本上线,不能完全保证新功能的质量,特别是对历史用户,数据差异性比较大,又无法复现; 为了测试哪套流程的转化率比较高; 想要的效果 这里就会有以下几个问题: 如果识别是灰度用户?  如何识别是灰度服务? 如何让灰度用户走灰度服务? 如何让灰…

2021/05/18 0条评论 407点热度 0人点赞 阅读全文

项目地址:https://github.com/yxkong/agent 目前已实现对线程池、jvm的监控; 主要是在线程池创建时,对线程池进行增强,将线程池强引用到bootstrap-load-client-0.1.jar中的ThreadPoolMonitorData里。 使用此包的前提是线程池是固定资源,启动后不会销毁,如果动态创建线程池并销毁,需要调用shutdown或者shutdowNow,这块已实现对对强引用的解除,否则因为这块强引用导致资源无法释放,没法被gc回收 bootstrap-load…

2021/04/21 0条评论 386点热度 1人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 读了Java线程池实现原理及其在美团业务中的实践 后,我就想一个问题,如果让我去做这个线程池的监控,我该怎么做? 要对线程池进行监控,首先得明白,我们监控线程池的目的是什么? 监控是为了防患于未然,防止生产事故的发生。或者能在未发生时就进行入状态。 出问题线程池的现象: 线程池异步处理,消费速度过慢,导致任务积压,响应过慢,或者队列有限,导致提交被拒绝; 使用线程池做并行请求…

2021/04/20 0条评论 325点热度 0人点赞 阅读全文

效果如图 第一页和最后一页时上一页/下一页禁用 java逻辑代码 public class TBPager extends TagSupport { private static final long serialVersionUID = -8341120465173736955L; //当前页 private Integer pageNo; //共多少页 private In…

2014/12/14 1条评论 1853点热度 0人点赞 阅读全文
soap2day moviessoap 2 day moviesWatch West Side Story 2021 Free OnlineWatch Bel-Air 2022 Free OnlineWatch The Endgame 2022 Free Online