封面图

一名Java开发的Rust学习笔记

3 月 18 日
阅读 14 分钟
284
封面图

掰扯掰扯需求分析:从工程到生活中的4个case

3 月 4 日
阅读 3 分钟
174
需求分析是工程师的必备技能之一。我们常说一些架构师多少多少牛逼,系统设计的多好多好——而系统设计的底座正是需求分析。基于详细的需求分析底座加上已知的业界理论上限,才能让我们更好得去设计好一个系统。本文笔者想基于程序设计以及生活中的例子,聊一聊需求分析。

读Paimon源码聊设计:引子

2 月 26 日
阅读 3 分钟
643
一般的数据湖都会设计成开放通用的,即不和特定的存储、计算引擎(比如Spark和Flink)绑定。所以数据湖的定位是在计算引擎之下,又在存储之上,将其称之为table format。需要强调的是数据湖一般是面向OLAP场景的,所以一般存储会选择分布式文件系统。现在OLAP底层存储支持对象存储基本算是快成业界共识了,这玩意儿挺划...

封面图

读TiDB源码聊设计:浅析HTAP的SQL优化器

2 月 18 日
阅读 28 分钟
622
SELECT id, name FROM person WHERE age >= 18 or height > 180 limit 100;:从条件上看,我们看到条件其实是二选一的: age >= 18 or height > 180。基于这种情况,我们肯定会去选择有索引的数据,如果都有索引or都没有,那么肯定选择扫描行数最少的数据。如果有一些算子在里面的话,则额外需要考虑数据的...
封面图

读TiDB源码聊设计:引子

1 月 29 日
阅读 5 分钟
291
TiDB是个非常好用的开源数据库系统。我在生产中一直有接触到TiDB,也是踩了一些坑,故而陆陆续续读了很多关于它的文档,慢慢被这个系统的设计吸引到,因此我决定深入它的内核去读源码,并将一些有意思的设计剖出来聊聊。所以有了今天这篇引子。
封面图

2023年总结:大幅跑赢A股、忙里偷“学”

1 月 6 日
阅读 2 分钟
184
今年的A股异常惨烈,Q1润了一下,剩余的日子都在吃好果子。我今年的收益率是-1.7%。对比其他的宽指今年沪深300 -11.3%,中证500 -7.4%,中证2000 +0.1%,恒生-13.82%,几乎是跑赢了大多数指数,因此我给自己打到80分,今年我的仓位总体控制较好,而随着目前A股的性价比越来越高,我开始大量买入。我坚信从A股现在的情况...
封面图

梅开二度:我在VS Code上又写了一个Hive&Spark SQL的插件

2023-11-20
阅读 2 分钟
823
在几个月前,我在公司内部推广了我写的FlinkSQL插件,收到了较好的反馈。具体介绍可以见我之前写的博客——《想在DataGrip里写SQL般丝滑的写FlinkSQL?安装它就完事儿了》。

笔记:写Flink SQL Helper时学到的一些姿势

2023-08-23
阅读 4 分钟
4.3k
开发VS Code,可以选择使用了TypeScript or JavaScript。虽然我没学过TypeScript,但是我还是选择了它。我想起大学工作室的时候,身边有小伙伴就特别喜欢JavaScript这种写起来很快的语言,但是我却更喜欢Java这种语言。因为有些时候我根本不知道JavaScript里的一些变量的值到底是什么。
封面图

想在DataGrip里写SQL般丝滑的写FlinkSQL?安装它就完事儿了

2023-08-08
阅读 3 分钟
1.1k
“FlinkSQL对于大数据开发者们来说是一个很常见的API,它的存在巨幅提升了开发效率,使开发者不用再面向底层细节,可以更加专注于自己的业务。”我在刚开始写FlinkSQL时,留下了这样的印象。

一名Java开发的Go语言学习笔记(一)

2023-05-15
阅读 8 分钟
1.3k
版本日期备注1.02023.5.15文章首发1.12023.5.28增加代码示例1.22023.5.30改善内容1.32023.11.15增加元编程部分的讨论本文首发于泊浮目的掘金:[链接]0. 概要最近因为业务需要在学Go语言,虽然之前也用过别的语言,但主力语言一直是Java。在这里也想主要想用Java做对比,写几篇笔记。这篇主要是讲语言本身及较为表面的一些...
封面图

面向价值编程:高ROI工程之旅

2023-03-17
阅读 3 分钟
1.4k
在前面的系列文章中,我提到了相关的理论,实操,以及一段工作经历。在这篇文章中,我会用我自己和团队的经历来作为例子,诠释面向价值编程,并通过两个例子说明高ROI工程的打造过程。

2022年总结:输入年

2023-01-03
阅读 2 分钟
1.7k
又是一年,感觉这一年有许多知识输入了自己的大脑,看了眼自己年初给自己定的目标,还是差了许多——距离四级工程师仍有一段距离。不过我的身边已经有了两个可以参考的人,一个是生活圈里的,一个是共事的同事——我们从事的方向也一致,我可以很明显看到自己与他们的差距——有了具体的方向,我便可以在这条路上走更少的弯路。
封面图

