首页
学习
活动
专区
工具
TVP
发布

狗哥的专栏

专栏作者
65
文章
8326
阅读量
15
订阅数
思考:为啥Go里没有类似MyBatis支持XML配置SQL的框架
前阵子团队里有人提到了类似的问题,我自己先是顺手找了一圈,结果只找到了:github.com/xormplus/xo…。这个框架是基于xorm做的加强,但是在2020年就不维护了。显得很奇怪,明明是唯一一个支持了XML配置SQL的库,后面竟然凉了。
泊浮目
2024-04-23
1170
一名Java开发的Rust学习笔记
笔者的主力语言是Java,近三年Kotlin、Groovy、Go、TypeScript写得比较多。早年间还写过一些Python和JavaScript。总得来说落地在生产中的语言都是应用级语言,对于系统编程级语言接触不多。但这不妨碍我写下这么一篇笔记,说不定也有一些常年在应用层的同学想领略一下Rust的风采呢。
泊浮目
2024-03-19
1170
掰扯掰扯需求分析:从工程到生活中的4个case
上面这些问题其实是围绕着技术的点去询问的。和真实的业务场景还是有一点的距离,这点距离就是在业务需求到技术实现的分析上。 所以这个时候就要和面试官做一个探讨:具体是什么样的场景,导100个G的数据到线上?或者说这100G的数据导到线上的用途是什么? 举个例子,商家侧有一个报表,里面有个指标的口径要变更,历史数据都要刷。那么就需要继续探讨:
泊浮目
2024-03-05
700
读Paimon源码聊设计:引子
这两个问题直接导致无法降本。从这点上来说,Iceberg是自己维护了一套元数据,这块网上非常的全,就不再赘述了,google上搜iceberg file layout一大把。 Hive还有其他的问题,如:
泊浮目
2024-02-27
1840
深入浅出Zookeeper源码(二):存储技术
在上篇文章中,我们简单提到了Zookeeper的几个核心点。在这篇文章中,我们就来探索其存储技术。在开始前,读者可以考虑思考下列问题:
泊浮目
2024-01-09
980
深入浅出Zookeeper源码(三):会话管理
我们知道zookeeper是一个分布式协同系统。在一个大型的分布式系统中,必然会有大量的client来连接zookeeper。那么zookeeper是如何管理这些session的生命周期呢?带着这个问题,我们进入今天的正文。
泊浮目
2024-01-09
1140
深入浅出Zookeeper源码(五):BadVersionException到底是怎么一回事
最近在开发时偶尔会观测到zk报出BadVersionException,后在搜索引起上得知了是乐观锁相关的问题,很快就解决了问题。不过学而不思则罔:无论是单体应用还是分布式系统,在运行过程中总要有一种机制来保证数据排他性。接下来,我们就来看看zk是如何实现这种机制的。
泊浮目
2024-01-09
1060
【ZStack】11.网络模型1-L2和L3网络
ZStack将网络模型抽象为L2和L3网络。L2网络提供一种二层网络隔离的方式,而L3网络主要和OSI七层模型中第4层~第7层网络服务相对应。我们的想法是使用管理员熟悉的术语和概念,来形容ZStack的网络模型,使得管理员可以方便快捷的创建网络拓扑。
泊浮目
2024-01-09
1420
【ZStack】3.ZStack的伸缩性秘密武器:无锁架构
在IaaS(Infrastructure as a Service,即基础设施即服务)软件里许多任务要顺序的执行;例如,当一个起动虚拟机的任务正在运行时,一个结束些虚拟机的任务则必有等待之前的开始任务结束才行。另一方面,一些任务以需要并发的同时运行;例如,在同一主机上20个创建虚拟机的任务能同时运行。同步和并行在一个分布式系统中是不好控的并且常常需要一个同步软件。针对这个挑战,ZStack提供了一个基于队列的无锁架构,允许任务很容易的来控制它们的并行级别,从一个同步到N个并行都行。
泊浮目
2024-01-09
1210
【ZStack】5.通用插件系统
当前IaaS软件更像云控制器软件,要成为一个完整的云解决方案还缺少很多特性(features)。作为一个正在发展中的技术,预测一个完整的解决方案的必备的所有特性是非常困难的,所以一个IaaS软件不可能在一开始就完成它所有的特性。基于以上事实,一个IaaS软件的架构必须有能力,在添加新特性的同时保持核心结构稳定。ZStack的通用插件系统,使得特性可以像插件一样实现(在线程内或在线程外),这样不只能使ZStack的功能得到了拓展,也可以注入业务逻辑内部去改变默认的行为。
泊浮目
2024-01-09
1280
ZStack源码剖析之设计模式鉴赏——策略模式|Java 开发实战
无论什么程序,其目的都是解决问题。而为了解决问题,我们又需要编写特定的算法。使用Strategy模式可以整体地替换算法的实现部分。能够整体地替换算法,能让我们轻松地以不同的算法去解决一个问题,这种模式就是Strategy模式。
泊浮目
2024-01-09
690
大数据学习笔记0:大数据基本框架
Iaas、K8S、Omega都属于这一层。 计算引擎层 计算引擎层是大数据技术中最活跃的一层,直到今天,仍不断有新的计算引擎被提出。 总体上讲,可按照对时间性能的要求,将计算引擎分为三类: ❑ 批处理:该类计算引擎对时间要求最低,一般处理时间为分钟到小时级别,甚至天级别,它追求的是高吞吐率,即单位时间内处理的数据量尽可能大,典型的应用有搜索引擎构建索引、批量数据分析等。 ❑ 交互式处理:该类计算引擎对时间要求比较高,一般要求处理时间为秒级别,这类系统需要跟人进行交互,因此会提供类SQL的语言便于用户使用,典型的应用有数据查询、参数化报表生成等。 ❑ 实时处理:该类计算引擎对时间要求最高,一般处理延迟在秒级以内,典型的应用有广告系统、舆情监测等。 数据分析层 数据分析层直接跟用户应用程序对接,为其提供易用的数据处理工具。为了让用户分析数据更加容易,计算引擎会提供多样化的工具,包括应用程序API、类SQL查询语言、数据挖掘SDK等。 在解决实际问题时,数据科学家往往需根据应用的特点,从数据分析层选择合适的工具,大部分情况下,可能会结合使用多种工具,典型的使用模式是:首先使用批处理框架对原始海量数据进行分析,产生较小规模的数据集,在此基础上,再使用交互式处理工具对该数据集进行快速查询,获取最终结果。 数据可视化层 数据可视化层是直接面向用户展示结果的一层,由于该层直接对接用户,是展示大数据价值的“门户”,因此数据可视化是极具意义的。考虑到大数据具有容量大、结构复杂和维度多等特点,对大数据进行可视化是极具挑战性的。
泊浮目
2024-01-09
1360
深入浅出Zookeeper源码(四):Watch实现剖析
用过zookeeper的同学都知道watch是一个非常好用的机制,今天我们就来看看它的实现原理。
泊浮目
2024-01-09
1200
【ZStack】2.ZStack的伸缩性秘密武器:无状态服务
每个ZStack服务都是无状态的,让服务高可用以及横向拓展(scale out)可以很简单,只需要启动剩余的服务实例,然后进行负载均衡即可。此外,ZStack将所有的服务打包到名为管理节点(management node)的单个进程,它让部署和管理变得超级简单。
泊浮目
2024-01-09
970
【ZStack】6.工作流引擎
在IaaS软件中的任务通常有很长的执行路径,一个错误可能发生在任意一个给定的步骤。为了保持系统的完整性,一个IaaS软件必须提供一套机制用于回滚先前的操作步骤。通过一个工作流引擎,ZStack的每一个步骤,包裹在独立的工作流中,可以在出错的时候回滚。此外,通过在配置文件中组装工作流的方式,关键的执行路径可以被配置,这使得架构的耦合度进一步降低。
泊浮目
2024-01-09
1170
【ZStack】15.自动化测试系统2——系统测试
ZStack的系统测试系统在真实的硬件环境中运行测试用例;像集成测试一样,这个系统测试也是全自动的,而且覆盖的层面包括:功能性测试、压力测试、性能测试。
泊浮目
2024-01-09
1220
大数据学习笔记2:现代数据湖之Iceberg
一些具体的对比可以看这张图: 5. Iceberg 我们先看看Iceberg的官网是如何介绍它的: Apache Iceberg is an open table format for huge analytic datasets. Iceberg adds tables to Trino and Spark that use a high-performance format that works just like a SQL table. 我的理解是,Iceberg以表的形式来组织底层数据,并对上面提供了高性能的表级别计算能力。 它的核心思想就是在时间轴上跟踪表的所有变化:
泊浮目
2024-01-09
2050
谈谈代码:降低复杂度,从放弃三层架构到DDD入门
基于这些情况,我开始寻找降低复杂度的方案,于是就有了这篇再谈DDD的文章。 1.1 具体问题 1.1.1 宏观角度 从宏观来说,软件架构模式演进经历了三个阶段。
泊浮目
2024-01-09
1930
PushGateway与Flink实战之坑:漫谈监控模型中的拉与推
最近在为流处理组件接入监控,用了PushGateway(下文称为PGW),结果踩了不少坑,上来分享一下。
泊浮目
2024-01-09
1880
谈谈代码:DDD从入门到完全入门
DDD主要在技术密集型应用里有较大的作用,尤其是当该应用进入服务化、平台化时,可以在:“服务拆分”、“服务治理”、“领域收敛”、“领域自治”发挥。在中台化中的“数据打通”也有一定的作用。 而微观来说,DDD可以有效减少代码的冗余程度以及需求响应的速度。 5. DDD实践中要注意的 5.1 使用IOC来保证层次之间的隔离 经常有小伙伴问我,分层之间该怎么做?因为分层的边界没做好,代码会再度耦合再一起。对此我给出的答案是参考inversion of control。其常见实现有:
泊浮目
2024-01-09
1180
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档