自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

琪琪的博客

当下流行技术

  • 博客(208)
  • 资源 (6)
  • 收藏
  • 关注

原创 LinkedIn 开源分布式存储系统Ambry

分区是固定大小的资源,集群间的数据重平衡都是在分区级别进行的。为了put操作,Ambry可以配置为同步复制(确保 blob 在返回之前出现在多个数据节点上),或异步复制-同步复制可防止数据丢失,但会在写入路径上引入更高的延迟。数据节点和前端服务器都能够访问 clustermap,并且会始终使用它们当前的视图来做出决策,这些决策涉及到选择可用的机器、过滤副本以及识别对象的位置等。在put操作中,分区是随机选择的(出于数据平衡的目的),在get/delete 操作中,分区是从blob id 中提取的。

2023-12-26 13:50:04 1248

原创 MPP 还是主流架构吗

在此声明,吞吐量是在一个固定的时间区间内(时间足够长以产生一个代表性的结果),执行的相同种类的查询任务的数量。比如说,4个节点的集群和400个节点的集群将支持同一级别的并发度,而且他们性能下降的点基本上是同样。如果一个节点总是执行的慢于集群中其他的节点,整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),无论集群有多少节点,都不会有所提高。事实上,在一个确定的量级,你的MPP系统将总会有一个节点的磁盘队列出现问题,这将导致该节点的性能降低,从而像上面所说的那样限制整个集群的性能。

2023-08-22 15:27:28 1293

原创 Cloud Native 演进可行性研究

Paul Fremantle提出Cloud Native的原因是他一直想用一个词表达一种架构,这种架构能描述应用程序和中间件在云环境中的良好运行状态。Cloud Native是以云和微服务架构为基础构建系统的从研发流程的角度来讲,自动化的研发环境是Cloud Native的基础。因为使用云作为基础设施,已经具备基础的自动化能力,可以达到自服务的要求,流程中应该尽量减少沟通人员的规模,尽量减少测试及运维对开发的协助。

2022-11-01 14:45:20 336

原创 kafka每秒千万级优化思路

如果秒级产生150MB的数据,如果Consumer消费的速度不够快,那么8G的PageCache可能不到半小时就没了,那么就会带来新的问题了,consumer消费的数据由于在PC上面找不到,就会不停的去硬盘查找数据,那么内存度和交换度的性能是数量级的差别,新的Topic数据大概率会存储在日志数量最少的borker磁盘上,如果这部分topic数据量比较大,那么就会导致存储不均衡,这个borker磁盘会率先报警,部分borker磁盘到达存储阈值后会对kafka带了很大的性能影响。可以通过如下命令查看迁移状态。

2022-10-12 19:19:15 1385

原创 Apache SeaTunnel在VIP 中的使用

SeaTunnel这款产品的中文翻译个人觉得非常契合产品定位,大多数翻译软件都会翻译成(海底隧道),SeaTunnel作为源 - 目的地的数据传输工具,其性能超越了市面上绝大多数的同步工具,后面会详细介绍性能。

2024-03-13 16:38:51 1043

原创 如何准确分析需求

简单来说,就是从黑盒子视角回答“整个软件系统为客户解决了什么问题、创造了什么机会”,“对于系统而言,最关键的干系人有哪些”,“各个重要干系人对系统的关注点是什么?传统的需求分析是站在技术视角展开的,关注的是“方案级需求”;业务流程分析,最重要的是厘清如图7-5所示的业务流程八要素,包括五个基本要素(分工、活动、协作、产物关系、分支),三个管理要素(审核、规则、异常)。在信息系统需求分析中,数据主线的重点在于范围与关系,也就是哪些数据要纳入系统,它们之间的关系是什么,而领域建模正是解决这两个问题的关键。

2023-11-13 20:21:17 188

原创 MPP 架构在 OLAP 数据库的运用

在此声明,吞吐量是在一个固定的时间区间内(时间足够长以产生一个代表性的结果),执行的相同种类的查询任务的数量。比如说,4个节点的集群和400个节点的集群将支持同一级别的并发度,而且他们性能下降的点基本上是同样。如果一个节点总是执行的慢于集群中其他的节点,整个集群的性能就会受限于这个故障节点的执行速度(所谓木桶的短板效应),无论集群有多少节点,都不会有所提高。事实上,在一个确定的量级,你的MPP系统将总会有一个节点的磁盘队列出现问题,这将导致该节点的性能降低,从而像上面所说的那样限制整个集群的性能。

