技术博客
开源技术 知识分享
数据仓库中的数据分层
1. 数据仓库的概念 官方定义 数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。 这个定义的确官方,但是却指出了数据仓库的四个特点。 特点
Kafka高可用实现原理
1 概述 Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于向外扩展; 它同时为发布和订阅提供高吞吐量; 它支持多订阅者,当失败时能自动平衡消费者; 它将消息持久化到磁盘
BI、数据仓库、数据湖与数据中台
前言 随着大数据技术的不断更新和迭代,数据管理工具得到了飞速的发展,相关概念如雨后春笋一般应运而生,如从最初决策支持系统(DSS)到商业智能(BI)、数据仓库、数据湖、数据中台等,这些概念特别容易混淆
Kafka Client API 使用介绍
要使用Kafka Client的API,首先需要先部署Kafka集群,部署过程请参见[官网][2]。然后在项目中添加Kafka Client的依赖,在这里我们使用0.10.0.1版本: <dep
kube-scheduler调度器性能调优
调度器性能调优 作为 kubernetes 集群的默认调度器,kube-scheduler 主要负责将 Pod 调度到集群的 Node 上。在一个集群中,满足一个 Pod 调度请求的所有
kubernetes DaemonSet
DaemonSet DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 D
Kubernetes应用连接到 Service
Kubernetes 连接容器模型 既然有了一个持续运行、可复制的应用,我们就能够将它暴露到网络上。 在讨论 Kubernetes 网络连接的方式之前,非常值得与 Docker 中 “正常” 方式的网
kubernetes使用Source IP
使用 Source IP Kubernetes 集群中运行的应用通过 Service 抽象来互相查找、通信和与外部世界沟通。本文介绍被发送到不同类型 Services 的数据包源 IP 的变化过程,你
kubernetes 部署并运行 ZooKeeper集群
在 Kubernetes 上使用 PodDisruptionBudgets 和 PodAntiAffinity 特性运行 Apache Zookeeper。 准备开始 熟悉以下 Kubernetes
StatefulSet 基础
StatefulSet 基础 使用 StatefulSets 来管理应用。如何创建、删除、扩容/缩容和更新 StatefulSets 的 Pods。 准备开始 在开始本教程之前,你应该熟悉以下 Kub
MySQL高可用主从切换工具replication-manager
MySQL高可用工具,一直以来MHA使用的比较多,自从MySQL 引入GTID之后,又出现了Orchestrator以及replication-manager这类新的高可用工具,本文将主要介绍repl
MySQL性能分析工具(perf和Flame Graphs)
本文将介绍如何使用perf和Flame Graphs工具对MySQL进行性能分析,这两个工具能够以图形化的形式展现MySQL运行过程中的哪些函数被调用以及调用次数,协助分析MySQL性能瓶颈,为性能优
MySQL性能监控工具 orzdba python版本
orzdba 是淘宝开源的一款MySQL实时性能监控工具,使用Perl语言开发,最近在github上看到一款python版本的orzdba,功能与Perl版本差不多,试用了一下,总体感觉还不错,也发现
MySQL数据一致性校验与修复工具pt-table-checksum&pt-table-sync
MySQL主从复制是基于Binlog的逻辑复制,主从数据一致性会因为MySQL的Bug或者人为误操作等原因产生不一致,而这种不一致又因为逻辑复制的原因,可能隐藏了很久都不会被发现,只有在更新不一致的数
MySQL慢查询可视化工具Anemometer安装与使用
Anemometer是一款开源的MySQL慢查询可视化工具,它使用pt-query-digest工具解析MySQL慢查询日志,将解析结果显示在Web页面上,提供丰富的查询方式,用户在页面上能够更加方便
MySQL在线改表工具gh-ost源码编译与使用方法
gh-ost 是 github开源的MySQL在线改表工具,使用go语言开发,因为没有使用触发器,采用binlog同步增量数据,性能损耗较小,同时也避免了与业务SQL并发执行可能导致的死锁。本文简单介
Python 中的那些高级赋值操作符
对变量赋值时, 常常会用到变量本身,比如自增操作: x = 1 x += 1 print(x) 运行结果: 2 除了 +,Python 还支持以下这些高级赋值操作符: -= *= /= %= 高级赋值
Python 列表的 index() 方法
列表对象拥有一个 index() 方法, 它接受一个值, 如果该值存在于该列表对象中, 就返回它的下标索引值: books = [\’梦的化石\’, \’冬泳\’, \’鱼翅与花椒\’] print(
Python 中如何计算某段代码的运行时长
有些代码执行时间较久,我们希望能够计算出其实际运行时长。可以采用 datetime 库。 (1) 定义一个计算方法: import datetime def print_cost(start_time
Python 列表与元组之间相互转换
Python 定义了 list()和 tuple() 函数,它们会分别把传递给它们的值,转换为列表和元组版本。 colors = [\’红\’, \’绿\’, \’黄\’] print(tuple(c
Python 中如何复制列表或字典
有时候,我们可能不希望函数修改所传入的列表或字典。那么我们可以使用 copy 模块的 copy() 函数。 import copy colors = [\’红\’, \’绿\’, \’黄\’] oth
Python 字典结构的 get() 方法
Python 字典定义了一个 get() 方法,它有两个入参:要取得其值的键名,以及如果该键不存在时,返回的默认值 。 因为如果使用数组语法 dict[key],访问字典中不存在的键, 会导致 Key
Python 中的那些高级赋值操作符
对变量赋值时, 常常会用到变量本身,比如自增操作: x = 1 x += 1 print(x) 运行结果: 2 除了 +,Python 还支持以下这些高级赋值操作符: -= *= /= %= 高级赋值
Python 列表的 index() 方法
列表对象拥有一个 index() 方法, 它接受一个值, 如果该值存在于该列表对象中, 就返回它的下标索引值: books = [\’梦的化石\’, \’冬泳\’, \’鱼翅与花椒\’] print(
Python 中如何计算某段代码的运行时长
有些代码执行时间较久,我们希望能够计算出其实际运行时长。可以采用 datetime 库。 (1) 定义一个计算方法: import datetime def print_cost(start_time
Python 列表与元组之间相互转换
Python 定义了 list()和 tuple() 函数,它们会分别把传递给它们的值,转换为列表和元组版本。 colors = [\’红\’, \’绿\’, \’黄\’] print(tuple(c
Python 中如何复制列表或字典
有时候,我们可能不希望函数修改所传入的列表或字典。那么我们可以使用 copy 模块的 copy() 函数。 import copy colors = [\’红\’, \’绿\’, \’黄\’] oth
Python 字典结构的 get() 方法
Python 字典定义了一个 get() 方法,它有两个入参:要取得其值的键名,以及如果该键不存在时,返回的默认值 。 因为如果使用数组语法 dict[key],访问字典中不存在的键, 会导致 Key
Python 中的那些高级赋值操作符
对变量赋值时, 常常会用到变量本身,比如自增操作: x = 1 x += 1 print(x) 运行结果: 2 除了 +,Python 还支持以下这些高级赋值操作符: -= *= /= %= 高级赋值
Python 列表的 index() 方法
列表对象拥有一个 index() 方法, 它接受一个值, 如果该值存在于该列表对象中, 就返回它的下标索引值: books = [\’梦的化石\’, \’冬泳\’, \’鱼翅与花椒\’] print(
Python 中如何计算某段代码的运行时长
有些代码执行时间较久,我们希望能够计算出其实际运行时长。可以采用 datetime 库。 (1) 定义一个计算方法: import datetime def print_cost(start_time
Python 列表与元组之间相互转换
Python 定义了 list()和 tuple() 函数,它们会分别把传递给它们的值,转换为列表和元组版本。 colors = [\’红\’, \’绿\’, \’黄\’] print(tuple(c
Python 中如何复制列表或字典
有时候,我们可能不希望函数修改所传入的列表或字典。那么我们可以使用 copy 模块的 copy() 函数。 import copy colors = [\’红\’, \’绿\’, \’黄\’] oth
Python 字典结构的 get() 方法
Python 字典定义了一个 get() 方法,它有两个入参:要取得其值的键名,以及如果该键不存在时,返回的默认值 。 因为如果使用数组语法 dict[key],访问字典中不存在的键, 会导致 Key
