在 Kubernetes 集群中部署现代应用的通用模式
在 Kubernetes 集群中部署现代应用的通用模式摘要我们正在经历现代应用交付领域的第二次浪潮,而 Kubernetes 和容器化则是这次浪潮的主要推动力量。 随着第二次浪潮的推进,我们在 NGINX 用户和已在 Kubernetes 集群中成功部署现代应用的客户中看到了一种通用模式。我们将这种模式称为 ClusterOut,它共分为三个阶段: 第一阶段:构建坚实的 Kubernetes
手写 Java HashMap 核心源码
手写 Java HashMap 核心源码手写 Java HashMap 核心源码上一章手写 LinkedList 核心源码,本章我们来手写 Java HashMap 的核心源码。 我们来先了解一下 HashMap 的原理。HashMap 字面意思 hash + map,map 是映射的意思,HashMap 就是用 hash 进行映射的意思。不明白?没关系。我们来具体讲解一下 HashMap 的原理
手写 ArrayList 核心源码
手写 ArrayList 核心源码手写 ArrayList 核心源码ArrayList 是 Java 中常用的数据结构,不光有 ArrayList,还有 LinkedList,HashMap,LinkedHashMap,HashSet,Queue,PriorityQueue 等等,我们将手写这些常用的数据结构的核心源码,用尽量少的代码来揭示核心原理。 下面我们来手写 ArrayList 的核心源
PostgreSQL 数组类型使用详解
PostgreSQL 数组类型使用详解PostgreSQL 数组类型使用详解可能大家对 PostgreSQL 这个关系型数据库不太熟悉,因为大部分人最熟悉的,公司用的最多的是 MySQL 我们先对 PostgreSQL 数据库 (下面简称 PG)简单的介绍一下,以后有机会,再单独写一篇专门介绍 pgSql 的文章 The World’s Most Advanced Open Source
SQL 抽象语法树及改写场景应用
SQL 抽象语法树及改写场景应用1 背景我们平时会写各种各样或简单或复杂的 sql 语句,提交后就会得到我们想要的结果集。比如 sql 语句,”select * from t_user where user_id > 10;”,意在从表 t_user 中筛选出 user_id 大于 10 的所有记录。你有没有想过从一条 sql 到一个结果集,这中间经历了多少坎坷呢? 2 SQL 引擎从 M
三艾云 Kubernetes 集群最佳实践
三艾云 Kubernetes 集群最佳实践三艾云 Kubernetes 集群最佳实践容器是 Cloud Native 的基石,它们之间的关系不言而喻。了解容器对于学习 Cloud Native 也是十分重要的。近期,三艾云 Cloud Native 的 “在线公开课” 从理论和实践两个层面为大家分享了 Cloud Native 相关的技术知识。在本周的周日,我们还将迎来”Cloud Native
Serverless 遇到 FinOps: Economical Serverless
Serverless 遇到 FinOps: Economical Serverless 摘要:本文基于 FunctionGraph 在 Serverless 领域的 FinOps 探索和实践,提出业界首个 Serverless 函数总成本估计模型 Key Takeaways:1)尽管 Serverless 的迅猛发展吸引了广泛深入的关注,Serverless 函数总成本的事先估计仍缺乏有效
Serverless 架构演进与实践
Serverless 架构演进与实践1. 介绍Serverless 并不仅仅是一个概念,很多地方都已经有了它的影子和思想,本文将给大家介绍最近比较火的 Serverless。 首先放出官方对 Serverless 的解释: Serverless 的全称是 Serverless computing 无服务器运算,又被称为函数即服务(Function-as-a-Service,缩写为 FaaS),
【StoneDB 模块介绍】服务器模块
【StoneDB 模块介绍】服务器模块一、介绍客户端程序和服务器程序本质上都是计算机上的一个进程,客户端进程向服务器进程发送请求的过程本质上是一种进程间通信的过程,StoneDB 数据库服务程序作为服务器程序,客户端只要遵循规定的通信协议,都可以进行连接,包括但不限于 odbc、jdbc、.net 等。 那么,客户端连接到 StoneDB 数据库服务程序后,向服务器发送了请求,服务器是如何处理,
StoneDB 子查询优化
StoneDB 子查询优化摘要:说明如何优化 exists 的 join 查询优化器的处理 核心函数:TwoDimensionalJoiner::ChooseJoinAlgorithmJoinAlgType TwoDimensionalJoiner::ChooseJoinAlgorithm([[maybe_unused]] MultiIndex &mind, Condition &
StoneDB 主从切换实践方案
StoneDB 主从切换实践方案StoneDB 的主从切换既可以手动切换,也可以自动切换,自动切换通常需要使用第三方中间件。本文介绍的是较为常用的中间件 Replication Manager,当 master 发生宕机时,可自动切换至 slave,保证业务正常运行,故障节点恢复后再加入主从。 服务器配置说明 IP Memory CPU OS version
StoneDB 读写分离实践方案
StoneDB 读写分离实践方案在 StoneDB 1.0 版本中,InnoDB 引擎处理 OLTP 的事务型业务,Tianmu 引擎处理 OLAP 的分析型业务。因此,需要在主从复制环境的基础上做读写分离,所有的写操作和部分读操作走 InnoDB 引擎,所有的分析类查询走 Tianmu 引擎。读写分离方案既可以使用第三方中间件,也可以在业务前端实现。本文介绍的是较为常用的中间件 ProxySQL
Lua 脚本在 Redis 事务中的应用实践
Lua 脚本在 Redis 事务中的应用实践使用过 Redis 事务的应该清楚,Redis 事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命令因业务原因执行失败并不会阻断后续命令的执行,且也无法回滚已经执行过的命令。如果想要实现和 MySQL
原生 Redis 跨数据中心双向同步优化实践
原生 Redis 跨数据中心双向同步优化实践一、背景公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度。需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥有一致的全量数据,如果真正实现用户就近读写,也就是实现真正的业务异地多活,数据同步是异地多活的基础,这就需要多数据中心间数据能够双向同步。 二、原生 red
分布式数据库 ZNBase 的分布式计划生成
分布式数据库 ZNBase 的分布式计划生成 导读 在数据库系统中,收到一个查询请求时,执行器会负责解析 SQL 语句,生成执行计划,然后再一步步实现我们的查询请求。分布式数据库拥有分布式执行计划,与传统单机数据库相比拥有更高的扩展性。本文将介绍 NewSQL 分布式数据库 ZNBase 的分布式计划生成机制。 数据库的服务端,可以划分为执行器 (Execution Engine) 和存
一步步搞懂 MySQL 元数据锁(MDL)
一步步搞懂 MySQL 元数据锁(MDL)某日,路上收到用户咨询,为了清除空间,想删除某 200 多 G 大表数据,且已经确认此表不再有业务访问,于是执行了一条命令‘delete from bigtable’,但好长时间也没删完,经过咨询后,获知 drop table 删除表速度快,而且能彻底释放空间,于是又在另外一个 session 中执行了‘drop table bigtable’命令,但是这
分布式架构下如何选择最佳 Store?
分布式架构下如何选择最佳 Store?一、背景开务数据库是一款云原生分布式数据库,基于分布式架构特点其存储数据默认有 3 份,分别存储在各节点下的不同 Store 中。在多节点多 Store 的情况下,如何选择存储数据的 Store 就显得尤为重要。 开务数据库中通过特定算法,根据 Store 的存储容量、磁盘介质以及每个 Store 的 QPS 等综合因素,计算出最佳的 Store 以完成数据
如何实现数据库读一致性
如何实现数据库读一致性1 导读数据的一致性是数据准确的重要指标,那如何实现数据的一致性呢?本文从事务特性和事务级别的角度和大家一起学习如何实现数据的读写一致性。 2 一致性1. 数据的一致性:通常指关联数据之间的逻辑关系是否正确和完整。 举个例子:某系统实现读写分离,读数据库是写数据库的备份库,小李在系统中之前录入的学历信息是高中,经过小李努力学习,成功获得了本科学位。小李及时把信息变成成了本
PostgreSQL 逻辑复制解密
PostgreSQL 逻辑复制解密在数字化时代的今天,我们都认同数据会创造价值。为了最大化数据的价值,我们不停的建立着数据迁移的管道,从同构到异构,从关系型到非关系型,从云下到云上,从数仓到数据湖,试图在各种场景挖掘数据的价值。而在这纵横交错的数据网络中,逻辑复制扮演着及其重要的角色。 让我们将视角从复杂的网络拉回其中的一个端点,从 PostgreSQL 出发,对其逻辑复制的原理进行解密。 1
SSH 公钥私钥的生成管理
SSH 公钥私钥的生成管理一、生成公钥/私钥对生成公钥/私钥对的命令(Windows/Linux): ssh-keygen -b 4096 -C 张三 -N password -f ./zhangsan-key 参数说明: -b 4096:表示密钥的长度,建议 4096 起。-C 张三:在公钥末尾加上注释,表名这是谁的公钥。-N password:设置私钥密码。如果想在生成过程中输入