2023-10-10 09:59:18 597

原创 面试常问:B+树深层理解

B+Tree 经过几十年的发展已经成为 OLTP 数据库的首选索引结构,深入分析开始前先介绍一些书籍给大家,B+Tree 的演进非常的复杂,有很多的大牛论文都做出了很关键的指导性作用,就算当前还是在不断探索优化的可能,其目的主要是为了降低锁粒度降低读写冲突。这里的锁可能不完全是大家以为的 Java 临界区线程锁,后面会详细阐述何为 Lock有很多博文都有描述Mysql。

2023-09-01 18:00:34 263

原创 SpringBoot 常用注解

如果扫描到有@Component、@Controller、@Service等注解的类,将其注册为Bean,也可以自动收集所有的Spring组件,包括@Configuration类。@Import:用来导入其他配置类,作用就是和xml配置的import标签作用一样,允许通过它引入@Configuration注解的类(java config),Spring4.2以后也可以导入普通的Java并将其声明为一个bean。@Inject:是JSR330中的规范,等价于默认的@Autowired。

2023-08-22 15:32:09 237

原创 Raft 思想在架构中实践

TiDB 是 NewSql 一款很火的数据库,解决了 Mysql 对于海量数据的处理缺陷以及横向扩展能力(分布式),在此基础上还同时拥有 ACID 的事务特性,如果之前使用过Mysql 那么学习使用 TiDB 基本没有什么学习成本我们重点来说说 TiDB中的 TiKV,TiDB 也是采用了存算分离架构,TiKV 就是存储层。

2023-07-24 10:31:12 349

原创 数据安全架构设计

在提到安全架构之前,我们先看看安全的定义:安全是产品的质量属性,安全的目标是保障产品里信息资产的保密性(Confidentiality)、完整性(Integrity)和可用性(Availability),简记为CIA。■ 保密性:保障信息资产不被未授权的用户访问或泄露。■ 完整性:保障信息资产不会未经授权而被篡改。■ 可用性:保障已授权用户合法访问信息资产的权利。以IT系统为例,假设某企实施薪酬保密制度,员工张三在工资系统中查询自己工资的时候,利用系统缺陷,知道了其他员工的工资,这就属于保密性被破坏。

2023-06-09 10:49:39 1389

原创 ShardingSphere数据分片、读写分离、数据屏蔽教程

ShardingSphere数据分片、读写分离、数据屏蔽教程

2023-05-12 10:10:56 920 1

原创 IDEA中超详细DEBUG教程

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。

2023-03-28 17:13:00 2394

原创 常用设计模式的正确应用

根据入参来判断执行哪段私有方法逻辑,这种场景其实在我们实战中很常见,也并不是说所有的类似场景都要改成策略模式,因为策略模式的缺点就是子类太多,个人建议这种分支逻辑在 >= 3 &&

2023-03-16 10:47:35 292

原创 缓存中间件Caffeine超详细源码解读

读源码是一件非常复杂、困难、枯燥的过程,这个复杂过程我给大家踩了,各位看官躺平看就行啦。

2023-02-12 18:28:11 1902

原创 Elasticsearch 需要了解的都在这

Master节点并不知道主分片节点位于哪里,它只能向所有节点上的所有Shard去询问你的website下标是不是0,那么这个询问的请求量就等于 节点数 * Shard数,如果你的规模非常庞大,那么这个将会很耗时,这个时候可能会获取到多份下标为0的请求响应,5.X版本之后主分片的选举是根据一个List,在这个集合中的分片都是元信息最新的分片数据。其实他是分了2个步骤做这件事,先选出ID最大的主节点,然后再从元信息最新的节点将元信息数据复制到选举出来的主节点。

2023-01-29 23:02:59 1465 1

原创 Java编码的坑你知多少?