新冠:感染、现象与所想

2022-12-24
阅读 1 分钟
2k
12.18 我自己症状出现:早上起来发现咽喉有点疼,期间无任何症状。到了晚上8点左右开始发热,意识到不对。睡前开始腰部、大腿部分疼痛,明显畏寒。

面向价值编程:低边际成本的自动化测试

2022-11-19
阅读 2 分钟
2.2k
17年刚加入ZStack时,ZStack正在经历从能用到好用的阶段。这个阶段会有更多的需求,对质量的要求也会更高。举个例子,toB的产品如果在一个行业里拓展开,一般都会想办法拿下龙头企业。大家都是这么想的,你会面临更多的竞争对手。抛去其他层面,单从技术层面来说,技术人员不仅需要提供相应的功能满足客户需求,还需要考...

面向价值编程:Why, What, How

2022-11-12
阅读 2 分钟
2k
从2021年,各个大厂的反内卷,再到2022年的裁员,大多数人都意识到互联网行业进入了寒冬。其实并非这个行业如此,其他的行业也正在严寒中苟活。宏观原因其实显然易见,但这并非本文讨论的主题。在这里,更想和大家讨论的是如何在这个冬天苟活下来。

面向价值编程:那些年在Coding质量上走过的路

2022-08-10
阅读 3 分钟
2.5k
最近接了几个项目,代码质量参差不齐。本想按照以往的实践建议每个patch都做review,但往往dead line当头。我会想,我如果对这次patch做了review、以及长期做review能给业务带来什么价值。接着本文,我还想讨论其他技巧在coding中也能够明显带来价值。
封面图

笔记:追随云原生的Java

2022-07-18
阅读 5 分钟
2.9k
前阵子在B站刷到了周志明博士的视频,主题是云原生时代下java,主要内容是云原生时代下的挑战与Java社区的对策。这个视频我在两年前看到过,当时也是印象深刻。现在笔者也是想和大家一起看看相关项目的推进以及一些细节。这篇笔记会大量参考视频中提到的内容,如果读者看过相关视频,可以跳过这篇笔记。
封面图

读Flink源码谈设计:流批一体的实现与现状

2022-03-17
阅读 2 分钟
6.5k
由于早期的流处理框架并不支持Exactly Once,导致流处理的数据并不精准。在这个基础上,一旦数据出现问题,则要导致大量的数据重放——这是因为事件往往是有时序要求的。因此,Lambda往往会通过流处理框架获取不是特别精准的结果,同时也会定时运行批处理程序,来获取更精准的结果——当更精准的结果出来时,我们就不需要前...
封面图

读Flink源码谈设计:FileSystemConnector中的整洁架构

2022-03-09
阅读 6 分钟
6.2k
前阵子在生产上碰到了一个诡异现象:全量作业无法正常进行,日志中充斥着java.util.concurrent.TimeoutException: Heartbeat of TaskManager with id container xxxx(HOSTNAME:PORT) timed out的报错。

读Flink源码谈设计:Exactly Once

2022-02-02
阅读 4 分钟
4.5k
将Flink应用至生产已有一段时间,刚上生产的时候有幸排查过因数据倾斜引起的Checkpoint超时问题——当时简单的了解了相关机制,最近正好在读Flink源码,不如趁这个机会搞清楚。
封面图

读Flink源码谈设计:图的抽象与分层

2022-01-26
阅读 15 分钟
3.4k
前阵子组里的小伙伴问我“为什么Flink从我们的代码到真正可执行的状态,要经过这么多个graph转换?这样做有什么好处嘛?”我早期看到这里的设计时的确有过相同的疑惑,当时由于手里还在看别的东西,查阅过一些资料后就翻页了。如今又碰到了这样的问题,不妨就在这篇文章中好好搞清楚。

2021年总结:迈出一步、买房

2022-01-07
阅读 2 分钟
3k
写这篇文章前,我翻看了一下去年的总结。发现“人终将一死”这个想法在那时便植入我的脑海里。每当早上醒来,睁眼看到太阳升起,我便会想到这个事——这倒不会让我产生负能量,我只是会想这辈子能做些什么,变成什么样的人。这意味着我很难在一些简单的事中获得满足或沉溺于一些唾手可得的欲望之中。
封面图

读Flink源码谈设计:有效管理内存之道

2021-12-20
阅读 9 分钟
5k
在最初接触到Flink时,是来自于业界里一些头部玩家的分享——大家会用其来处理海量数据。在这种场景下,如何避免JVM GC带来StopTheWorld带来的副作用这样的问题一直盘绕在我心头。直到用了Flink以后,阅读了相关的源码(以1.14.0为基准),终于有了一些答案。在这篇文章里也是会分享给大家。
封面图

浅谈时序数据库内核:如何用单机扛住亿级数据写入

