- 博客(27)
- 资源 (17)
- 收藏
- 关注

原创 Guava RateLimiter算法原理及源码解读
目录前言原理RateLimiter原理SmoothBursty关键属性关键方法doSetRatereserveEarliestAvailableSmoothWarmingUpWarmingUp原理核心方法doSetRatestoredPermitsToWaitTime前言互联网高并发、高流量业务特性使大家都关注可保障系统稳定的...
2019-12-30 00:05:32
1777
2
原创 IT架构思想---架构抽象
1、抽象看成了一种解决复杂内容(这里翻译为问题可能更好)的技术2、抽象可以为每个架构领域中形式一致性定义和理解(本质是知识语境的说明感觉这个定义更多的是在讲抽象在架构中的作用,而不是在回答在架构层面什么是抽象。从这个定义来看,对Togaf还是挺失望的。继续深挖,这个定义就有意思很多,至少完全从架构视角去解释的。1、把问题域划分为更小问题域一种架构技术,抽象的本质是分层,从高阶模型转移(到详情模型。
2024-06-17 01:18:52
1059
2
原创 C4模型理解
谈C4前说两句架构设计,“纸上的不是架构,每个人脑子里的才是架构“。还有一句就是,“那些精妙的方案之所以落不了地,是因为设计上没有兼容人类的愚蠢”,即把思想问题转变成情绪问题。)认可这两句话本身是一种无奈,但架构师还是得手持架构原则去做好每一个架构方案,架构方案的落地都是艺术品。Software System 和Container:可以映射到应用组件(Code:ArchiMate中没有类似概念,可映射到应用功能 (Person:C4中代表系统使用人,可映射到业务参与者。
2022-09-18 22:18:44
864
原创 架构师杂谈
序言一路跌跌撞撞、摸爬滚打做软件架构已有七八载,从鸿蒙初开到明心见性,从罗汉渡己到菩萨渡人,一介凡尘终是轮转不息。当我们拿着Martin Fowler<Patterns Of Enterprise Application Architecture>时,"Microservice Architecture Style" 成为云时代天选之子,当我们秉烛夜读<Pattern-Oriented Software Architecture>时,"Just Enough So...
2022-02-01 15:38:45
2859
3
原创 Flink-基本使用总结
Flink:source+operator+sinkSource: SourceFunction:open CheckpointedFunction:initializeState、snapshotState 一般是source+checkpointFlinkKafkaConsumerBase:有四种启动模式:EARLIEST、LATEST、SPECIFIC_OFFSETS、GROUP_OFFSETS EARLIEST:从最早的offset开始读取 ...
2021-09-22 00:04:12
680
原创 Flink-Streaming之StreamPartitioner
在介绍流分区器前,为方便大家理解,我们解释下文中会用到的Flink几个关键名词概念。Parallelism:Flink中Parallelism表示并行度,假设source算子的parallelism=2,集群有2个TaskManager,每个TaskMananger有一个slot,那么source算子会同时在2个TaskManager中运行。Operator:一个算子,比如map算子就是OperatorUpStream:上游流DownStream:下游流文中的例子upStream为source算子.
2021-09-20 17:20:16
487
原创 Flink之SourceFuction
SourceFunction自定义数据源,通常使用RichParallelSourceFunciton作为父类,实现open、run、cancel三个方法 方法名 作用 open 初始化信息 run 一般使用死循环不断输出数据 cancel 销毁资源 package flink.sourcefunctionimport org.a
2020-10-03 00:22:01
2316
原创 Kafka常见问题解决思路
一个从kafka集成消费记录的客户端。KafkaConsumer透明处理的Kafka brokers的错误 ,并且自适配Topic-Partition在集成中的迁移。KafkaConsumer使用consumer group去平衡消费。KafkaConsumer维持必要的TCP连接从borkers获取数据,关闭失败会导致连接泄露。注意:KafkaConsumer不是线程安全的。<...
2020-03-29 13:24:38
500
原创 Kafka consumer group balance原理及源码解读(range/round robin/sticky)
目录序言Range算法示例Round Robin算法核心源码示例Sticky数据结构&算法数据结构算法示例核心方法代码步骤平衡判断序言kafka在0.11版本后提供了Range、Round Robin、Sticky三种consumer group partition分配策略,其中Range、Round Robin...
2020-01-20 01:20:55
1380
1
原创 kafka 事务
目录概述幂等事务2PC协议代码示例事务流程事务状态Server侧状态LSO概述kafka从0.11版本开始支持exactly-once语义。从此,流式处理框架数据准确性语义at-most-once、at-least-once、exactly-once全部支持。exactly-once语义的支持复杂度是最高的,单纯从语义角度上可理解为exactly...
2019-12-10 17:47:34
920
2
原创 企业IT架构转型之道 阿里巴巴中台战略思想与架构实战阅后总结
介绍了建设共享业务中台的架构目的、建设原则和思路、技术攻克点、运营能力、平台稳定能力及与上下游的协作、最终案例说明能力输出。这一切都是围绕支撑业务快速创新、试错的目标开展工作。...
2019-09-11 20:24:13
257
原创 Spark之任务调度
目录调度模式调度时机可调度任务任务级别Schedulable属性方法SchedulableBuilder排序算法FIFOSchedulingAlgorithm.comparatorFairSchedulingAlgorithm.comparator任务调度器PreferredLocationPending TaskTask调度器...
2019-08-21 01:01:26
665
1
原创 Spark-Speculative Task
背景: 分布式计算模型中,如Hadoop的MR,Spark的RDD,在任务处理过程中经常会出现某个Task执行很慢,拖慢了整个批次计算。为解决此问题,Hadoop提出来了Speculative Task方案。思路: 监控每个Task执行情况,对慢于平均进度(或者其它可以衡量进度的指标)的Task重新启动一个Task,结果集用率先完成的Task,并Kill另外没有执行完...
2019-08-05 17:21:57
555
原创 ElasticSearch 2.3 Master OOM
环境ESversion:2.3.0部署:Master Node+Data Node配置:3台 master为8C8G,data node为8C16G备注:此问题与JDK、操作系统无关,因此就没列详细信息问题描述ES集群每天动态创建500+索引,索引保留三天,三天后清掉。近期,Master出现两次OOM,且内存一直不会释放。查看dump文件如下: ...
2019-08-04 01:40:03
646
原创 基于Redis的延迟队列
业务背景7号10:00创建活动,7号0:00到7号10:00之间下单未支付的用户push催付,7号10:00后用户下单5分钟内没有支付,以PUSH的方式催付方案0-10点间数据可理解为离线数据,可通过创建一个ad-hoc查询任务,并吐出人群到给发送服务。下单后5分钟后没有支付以push催付,采用Redis的延迟列队方案如果为下单半个小时后催付,建议采用DB轮询方案。http...
2019-07-07 12:30:51
5383
原创 延迟调度总结
流式计算的调度复杂性在于需要考虑公平性和数据本地化。FIFO调度FIFO是一个简单的调度策略,适合用于作业并发少,或者无作业并发,且作业的map任务数量大,最好是大于等于集群的slot数量。FIFO调度中经典的两个问题head-of-line小作业,多作业并发的场景,量化数据本地化的公式为,为总的slot,为map任务需要的slotsticky slots大作业,多作业并发...
2019-07-05 15:53:13
2695
翻译 延迟调度(A Simple Technique for Achieving Locality and Fairness in Cluster Scheduling)
2. 背景Hadoop实现了类似Google的MapReduce。Hadoop运行在一个称为HDFS人分布式文件系统上,类似GFS每个数据块存储三份副本。用户提交的作业由一个map函数和一个reduce函数组成。Hadoop拆解每个job为多个task。首先,map任务处理每个输入的数据块(物理大小为64MB)并以键值对方式生成中间结果。每个输入数据块对应一个map任务。接下来,reduce ...
2019-07-04 20:06:51
1494
原创 延迟任务解决方案
业务场景举例: 用户下单5分钟内没有支付,以PUSH的方式催付解决方案:方案A:定时轮询当天全量的订单数据,找到符合要求的数据。方案特点:1.方案简单、不依赖过多的技术组件2.轮询效率过低,不适合大数据量业务场景方案B:--建议方案发送RocketMQ支持的延迟消息,Consumer侧消息延迟消息即可方案特点:1.方案简单,但依赖MQ中间件...
2019-05-22 00:38:30
1103
原创 Spark之Task状态与异常
目录Task状态Task 异常Task状态与异常Task状态TaskState对Task的生命周期定义了6个状态,每种状态会做不同的处理。Launching:Task已经从Driver侧发送给了Executor侧(被DAGScheduler调度了,Task是通过Endpoint发出,RDD和Stage由BroadCast广播)Running:Executor正在执...
2019-04-28 16:12:30
2009
原创 Spark之Task构建
我们已经知道DAGScheduler通过RDD算子构建DAG,再基于RDD算子之间的宽、窄依赖来切分所涉算子,最终得到一个Stage集合。每个Stage再基于Partitioner生成Task,Task集合包装成TaskSet(可能会管道化),最终TaskSet包装成TaskSetManager。注意: TaskSetManager实现了Schedulable的调度能力,这样把Task、S...
2019-04-28 15:35:04
439
原创 Spark之Task的定义
一个供Executor执行的可执行的逻辑单元,Spark目前提供了两类Task,分别为ShuffleMapTask和ResultTask。Job会由一个或者多个Stage,一个Spark Job基于Stage构建成逻辑执行计划和物理执行计划。如: Job A={S1,S2,S3} 由三个Stage构成,那么S1、S2会由ShuffleMapTasks构成,S3作为Job的最后一个Stage由多个R...
2019-04-28 15:23:49
3154
原创 Netty相关介绍
Spark使用Netty作为网络通住框架,顺带研究了下Netty,把今天成果总结下,后面持续更新。目录架构介绍Reactor模式内存模型架构介绍Netty由Core、Transport Services、Protocol Support三部分组成。Core主要由三部分组成,分别是Zero-Copy-Capable Rich Byte Buffer、Universal C...
2019-04-12 19:18:40
410
原创 Spark Streaming序言(流式计算概览)
上半部分已经系统性的介绍了RDD模型及实现,下半部分介绍Spark的D-Streams模型原理及D-Streams模型的实现框架Spark Streaming的具体实现以及在大规模流处理上的应用。文章中的原理章节有部分参考和借鉴了<An Architecture for Fast and General Data Processing on Large Clusters >、<G...
2019-04-11 20:17:54
490
原创 Spark-Listener(事件驱动的异步化编程框架)
事件驱动的异步化编程事件驱动的异步化编程EventListenerListenerBus事件驱动的异步化编程 我们以前经常看到基于事件的监控,基于事件的数据采集等等,Spark-Core内部的事件框架实现了基于事件的异步化编程模式。它的最大好处是可以提升应用程序对物理资源的充分利用,能最大限度的压榨物理资源,提升应用程序的处理效率。缺点比较明显,降低了应用程序的可读性。Spark的基于事件...
2019-04-11 14:59:45
1997
原创 TOGAF 9.1 译者序
Enterprise :一定复杂度的任何组织系统,指正式或非正式的各类社会组织,并不专指企业。Architecture:架构,架构是包含功能和行为的。 复杂组织的两个层面的能力:1. 需要满足外部需要的业务2. 业务要不仅能适应外部竞争与约束,还能最高效地运行。这两层的内容就是能力建设。综合论述:1. 组织管理的主客体复杂度不断提高2. 能力建设需求不断提高...
2018-10-27 08:42:48
213
原创 分布式理论-----Lease机制
概念 Lease本质是合同,参与方基于一个有期限的时间范围内对某项内容做出的一种承诺,在有效期内参与方均需要遵守承诺。 原文定义:A Lease is a contract that gives its holder specific rights over property for a limited period of time.角色 授权者、被授权者由来 Lease最经...
2018-07-10 11:45:02
457
原创 zookeeper源码分析一
interface Watcher 定义了client 和 server之间5种事件类型,6个状态。6个状态:Disconnected(0),SyncConnected(3),AuthFailed(4),ConnectedReadOnly(5),SaslAuthenticated(6);Expired(-112)5个事件类型:None(-1),No
2016-04-26 00:13:53
153
分布式系统原理与范型
2015-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人