在Java中,RandomAccess和Cloneable、Serializable一样,都是标志性接口,不需要任何实现,只是用来表明其实现类具有某种特质的,实现了Cloneable表明可以被拷贝,实现了Serializable接口表明被序列化了,实现了RandomAccess则表明这个类可以随机存取,对我们的ArrayList来说也就标志着其数据元素之间没有关联,即两个位置相邻的元素之间没有相互依赖和索引关系,可以随机访问和存储。是内部类,并且是静态(static修饰)的即为静态内部类。

2022-12-09 19:13:48 573

原创 常用SQL优化总结

然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。14)并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。11)在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

2022-10-08 22:20:04 120

原创 性能和成本的综合架构:单元化架构

第一次听见单元化架构的小伙伴可能一时有点懵,听说过微服务架构、网格架构等但是单元化架构是什么鬼?其实在我们手机里面很多常用APP都是单元化架构,类似高德导航、金融银行类APP都是将单元化架构进行了很多年,我们都知道导航类APP对于请求RT和请求稳定性都是十分严格的,如果RT延迟很高,等你已经路过某个路口了,导航突然告诉你需要拐弯....这个时候的你是不是心里一万个草泥马涌出来了,那么这个导航APP你到家肯定立刻就卸载了。...

2022-07-24 18:57:08 2325 1

原创 Hbase 深度使用分析

循环put...那是不可能的..可以使用put(List puts) 需要注意的是当一部分数据插入成功后,此时某个RegionServer出现异常,之前的数据是不会回滚的,对于插入失败的数据hbase默认会进行重试直到到达最大重试次数还是失败即会结束重试(失败数据在写缓冲区),不过如果列族错误了,那么不会进行重试,直接抛出异常get(List gets) 返回一个Result数组,如果一部分数据失败,一部分数据查询成功,最终hbase还是会返回异常,如果你希望不要抛出异常而是返回成功部分......

2022-06-21 00:08:29 1045

原创 数据处理分布式计算设计概要

背景描述:一批1亿左右的数据,需要计算所有数据属于哪些类型,然后归类发送到MQ中,这个是一个真实的业务场景,并且会有一定的并发读,可能同一时间10-20个类似的处理任务发生分布式计算简单来说,是把一个大计算任务拆分成多个小计算任务分布到若干台机器上去计算,然后再进行结果汇总。 公司场景一批几亿数据需要进行计算匹配发送,单节点处理经过几轮优化可能需要5小时才能发送完,针对这样的场景开始了分布式计算的设计之路不过数据一旦进行计算拆分,问题会变得非常复杂,像一致性、数据完整、通信、容灾、任务调度等

2022-05-28 23:21:35 493

原创 Sentinel 深度分析

流控配置:资源名的填写分feign/dubbo不同方式:feign 填写请求地址 dubbo 填写sentinel注解的value值@SentinelResource(value = "circle.checkPopulation", blockHandler = "checkPopulation", blockHandlerClass = {BlockExceptionHandler.class})有种更加简单的方式,直接通过簇点链路菜单看各个资源地址,直接进行流控配置针对来

2022-05-17 14:09:10 494

原创 ClickHouse 深度解析第二篇

ClickHouse 诞生之处是为了服务Yandex自家的WEB流量分析产品Metrica,在超过20万亿数据的场景下,ClickHouse能做到90%查询在一秒内返回的效果,但是对于一款OLAP的数据库来说也有不适用的场景:不支持事务 不擅长根据主键按行进行查询 不擅长按行删除数据为了获得极致的查询性能,OLAP数据库会相应放弃很多其他功能的弱化ClickHouse是一款列式存储+数据压缩的数据库,数据压缩的本质就是对一定步长内的重复数据进行转换,案例:压缩前:abcdefg...

2022-04-17 11:33:26 1336

原创 用Java设计实现多实例多库查询

服务的边界职责:大数据层取数统一实现入口(数据源的路由,ADB/CK/HBASE... 大数据操作层数据源的路由) 支持多实例、多库、多表的异构数据查询通过 查询 语义分析+元信息解析,拆解 查询输入 中的异构数据源处理,所有异构数据处理采用异步 Callback 方式解决的问题:多个数据来源写入到不同实例、不同库中,并且一个圈选可以支持圈多个实例(不同库)中的标签、事件数据 单表数据量过大,目前只能通过压缩保留时间解决,需要可以进行按时间段拆表分表查询数据单实例配置上限问题,实例升级..