2021-10-19
阅读 4 分钟
4.4k
最近负责了产品中一部分的监控事宜。我想到时序数据库的对于RT和IOPS的要求应该很高,因此想看看它内部是怎么实现的——会不会和我认识的Kafka、HBase很像。

读Flink源码谈设计:Metric

2021-10-08
阅读 4 分钟
4.1k
前阵子笔者涉及了些许监控相关的开发工作,在开发过程中也碰到过些许问题,便翻读了Flink相关部分的代码,在读代码的过程中发现了一些好的设计,因此也是写成文章整理上来。
封面图

谈谈代码:DDD从入门到完全入门

2021-08-22
阅读 3 分钟
5.5k
之前的DDD文章——谈谈代码:降低复杂度,从放弃三层架构到DDD入门,通篇下来像 是简单的讲了一些概念,然后快速的实战一下——很多同学反馈感觉就是入门了,但没有完全入门,因此我们再加一篇。
封面图

PushGateway与Flink实战之坑:漫谈监控模型中的拉与推

2021-08-14
阅读 3 分钟
6k
但这有一个问题,需要分配端口。之前我们团队用了很多麻烦的实现:分布式锁、多份状态存储等...但仍然避免不了端口泄漏、浪费的问题(拓扑高可用机制会导致它在不同的机器间偏移,那么之前分配的某机器端口就无用了)。尽管我们也可以去监控拓扑的生命周期,但这绝非易事——在较大的场景中,k级的拓扑是很正常的,然而要...
封面图

谈谈代码:降低复杂度,从放弃三层架构到DDD入门

2021-08-02
阅读 6 分钟
4k
本文首发于泊浮目的简书:[链接]版本日期备注1.02021.8.1文章首发1.12021.8.3改进部分描述1.前言最近我发现团队某项目的复杂度越来越高(典型的三层架构),具体表现为:代码可读性较差:各个服务之间调用复杂,流程不清晰修改某服务业务代码导致大量无关服务的测试用例失败,单个功能开发者很难迅速定位相关问题测试用例...

大数据学习笔记2:现代数据湖之Iceberg

2021-06-20
阅读 2 分钟
4.7k
本文首发于泊浮目的简书:[链接]版本日期备注1.02021.6.20文章首发最近Iceberg有点小火,在这里也是根据自己看到的资料做个笔记输出一下。数据湖的定义就不说了,不了解的小伙伴可以看我之前做的笔记大数据学习笔记1:数仓、数据湖、数据中台。1. 数据湖发展现状从广义上来说数据湖系统主要包括数据湖村处和数据湖分析现...

大数据学习笔记1:数仓、数据湖、数据中台

2021-05-09
阅读 9 分钟
7.3k
商业智能(Business Intelligence)诞生在上个世纪 90 年代,它是将企业已有的数据转化为知识,帮助企业做出经营分析决策。

大数据学习笔记0:大数据基本框架

2021-05-09
阅读 2 分钟
3.5k
大数据从数据源开始,经过分析、挖掘到最终获得价值一般需要经过6个主要环节,包括数据收集、数据存储、资源管理与服务协调、计算引擎、数据分析和数据可视化,技术体系如图所示。每个环节都面临不同程度的技术挑战。

技巧:遵循Clean Architecture写好白盒测试

2020-09-13
阅读 11 分钟
2.2k
本文首发于泊浮目的简书:[链接]版本日期备注1.02020.9.13文章首发1.12020.11.8优化对于第一个方案的措辞1.22021.1.17优化小结部分1.32021.2.3修改标题从利用Clean Architecture写好白盒测试 -> 遵循Clean Architecture写好白盒测试1.42021.5.21修改标题从遵循Clean Architecture写好白盒测试 -> 技巧:遵循Clean A...

深入浅出Zookeeper(七):Leader选举

2020-06-14
阅读 26 分钟
6.9k
为什么是最简单的方式呢?我们想象一下,当我们写数据到Leader时,Leader写入自己的一份数据后,可能会做副本到Follower,那么拷贝的数量、及所在的位置都由该Leader来控制。但如果是多Leader调度,就要涉及到数据分区,请求负载均衡等问题了。

深入浅出Zookeeper(六):客户端的请求在服务器中经历了什么

2020-05-23
阅读 28 分钟
3.8k
当我们向zk发出一个数据更新请求时,这个请求的处理流程是什么样的?zk又是使用了什么共识算法来保证一致性呢?带着这些问题,我们进入今天的正文。

深入浅出Zookeeper(五):BadVersionException到底是怎么一回事

2020-04-19
阅读 3 分钟
3.2k
最近在开发时偶尔会观测到zk报出BadVersionException,后在搜索引起上得知了是乐观锁相关的问题,很快就解决了问题。不过学而不思则罔:无论是单体应用还是分布式系统,在运行过程中总要有一种机制来保证数据排他性。接下来,我们就来看看zk是如何实现这种机制的。