手撸容器 VxLAN 组网

4 月 25 日
阅读 4 分钟
116
容器组网大致有两种方案:underlay 和 overlay。underlay 虽然性能较好,但是往往与底层网络耦合较重,使用范围比较受限,而 overlay 虽然性能可能差一点点,但是不受底层网络限制,应用范围更广。在 overlay 方案中,最常见的就是基于 VxLAN 的方案,今天我们就以 native Linux 为起点,不使用任何内核以外的工具,来徒...

浅谈机房网络架构演进

3 月 19 日
阅读 6 分钟
211
最近读到了《云原生数据中心网络》[1]这本书,对其中的机房网络架构演进产生了较大的兴趣,这里对这个话题进行一个简单的总结和拓展,以飨读者。Access-Aggregation-Core 三层架构图 1,源[2]如上图所示:接入层负责接入(access)服务器(二层交换)汇聚层对接入层的包进行聚合(aggregation)并路由到核心层;其下是二...

eBPF HashMap 与 padding 的坑

3 月 3 日
阅读 4 分钟
326
上一篇文章《ebpf-go 初体验》中,我们提到了一个小插曲,就是当 map 的 key 这样写的时候 struct tuple key = {ip, bpf_ntohs(sport)},map 的 key 看起来会重复,有些令人诧异,于是我用另外一台机器 B 测了下(内核 6.6,clang 14.0.0)。发现了报错:"invalid indirect read from stack R2 off",顺藤摸瓜...

ebpf-go 初体验

2 月 17 日
阅读 7 分钟
1.2k
但是很多的场景中(尤其是云原生场景),我们出于避免重复造轮子、更快的迭代速度、运行时安全等原因,会选择 go 语言来进行开发,ebpf-go2 这个库就是当前最好的选择。

如何终结已存在的TCP连接?——eBPF篇

2023-12-06
阅读 5 分钟
575
强制实施新策略,如安全组、多活规则等。传统的防火墙基于 conntrack 模块(有状态),对于已经存在的连接一般不会实施新策略,比如我们想要即刻关掉某端口的对外开放,新策略只会对新连接生效,老连接则会忽略新策略,与我们预期不符。该场景下,我们可以人为终结不符合预期的连接来落实新策略

如何终结已存在的TCP连接?

2023-12-04
阅读 3 分钟
552
强制实施新策略,如安全组、多活规则等。传统的防火墙基于 conntrack 模块(有状态),对于已经存在的连接一般不会实施新策略,比如我们想要即刻关掉某端口的对外开放,新策略只会对新连接生效,老连接则会忽略新策略,与我们预期不符。该场景下,我们可以人为终结不符合预期的连接来落实新策略

Trouble Shooting 容器网络

2023-10-05
阅读 3 分钟
432
在容器化环境中,我们经常会遇到一些网络问题:容器 A 访问 coreDNS 不通,容器 A 访问容器 B 不通,容器 A 访问外网地址不通 等等。

容器网络中的 Iptables 包路径

2023-09-17
阅读 2 分钟
420
namespace 是容器隔离的基础,而 network namespace 则使得每个 namespace 独享 IP address、port、routing tables、iptables 等网络相关资源。这就意味着,数据包在容器和宿主机上经历的 iptables 是不一样的。

数据包如何游走于 Iptables 规则之间?

2023-09-13
阅读 13 分钟
626
在前文《Linux 路由三大件》中,我们提到了 iptables 可以修改数据包的特征从而影响其路由。这个功能无论是传统场景下的 防火墙,还是云原生场景下的 服务路由(k8s service)、网络策略(calico network policy) 等都有依赖。

Linux 路由三大件

2023-08-13
阅读 4 分钟
714
当我们发出一个包的时候,Linux 是如何决策该从哪个网卡(假设有多个网卡)、哪个下一跳发出这个包,用什么 IP 作为 source......

流量劫持技术哪家强?

