之前一直用kafka,也了解了kafka的本身的一些机制,包括顺序读、顺序写、零拷贝、分治、水位等。但一直没详细的了解下kafka消费端是如何工作的。 趁着假期分析下,环境如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</v…
之前一直用kafka,也了解了kafka的本身的一些机制,包括顺序读、顺序写、零拷贝、分治、水位等。但一直没详细的了解下kafka消费端是如何工作的。 趁着假期分析下,环境如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</v…
没错,又来了,一个项目的结束,就会复盘并完善下。 传统开发的弊病: 通过事务脚本模式来开发需求; 开发人员热衷于技术并通过技术手段解决问题,而不是深入思考和设计业务的走向; 过于重视数据库,围绕数据库和数据模型进行建模,按数据流程进行建模; 按技术视角进行业务命名,导致后续迭代以及人员更替时,产品和技术无法对齐; 随着业务的发展,到后续业务、技术无法沟通,各种不理解; 业务希望技术出排期,技术得撸代码,耗费精力; 代码开发的过程中技术和业务耦合,一个场景一个服务,代码流水线; 因为技术的问题会导致业务流程的中断,导…
基于springcloud的灰度实现方案(一) 基于springcloud的灰度实现方案(二) @Configuration配置加载分析 之前介绍了灰度方案以及实现,分析feign调用的时候,有点不太尽兴,这次再丰富一下。 首先,我们在feign调用时,使用了FeignClient注解。 #接口调用 @FeignClient("demo-service") public interface DemoServiceFeginClient { } # 开启feign @EnableFeignClie…
本来只想分析下@import是如何装载的,一下子没刹住车,整了一个Configuration 配置加载分析。 背景 周五在给大家分享sleuth的时候在ZipkinAutoConfiguration中关于程序如何选择Reporter一下子没找到具体的实现。两周之前刚翻过源码,当时理的清清楚楚,两周就忘了。 再次翻看源码后,记录一下 //关键点在ZipkinSenderConfigurationImportSelector,这是一个ImportSelector,先不说为啥 @Import(ZipkinSenderCo…
InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一。 InnoDB存储结构 以页为单位来管理存储空间; 以页作为磁盘和内存交互的基本单位; 默认页大小为16kb(所以最少一次从磁盘读取16kb的内容),可以通过innodb_page_size 修改页的大小(在初始化时指定 mysqld --initialize); 不同的行格式在磁盘上的存放形式也不同; mysql规定一页中最少存储2行数据 页中需要占用的额外空间需要132字节 compact 行…
前置说明 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…
背景 项目DDD重构后,所有依赖重新整理,试运行期间发现链路追踪的抓取信息不够丰富,就翻下原来的项目源码,再看下对应的改造下。 环境依赖 kafka elasticsearch 7.10.0 (jdk11) Kibana 7.10 zipkin server sleuth 随着微服务的应用,我们运维系统时面临以下问题 真实情况的请求链路是什么? 链路请求过程中每个耗时了多少? 请求的参数以及每个系统的响应是什么? 分布式链路追踪解决了以上这些问题(当然需要自己手动扩展下) 分布式链路追踪(Distributed T…