2022-03-08 21:04:14 4045

原创 Rocketmq 事务消息使用与原理

Rocketmq 使用示例和原理解析

2022-02-08 15:46:13 2534

原创 SQL 解析原理和使用场景

Github 地址:https://github.com/j-easy/easy-ruleshttps://github.com/j-easy/easy-rules

2022-01-09 16:27:23 4059

原创 ClickHouse 结构以及使用场景

大多数公司的日志系统检索使用的都是 ELK+Kafka+ES 的架构,在日志数据量不是特别庞大的时候其实这种架构还是挺好的,简单并且也很高效,但是当你的公司日志数据量非常庞大每分钟生产1亿条数据的场景下,这种架构的问题就很明显了,主要会出现下面几个问题:延迟很高,kafka收集push 的延迟变高 ES 插入性能迅速下降,大量插入请求只能排队不然 ES 会被打挂,限流排队也就意味着延迟变得更加高我们这边文章只讨论数据存储层进行提效,那么就是 CK 来替代 ES 了CK 高性能的4个特点上图.

2021-12-02 13:53:21 2915

原创 HBase LSM树存储引擎

1.前提讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来:哈希存储引擎。 B树存储引擎。LSM树(Log-Structured Merge Tree)存储引擎。2. 哈希存储引擎哈希存储引擎哈希表的持久化实现,支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就非常适合。代表性的数据库有:Red...

2021-11-07 23:20:06 264

原创 Java 函数式编程的妙用

Jdk8之后新增的一个重要的包 :java.util.function该包下所有的接口都是函数式接口, 按分类主要分为四大接口类型:Function、Consumer、Predicate、Supplier 接口 参数 返回值 说明 Supplier 无 T 供给型:无参,返回一个执行泛型对象 Consumer ...

2021-09-30 13:51:00 356

原创 NGINX超全配置详解

配置文件核心指令mainuser: USERNAME [GROUP] 指定Nginx属主属组,属组可以不指定pid: pid存放路径worker_rlimit_nofile: 子进程可以打开的最大文件句柄数worker_rlimit_core: 子进程异常终止后的core文件worker_rlimit_core 10M;working_directory /path/to/dir;worker_processes: worker子进程数量 autoworker_cpu_affini...

2021-09-04 19:03:01 1156

原创 Elasticsearch断路器相关知识及使用

背景在使用elasticsearch时,如果使用了高基数的聚合查询,有可能导致内存溢出OOM,导致elasticsearch的节点问题,进一步引发该节点上的分片漂移,从而影响线上的查询问题。原因Elasticsearch在执行高基数查询时,会默认为每组数据生成一个桶,并且存放在内存中,当基数很大也就是分组数据的重复性不高时,就会生成很多的桶,从而占用大量的内存。内存使用介绍ES的JVM heap按使用场景分为可GC部分和常驻部分。 可GC部分内存会随着GC操作而被回收;...

2021-08-14 22:24:18 1960 1

原创 傻瓜式SpringBoot-WebFlux入门

再说响应式编程前先来了解下WebSocker在Spring中的支持 注解名 描述 使用场景 WebSocket @ServerEndpoint WebSocket使用,定义端点路径 定义在某个类上,使用ws进行请求就会找到这个端点进入这个类 @OnOpen ws连接建立成功后进入的回调方法 ...

2021-08-05 14:08:32 1773

原创 Redis 间歇性抖动<集群下mget的性能问题>

redis问题在最近公司内部使用redis的时候,在部分场景中发现redis经常会间歇性的抖动,具体表现为在短时间内redis rt上涨明显,RedisCommandTimeoutException异常陡增,如下图:监控面板是按照分钟级别进行统计,所以rt上涨看起来不是很明显。这种情况肯定不太正常,并且在近期出现的频率有上升趋势。定位原因遇到这种问题,首先会想到是不是redis本身抖动造成的,看表象其实很像,无规律,间歇性,影响时间很短,所以第一时间找了DBA确认当时是不是r

2021-07-11 14:29:23 1943 3

原创 SpringBoot事务不起作用问题的解决方案

