之前一直用kafka,也了解了kafka的本身的一些机制,包括顺序读、顺序写、零拷贝、分治、水位等。但一直没详细的了解下kafka消费端是如何工作的。 趁着假期分析下,环境如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</v…

2021/09/20 0条评论 1090点热度 1人点赞 阅读全文

没错,又来了,一个项目的结束,就会复盘并完善下。 传统开发的弊病: 通过事务脚本模式来开发需求; 开发人员热衷于技术并通过技术手段解决问题,而不是深入思考和设计业务的走向; 过于重视数据库,围绕数据库和数据模型进行建模,按数据流程进行建模; 按技术视角进行业务命名,导致后续迭代以及人员更替时,产品和技术无法对齐; 随着业务的发展,到后续业务、技术无法沟通,各种不理解; 业务希望技术出排期,技术得撸代码,耗费精力; 代码开发的过程中技术和业务耦合,一个场景一个服务,代码流水线; 因为技术的问题会导致业务流程的中断,导…

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

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

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

基于springcloud的灰度实现方案(一) 基于springcloud的灰度实现方案(二) @Configuration配置加载分析 之前介绍了灰度方案以及实现,分析feign调用的时候,有点不太尽兴,这次再丰富一下。 首先,我们在feign调用时,使用了FeignClient注解。 #接口调用 @FeignClient("demo-service") public interface DemoServiceFeginClient { } # 开启feign @EnableFeignClie…

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

本来只想分析下@import是如何装载的,一下子没刹住车,整了一个Configuration 配置加载分析。 背景 周五在给大家分享sleuth的时候在ZipkinAutoConfiguration中关于程序如何选择Reporter一下子没找到具体的实现。两周之前刚翻过源码,当时理的清清楚楚,两周就忘了。 再次翻看源码后,记录一下 //关键点在ZipkinSenderConfigurationImportSelector,这是一个ImportSelector,先不说为啥 @Import(ZipkinSenderCo…

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

设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。 设计模式相对比较软性,是对解决某类场景问题的高层描述; 根据使用人的不同应用的也不同 只是一种思想,没有好坏之分,只有更适合; 我们应该关注要达到什么样的目的,怎么更加灵活的做到; 软件中唯一不变的是变化,设计模式让我们想各种方法屏蔽这种变化; 设计模式包含: 意图:简单描述问题和解决方案 动机:进一步解释问题并说明模式会如何提供解决方案; 结构:如何将软件结构组装起来并形成关系 设计原则: S…

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

InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一。 InnoDB存储结构 以页为单位来管理存储空间; 以页作为磁盘和内存交互的基本单位; 默认页大小为16kb(所以最少一次从磁盘读取16kb的内容),可以通过innodb_page_size 修改页的大小(在初始化时指定 mysqld --initialize); 不同的行格式在磁盘上的存放形式也不同; mysql规定一页中最少存储2行数据 页中需要占用的额外空间需要132字节 compact 行…

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

前置说明 elasticsearch-7.10 centos7 依赖jdk11 必须使用非root账户启动 创建用户 # 添加组appuser groupadd appuser # 添加用户appuser,并加入主组appuser,又归属于root useradd -s /bin/sh -g appuser -G root appuser # 修改appuser密码 passwd appuser 密码 yxkong 下载解压 https://artifacts.elastic.co/downloads/elasti…

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

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

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

ps 命令用来列出系统中当前运行的那些进程 # 查找对应程序的进程 ps -ef|grep mysql # 将所有的程序显示出来 ps aux pstree 命令以树状图显示进程间的关系 # 常用与统计当前系统有多少线程在运行,系统慢,io较高时使用,可以看哪个程序开启的线程多 pstree -p |wc -l pstree -p 进程号 |wc -l ulimit 为进程及其子进程的资源使用设置限制 如果log中出现无法创建线程的异常,可以查看下,一般appuser的默认值都不高 # 查看资源限制 sh-4.2$…

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