PolarDB 存算分离

背景 随着互联网业务规模不断扩大,传统关系型数据库架构逐渐暴露出一些瓶颈,例如扩展能力不足、存储成本高、读写压力集中等问题。为了应对这些挑战,云厂商开始设计一种新的数据库架构模式:存算分离(Storage-Compute Decoupling)。 PolarDB 是阿里云推出的一款云原生数据库,其核心设计理念之一就是 计算层与存储层解耦。这种架构使数据库具备更强的弹性扩展能力和更高的资源利用率。 () 本文将从架构角度分析 PolarDB 的存算分离设计,并与 AWS Aurora 以及传统 MySQL 架构进行对比。 传统 MySQL 架构的问题 在传统 MySQL 架构中,数据库通常运行在单个服务器上: MySQL Server ├── CPU ├── Memory └── Local Disk 计算和存储都在同一台机器上。 这种架构在早期互联网时代已经足够,但随着业务规模扩大,会出现几个明显问题: 1 存储扩展困难 数据库数据通常存储在本地磁盘中,当数据量增长时,只能通过: * 升级磁盘 * 更换更大的机器 这种方式扩展
6 min read

ETCD 探索

在分布式系统中,经常会遇到这样的问题: * 服务节点需要共享配置 * 系统需要做服务发现 * 分布式锁需要一个协调中心 * 集群需要一个一致性的状态存储 这些问题,本质上都需要一个 可靠的分布式协调系统。 而在现代云原生体系中,最常用的组件就是 etcd。 例如: * Kubernetes * CoreDNS * service mesh * 分布式配置中心 这些系统的底层都依赖 etcd。 etcd 是什么 简单来说: etcd 就是一个高可靠的分布式 Key-Value 数据库。 但它和普通数据库最大的区别是: 它是为“分布式协调”而设计的。 它的主要特点有: * 强一致(Strong Consistency) * 支持分布式集群 * 提供 Watch 监听机制 * 支持事务 * 提供租约(Lease)机制 很多分布式系统都会用 etcd 做: * 服务注册中心 * 配置中心 * 分布式锁 * Leader
2 min read

运维历史演进与 K8S 之后趋势