背景在做业务开发时,遇到了一个事务不起作用的问题。大概流程是这样的,方法内部的方法调用了一个带事务的方法,失败后事务没有回滚。查阅资料后,问题得到解决,记录下来分享给大家。场景在一个UserService里面,一个内部方法callSaveUser调用该service里面的saveUser方法 @Override @Transactional(rollbackFor = RuntimeException.class) public void saveUser(User use.

2021-07-04 09:52:59 857

原创 Sonar-扫描插件自定义扩展

数据平台-研发一组-得物版Sonar开发规约已经制作完成阿里很早之前出过一个流传在坊间的《Java开发手册.pdf》,这个里面定义了很多开发规范,其中最基本必须要遵守的规范阿里出了一套Sonar插件来帮助扫描说的开发插件其实本质就是利用源设计者留下的入口拿到源事件然后进行实现,最终你的实现会在你不知道的时间,不知道的地点被调度执行,这就是设计模式的魅力,保证了开闭原则下进行了功能扩展那么Sonar的设计者为我们留下了哪些入口呢?这个时候我们经常会百度、谷歌,一...

2021-06-13 08:30:07 3619 1

原创 PII欧洲已经强制执行了,中国还会远吗?

什么是个人识别信息?PII?个人识别信息(即 PII)指与身份已识别或可识别的自然人(“数据主体”)有关的任何信息,包括 适用的当地法律定义的个人数据。可识别身份的自然人指可直接或间接识别其身份的人士,特别 是通过姓名、身份证号码、地址数据、网上识别特征之类的识别特征来识别其身份,或参照该自 然人在身体、心理、基因、精神、经济、文化或社会身份方面特有的一种或多种因素来识别其身份。欧洲PII实行要求是哪些?用户未经授权的隐私信息不得私自采集存储 用户有删除个人隐私诉求时,服务企业必须在整个系..

2021-06-08 17:22:37 306

原创 高性能框架的基石-epoll

一、背景1.程序员的三高高并发,高性能,高可用2.高性能框架redis:为什么那么快?netty:广泛使用的Java网络编程框架dubbo:高性能的Java rpc框架kafka,nginx这一切基石,epoll。概念:epoll是linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。---百度百科二、前言在了解epol.

2021-06-03 11:02:33 397 1

原创 JMeter实用教程【二】-BeanShell的使用

为什么要使用BeanShell之前在做客服域相关接口生产环境压测的时候,遇到一个问题,那就是签名如何生成,网关的同学是有提供相关签名计算的jar包,如何使用提供的jar包在JMeter中生成签名?BeanShell这个小工具可以帮到你。BeanShell简介Beanshell 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。BeanShell执行 标准Java语句和表达式,另外包括一些脚本命令和语法。它将脚本化对象看作简单闭包方法(s.

2021-06-01 10:52:23 1664 2

原创 详解:Salesforce元数据支撑SASS架构设计

1

2021-05-29 21:53:57 3429 2

原创 地球上目前最好的本地缓存框架:Caffeine

Guava Cache这个是一开始大家用的本地缓存框架,他极大的简化了我们操作缓存时需要考虑的丢弃策略、刷新策略等等....并且当时这个框架的各方面性能也是要高于Ehcache2框架的但是时代再次发生了变化 ----------------------------------------华丽的分割线Caffeine 框架横空出世显来几个性能测试报告来做开胃菜GuavaCache 和 Caffeine两个框架最根本的区别就在于淘汰策略的算法上:LRU 算法(G...

2021-05-17 17:28:30 994

customcoding.zip

Netty 自定义编码、解码器案例 适合netty初学者

2021-04-07

drools-demo.zip

规则引擎简单使用案例 Drools+Springboot2.X

2021-03-18

utility.zip

Drools博客使用,模板代码打包上传 本作者Drools博客需要使用得模板代码

2019-09-04

Drools 服务数据字典.xlsx

Drools 数据库建库说明文档 Drools 博客需要使用.

2019-09-04

drools.sql

Drools数据库sql文件 Drools 博客需要使用。

2019-09-04

Ajax简单功能示例

ajax异步传输的简单示例,很实用的代码, 对于初学者有很好的启发作用

2012-12-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除