2023-07-29
阅读 5 分钟
769
“流量劫持” 目前还没有成为一个学术性的词汇,它可能是一个安全话题,也可能是一个网络话题。从网络视角出发,我们劫持流量通常是为了做审计、路由、流量治理等方面的事情,本文就从这个角度来分析和整理一下目前比较常见的流量劫持技术及其应用场景,希望读者能从五花八门的技术中,选出最合适自己的那一款。

【译】别用大炮打蚊子—ServiceMesh的替代方案

2023-07-08
阅读 4 分钟
1k
服务网格是一项热门技术,有时甚至被吹捧为微服务成功的必要条件。然而,像许多抽象一样,服务网格可以节省实施时间,但不能节省学习时间。事实上,许多小平台团队都因为服务网格所增加的复杂性而感到不堪重负,尤其是在部署完成后的运维工作中。

用eBPF/XDP来替代LVS(三)

2023-07-01
阅读 8 分钟
1.4k
随着 eBPF 的发展,我们已经可以将 eBPF/XDP 程序直接部署在普通服务器上来实现负载均衡,从而去掉用于专门部署 LVS 的机器。本系列文章就是基于这个出发点,以演进的形式,分析和探讨一些实现思路。

用eBPF/XDP来替代LVS(二)

2023-06-24
阅读 6 分钟
614
随着 eBPF 的发展,我们已经可以将 eBPF/XDP 程序直接部署在普通服务器上来实现负载均衡,从而节省掉用于专门部署 LVS 的机器。

一张图感受真实的 TCP 状态转移-续

2023-06-15
阅读 3 分钟
892
事实上,我的测试内核版本是 6.1.11,它包含了这个commit [[链接]], 及其系列 [[链接]]。所以测试内核中 TCP_SYN_RECV 已经不是原始 TCP 协议中 server 收到第一个 syn 包的状态了,取而代之的是 TCP_NEW_SYN_RECV,TCP_SYN_RECV 本身主要被用于支持 fastopen 特性了。

一张图感受真实的 TCP 状态转移

2023-05-27
阅读 8 分钟
4.2k
各位读者无论是作为候选人还是面试官,想必对 “TCP 三步握手,四步挥手” 都烂熟于心了。但是百闻不如一见,今天我们就来 在真实环境中把这个过程可视化,实地看一看,TCP的状态到底是如何转化的。

用eBPF/XDP来替代LVS

2023-04-05
阅读 7 分钟
2.4k
本文不打算直接到这一步,而是首先看看如何用 eBPF/XDP 按照常规模式来替代 LVS,也就是说我们还是将负载均衡程序(software load balance 简称 SLB)部署在专用机器上,只不过不用 LVS,而是用 eBPF/XDP 来实现。

高可用一览-从LVS谈起

2021-12-01
阅读 13 分钟
7.6k
当我们做技术预研/业务起步的时候,功能性(Functionality)是最重要的,能跑通就行。对于最流行的C/S架构来说,下面的架构就是能满足功能需求的最简模式:

一份Yaml的K8S之旅-上

2020-08-09
阅读 21 分钟
4.2k
经常有人问:“浏览器输入url后发生了什么”,这个问题看似简单,但是却能全面的考察一个人对系统的了解程度。如果把这个问题引申到k8s领域,就可以问出“K8sClient提交Yaml后发生了什么”这样类似的问题。同样的,要回答这个问题,需要我们对k8s的设计有一个比较完整的了解。本文就试图回答这个问题,带着大家体验一下一份Y...

后端好书阅读与推荐(续八)