背景 过去三十多年,服务器运维其实一直在做一件事:让人越来越少地去“手动管机器”。 早期的运维非常原始。服务器买回来要自己上架、装系统、配置网络、改配置文件。机器出了问题,就 SSH 登录上去排查,很多时候靠的是经验和记忆。那时候的运维,本质上就是“人盯机器”。 但当服务器数量越来越多,这种方式很快就撑不住了。 问题主要有两个:重复劳动和配置混乱。 重复劳动很好理解,比如同一个服务要部署到几十台机器,每次都要手动执行一堆命令;规模一大,运维每天都在做这些重复的事情。在 SRE 体系里,这类工作有一个专门的名字,叫 toil (可以自动化、重复、但长期价值不高的工作)。 另一个问题叫 配置漂移。今天在一台机器上临时改了个参数,半年后没人记得;不同机器的配置慢慢变得不一样,系统也越来越难维护。 为了解决这些问题,运维开始走向自动化。 最早是各种 Shell 脚本,后来发展成 配置管理工具(比如
6 min read

阿里云实时数仓

前言 使用阿里云现有的产品生态体系,可以解决企业自建集群复杂,难维护,部署成本高的问题。基于这些情况我们可以使用目前阿里云已有的产品进行开通,来满足企业业务需求。 目前面临痛点 1、底层数据库无法承载海量数据,根据后续企业发展,10T,100T,以及PB,EB数据量无法承载,以及无法支撑快速查询响应,数据分析以及数据挖掘等工作。 2、实时计算性能存在一定不足,需要通过可靠计算引擎进行毫秒级实时计算,并且数据质量可靠,可控,可遥测。 3、数据模型调整效率不够快速,不能够非常灵活的调整数据模型结构,快速的提供业务场景报表需求。 应用场景 * 基于Flink和规则引擎的实时风控解决方案 * 基于实时计算(Flink)与高斯模型构建实时异常检测系统 * 基于实时计算(Flink)打造一个简单的实时推荐系统 实时数仓 总体数据开发流程 数据拉取->数据缓冲->实时计算->下沉落库 组件选型 Flink 阿里云实时计算 Flink 版阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统,由Apache Fl
8 min read

SonarQube

前言 SonarQube 是一个用于 代码质量管理 的开源平台,可以帮助开发者在开发过程中持续检测代码中的潜在问题。 通过静态代码分析、代码覆盖率统计以及多维度的质量指标,SonarQube 能够在代码进入生产环境之前发现缺陷、安全漏洞和性能隐患,从而提升系统的整体稳定性并降低后期维护成本。 在团队协作和持续集成环境中,SonarQube 通常作为 代码质量守门人(Quality Gate) 使用,使代码质量检查自动化、标准化。 提高代码质量 SonarQube 可以自动检测代码中的潜在问题,例如: * 代码缺陷(Bug) * 安全漏洞(Security Vulnerabilities) * 代码异味(Code Smell) * 潜在性能问题 提升代码可维护性 SonarQube 会对代码进行多维度分析,例如: * 复杂度 * 重复代码 * 测试覆盖率 * 技术债(Technical Debt) 通过这些指标,开发者可以更直观地了解系统的健康状态,并针对性地进行重构和优化。 开发者可以在代码发布前就发现并修复这些问题,从而减少
3 min read

Canal 组件

前言 Canal 是阿里巴巴开源的一款 基于 MySQL Binlog 的数据实时订阅与消费组件,常用于实现数据库变更数据捕获(CDC,Change Data Capture)。 在实际业务场景中,数据库中的数据变更往往不仅仅用于业务读写,还可能需要同步到其他系统,例如: * 实时数据同步(数据库 → 数据仓库) * 数据变更推送到 MQ(Kafka / RocketMQ) * 构建实时数据分析或监控系统 * 搜索引擎数据同步(如 Elasticsearch) 为了实现这些能力,Canal 通过 模拟 MySQL Slave 的方式订阅 Binlog 日志,解析出数据库的增删改操作,并将这些变更数据实时推送给下游消费系统,从而实现数据的准实时同步。 目前市面上常见的 CDC 组件主要包括: * Canal * Debezium * Flink CDC Canal 目前只支持MySQL数据库。5.x
2 min read

HTTP 协议发展史

HTTP 是浏览器与服务端之间最主要的通信协议,HTTP 是应用层协议(7层),应用层产生的数据会通过传输层协议作为载体来传输到互联网上的其他主机中,而其中的载体就是 TCP 协议(3.0使用UDP),基于 TCP 协议进行连接,然后传输对应内容信息。 20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,这被认为是互联网的起源。70 年代,研究人员基于对 ARPA 网的实践和思考,发明出了著名的 TCP/IP 协议。该协议具有良好的分层结构和稳定的性能,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了网络。 1989 年,蒂姆伯纳斯-李博士发表了一篇论文,提出了在互联网上构建超链接文档系统的构想。在篇文章中他确立了三项关键技术:URI、HTML、HTTP。 基于这三项技术,
14 min read

隐藏性能杀手之 '伪共享'

随着CPU工艺的发展,目前的高端CPU已经存在几十核心百多个线程,并为CPU设计出了一二三级缓存。CPU的核心有了这些缓存就可以加快数据的处理,从而减少访问内存的频率,这样CPU的计算性能可以进一步得到提高。 CPU的缓存结构以及内存硬盘: 众所周知CPU去访问一次内存所需要的开销是非常之大的,想要获取一次磁盘上的数据更是需要等待较长的时间,虽然目前已经有很多解决方案如 mmap 技术来缓解这样的情况,但总体来说CPU的计算性能是整个计算机结构中的天花板,其他硬件从数据传输速度层面对比起来就显得拖后腿,那么我们来看一下具体CPU访问每个硬件的延迟: 存储器 存储介质 介质成本(美元) 随机访问延迟 L1 cache SRAM 7 1ns L2 cache SRAM 7 4ns Memory DRAM 0.015 100ns Disk SSD(NAND) 0.0004 150us Disk HHD 0.00004 10ms 可以得出外部存储设备容量越大成本越小,存储数据更多,但访问速度更慢,访问速度越快的设备造价更高,
6 min read

StarVCenter 私有云部署

一套国产超融合云平台IaaS软件,StarVCenter还提供了超融合技术,将计算、存储和网络等资源整合到一个硬件节点中,形成一个完整的虚拟化基础设施。这种超融合架构可以提高资源利用率,减少部署和维护成本,同时还可以提供更高的性能和可靠性。 官网文档:StarVCenter帮助文档 · StarVCenter帮助文档 (starvcs.com) StarVCenter的超融合技术包括以下特点: 1. 硬件节点整合:将计算、存储和网络等资源整合到一个硬件节点中,形成一个完整的虚拟化基础设施。 2. 简化部署:通过自动化部署和配置,简化了整个虚拟化环境的部署和维护。 3. 高性能和可靠性:通过整合计算、存储和网络等资源,提高了系统的性能和可靠性。 4. 灵活扩展:支持在线扩容和缩容,可以根据业务需要灵活调整资源。 总之,StarVCenter的超融合技术可以帮助用户实现高效的虚拟化基础设施部署和管理,提高资源利用率和降低成本。 StarVCenter追求极致好用,社区免费使用(不超过20台物理服务器)、社区免费技术支持、永久免费升级。 除了基本的虚拟化管理功能,Star
2 min read

7层网络协议

1、物理层: 解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。 它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 2、数据链路层: 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。 3、网络层: 计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。 该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。 4、传输层:
3 min read

Zookeeper 集群搭建

部署环境 操作系统 Debian 11.5.0 运行环境 OpenJDK-1.8.0_332 64-Bit Server VM Zookeeper版本:3.8.0 官方介绍 Zookeeper官方文档地址(下载的zip压缩包中\docs目录也自带文档):ZooKeeper: Because Coordinating Distributed Systems is a Zoo (apache.org) ZooKeeper 是一种用于分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以基于这些基元来实现更高级别的同步、配置维护以及组和命名服务。它被设计为易于编程,并使用根据文件系统熟悉的目录树结构设置样式的数据模型。它以 Java 运行,并具有 Java 和 C 的绑定。 ZooKeeper 的实施非常重视高性能、高可用性、
11 min read

关于Serverless架构

背景 Serverless(无服务器架构)近年来逐渐成为云计算领域的一个热门方向。它的核心理念是:开发者无需关心服务器的部署、运维和扩容,只需要专注于业务逻辑的开发。 在传统架构中,一个系统上线通常需要准备服务器、部署环境、配置网络、监控资源以及处理扩容问题,这些工作都需要额外的运维成本。而在 Serverless 架构中,这些基础设施全部由云厂商负责管理,开发者只需要编写函数代码并部署即可运行。 Serverless上云 Serverless 通常以 云函数(Function as a Service,FaaS) 的形式提供。例如阿里云函数计算(FC)、AWS Lambda、腾讯云 SCF 等。开发者只需要上传代码,当有请求触发时,平台会自动运行函数,并根据实际的调用次数和运行时间进行计费。 这种模式带来的最大变化是:应用可以按需运行,而不是长期占用服务器资源。 例如在一些业务场景中: * 定时任务处理 * Webhook 事件触发 * 图片处理 * 数据转换 这些任务并不需要持续运行的服务器,
4 min read

Linux 系统不同发行版对比

linux系统有着不同的发行版本,不同的组织对其自己的发行版进行维护。此次笔记记录我认知的部分发行版的区别。 1、Debian 是目前我最喜欢使用的发行版,它的10版本非常稳定,并且系统占用非常小。是目前我在生产环境的选择。 Debian -- The Universal Operating SystemThe Universal Operating System [https://www.debian.org/]2、CentOS 是 Red Hat 从商业收费操作系统的分支版本,在商业操作系统上进行了免费。功能以及稳定性目前也是非常不错,但肯定在某些地方有阉割。毕竟人家有一个收费的系统。并且 CentOS 目前已经停止了维护,原作者 Gregory Kurtzer 也启动了新项目的 Rocky Linux 操作系统。 The CentOS Project [https://www.centos.org/]3、
2 min read

Linux 目录结构分析

/bin:存放着常用的指令和二进制可程序。 /boot:存放启动Linux系统的内核文件,包括连接文件和镜像文件。 /dev:Device(设备)的缩写,是 Linux 系统目前连接的外部设备,外部设备的访问和文件访问的方式一样。 /etc:专用于存放系统的配置文件和子目录列表。 /home:用户文件夹,每个系统账号都会创建一个不同的文件夹名称。 /root:管理员用户的主目录。 /run:临时文件目录,存储系统启动以来的临时信息,当系统重启,该目录下的文件将会被清理掉。 /opt:optional “可选择”的意思,作用是安装第三方软件的地方 /sbin:管理员用户才能执行的命令和程序文件夹。 /tmp:临时文件目录。10天内未访问、未更该或未修改的文件将自动从这个目录中删除。 /usr:用户应用程序和文件放置的文件夹目录。 /var:存放着经常变动的文件,例如系统日志等文件。
1 min read

Linux 挂载新磁盘

1、磁盘连上主板(很重要) 2、重启系统 reboot 3、查看磁盘检查到没有 > fdisk -l 4、进入磁盘 > fdisk /dev/{磁盘名称} 5、把磁盘分区设置好,可以只分一个区 6、格式化分区 > mkfs.ext4 /dev/{分区名称} 7、挂载分区 mount /dev/{分区名称}  /{某个文件夹} 8、设置开启自动挂载,编辑 /etc/fstab 文件 > vim /etc/fstab 添加如下信息 > /dev/(磁盘分区) /(挂载目录) ext4(文件格式)defaults 0 0
1 min read

随心笔记

技术无止境 创新不停驻