以太格

  • 首页

  • 分类

  • 归档

  • 标签

  • 公益 404

  • 关于我

用 Nginx 发布网站

发表于 2021-07-24 | 更新于 2022-01-02 | 分类于 hexo
本文字数: 9.5k | 阅读时长 ≈ 9 分钟

之前买了一台阿里云的云主机,一直想把用起来。考虑到我的个人网站之前部署在 github 上,网页加载比较慢,正好可以用云主机进行部署,提升速度,开始操作。

阅读全文 »

思维导图-容器网络模型

发表于 2021-02-14 | 更新于 2022-01-02 | 分类于 k8s
本文字数: 175 | 阅读时长 ≈ 1 分钟

这篇文章是学习刘超老师在“极客时间”的课程《趣谈网络协议》之后,做的一个总结。

阅读全文 »

法则及基本原则

发表于 2021-02-14 | 更新于 2022-01-02 | 分类于 法则
本文字数: 1.3k | 阅读时长 ≈ 1 分钟

这篇文章主要是记录一些生活或工作中基本原则,方便后续查看及思考。

阅读全文 »

Mysql 事务日志

发表于 2021-01-31 | 更新于 2022-01-02 | 分类于 数据库
本文字数: 13k | 阅读时长 ≈ 12 分钟

1. 概述

在 Mysql 中,存储有三种日志,分别是 binlog log、undo log及 redo log,其中 binlog 日志由 Mysql Server 生成,用来记录对数据库的更新操作,使用场景有主从同步及数据恢复;undo log及 redo log由 Innodb 存储引擎生成,用于保障事务进行。undo日志用于事务的回滚及MVCC,实现事务的原子性,而 redo log基于 WAL( Write-Ahead Logging) 技术,存储事务过程中对数据表的修改,主要是数据页的修改,保证了事务的持久性。这三种日志在数据库表的更新操作(包括新增、修改及删除)中,相互配合,保障了事务的顺利执行,下图以一次数据更新操作演示了它们的工作机制。
mysql-transaction-overview

  1. undo log 存储在系统表空间中(新版的 Mysql 已经可以设置独立的表空间),对 undo log 的更改同样记录到 redo log中;
  2. redo log 由独立的日志文件存储,日志文件只有追加操作,顺序写入到磁盘中,相比数据页的随机写入,具有较高的效率;
  3. binlog log 配合 redo log,实现了内部的 XA 协议,保证了数据在 Innodb 及 Mysql 之间的一致性。
阅读全文 »

Gossip 协议

发表于 2020-11-29 | 更新于 2022-01-02 | 分类于 一致性算法
本文字数: 16k | 阅读时长 ≈ 14 分钟

1. 概述

在一致性算法中,Raft 及 Paxos 是强一致性的算法,属于 CP(一致性及分区容错性) 的使用场景,为了保证算法的准确性,必须保证大部分节点(服务器)是正常的(三个节点容忍一个节点失败)。但在 AP (可用性及分区容错性)场景中,即使只有少数机器的存在,仍然可以对外提供服务,这些场景包括:失败检测、路由同步、Pub/Sub 及动态负载均衡。而 Gossip 协议就是这样一种支持最终一致性算法的协议。

阅读全文 »

Paxos 和 Raft 算法

发表于 2020-11-08 | 更新于 2022-01-02 | 分类于 一致性算法
本文字数: 23k | 阅读时长 ≈ 21 分钟

1. 概述

在分布式系统中,一个核心的问题就是解决数据一致性的问题,即共识问题(多副本共识问题):

Consensus Problem : Requires agreement among a number of processes (or agents) for a single data value.

共识问题简单来说,就是多个进程(代理)就某个单值达成一致,主要的应用场景数据多副本的复制。而 Paxos 及 Raft 算法的提出便是为了解决共识问题,它们在工程实现上得到了广泛的应用,如 Goggle 的 Chubby、Apache 的 ZooKeeper 及 Raft算法实现 Etcd。这些算法都可以统称为一致性算法。

paxos-evolution

一致性算法大概可以分为4个类型:

  1. Basic-Paxos : 提供就一个提案达成一致的算法,是最基本的算法,在工程实践中很少使用该算法;
  2. Multi-Paxos : 在 Basic-Paxos 算法的基础上,提供了就一批提案达成一致的算法,在工程中有很多类似的实现;
  3. Raft : 针对 Multi-Paxos 算法难于理解及实现复杂,提供了一种简化的实现;
  4. Multi-Raft : 为了提供更大的并发请求量,可以将单个 Raft 集群进行分区,提供更大的集群规模。

这篇文章就四种类型的算法进行一个概要的分析,更多的是逻辑概念层面,不会对细节及实现过多讨论,那也超出本人的认知。

阅读全文 »

Select 和 Epoll实现

发表于 2020-10-08 | 更新于 2022-01-02 | 分类于 网络协议
本文字数: 41k | 阅读时长 ≈ 37 分钟

这篇文章主要讲述 select 和 epoll 的实现原理,包括底层的数据结构、与设备的回调处理机制及两种实现之间的差异。

阅读全文 »

图解TCP协议

发表于 2020-09-20 | 更新于 2022-01-02 | 分类于 网络协议
本文字数: 17k | 阅读时长 ≈ 15 分钟

这篇文章讲述网络报文从网卡 NIC (network interface controller)接收,再到操作系统网络协议栈处理,最后到用户程序接收报文处理报文的简化过程,希望能对TCP协议进行一个整体、概括性的总结。

阅读全文 »

垃圾回收之指针判定及堆的遍历

发表于 2020-08-09 | 更新于 2022-01-02 | 分类于 Java基础
本文字数: 23k | 阅读时长 ≈ 21 分钟

在 垃圾回收之回收算法 这篇文章中预设了两个前提:

  1. 根集合及对象中的指针集合已经得到;
  2. 堆是可遍历的,即从一个对象可直接定位到下一个对象;

为了描述的方便,在上篇文章中直接得出了结论,而这篇文章的目的就是解释这两个问题。

阅读全文 »

思维导图-高并发

发表于 2020-08-02 | 更新于 2022-01-02 | 分类于 思维导图
本文字数: 322 | 阅读时长 ≈ 1 分钟

这篇文章是对《高并发,你真的理解透彻了吗?》的记录及整理。

阅读全文 »
1…789…11

Noahsark

不畏将来,不念过往

102 日志
28 分类
316 标签
© 2023 Noahsark | 311k | 4:43
粤ICP备 2021097726号-1 粤公网安备 44030702004132号
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Mist v6.5.0