2020-05-06
阅读 9 分钟
4.2k
后端好书阅读与推荐系列文章:后端好书阅读与推荐后端好书阅读与推荐(续)后端好书阅读与推荐(续二)后端好书阅读与推荐(续三)后端好书阅读与推荐(续四)后端好书阅读与推荐(续五)后端好书阅读与推荐(续六)后端好书阅读与推荐(续七)后端好书阅读与推荐(续八)阿里巴巴Java开发手册阿里巴巴Java开发手册 (豆...

步步深入看代理

2020-04-13
阅读 23 分钟
2.3k
1.意义 代理模式的定义:为其它对象提供一种代理以控制对这个对象的访问。 这句话非常简洁,一下子可能感受不到代理模式的强大,直到接触大量业务后才能体会它的应用之丰富: 监控:在原始方法前后进行记录,可以度量方法的处理时间、qps、参数分布等; 限流:依据监控的数据对该方法的不同请求进行限流,特定一段时间内...

阿里云高可用架构团队招新(校招社招)

2020-03-09
阅读 2 分钟
5k
高可用架构团队是阿里巴巴负责阿里巴巴核心高可用产品的研发团队,提供的高可用架构基础设施直面双11洪峰流量,包括全链路压测、容量规划、准入控制、限流降级、流量调度等;通过攻防演练、环境隔离、业务对账等常态稳定性保障技术,提前暴露风险,低成本发现系统隐患;通过同城双活、异地多活、单元化体系建设,支撑阿...

MySQL 之 LEFT JOIN 避坑指南

2019-09-22
阅读 3 分钟
16.1k
left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论、商城里一个货物有多少评论、一条评论有多少个赞等等。但是由于对join、on、where等关键字的不熟悉,有时候会导致查询结果与预期不符,所以今天我就来总结一下,一起避坑。

2019阿里高可用架构团队招新(应届生,社招都收)

2019-06-28
阅读 2 分钟
6.5k
高可用架构团队是阿里巴巴保障稳定性的护航舰队,提供的高可用架构基础设施直面双11洪峰流量,包括全链路压测、容量规划、准入控制、限流降级、流量调度等;通过攻防演练、环境隔离、业务对账等常态稳定性保障技术,提前暴露风险,低成本发现系统隐患;通过同城双活、异地多活、单元化体系建设,支撑阿里巴巴电商链路的...

后端好书阅读与推荐(续七)

2019-05-07
阅读 9 分钟
2.3k
Spring体系用来做微服务在当下可谓是风头正劲,这本书就用一个实例来手把手教我们实现微服务。实战系列的口碑一直不错,这本也不例外,看完就可以对微服务的概念有一个完整的理解,并且想上手也有路可寻。

后端好书阅读与推荐(续六)

2018-10-23
阅读 8 分钟
4.3k
Elasticsearch是一个强大的开源搜索引擎(不仅如此,还是一个分布式存储、实时分析系统),作为后端开发者,我们常常需要用到它,甚至是借鉴其原理来实现自己特定的功能,因为了解一下是很有必要的。这本书不仅讲了使用方法,还讲了原理,很适合我们学习与查阅。

消息队列二三事

2018-08-29
阅读 5 分钟
4.7k
最近在看kafka的代码,就免不了想看看消息队列的一些要点:服务质量(QOS)、性能、扩展性等等,下面一一探索这些概念,并谈谈在特定的消息队列如kafka或者mosquito中是如何具体实现这些概念的。

源码分析Kafka之Producer

2018-08-27
阅读 9 分钟
3.6k
Kafka是一款很棒的消息系统,可以看看我之前写的 后端好书阅读与推荐来了解一下它的整体设计。今天我们就来深入了解一下它的实现细节(我fork了一份代码),首先关注Producer这一方。

Raft论文读书笔记

2018-07-11
阅读 3 分钟
5.2k
Raft是当前分布式领域最重要的一致性算法之一,今天我们就来好好研究研究这个算法的论文, 还有对应网站, 动画, 不想看英文的也有中文的翻译,所以我这边就不翻译了,主要还是记录一下论文重点和自己的心得。

计算机科学中抽象的好处与问题—伪共享等实例分析

2018-06-04
阅读 3 分钟
2.7k
David John Wheeler有一句名言“计算机科学中的任何问题都可以通过加上一层间接层来解决”,一层不够就再加一层。后半句是我加的 (* ̄︶ ̄) ,虽然有点玩笑的意思,但是也的确能说明一些问题。计算机科学的确是靠着一层又一层的抽象与封装解决了巨量的问题。