操作系统实作

书名 ISBN 作者 出版社 出版日期 备注
穿越操作系统迷雾:从零实现操作系统 9787111732884 王柏生/王晟寒 机械工业出版社 2023-09-01
一个64位操作系统的设计与实现 9787115475251 田宇 人民邮电出版社 2018-05-01
30天自制操作系统 9787115287960 [日]川合秀实 人民邮电出版社 2022-04-01
自己动手写操作系统 9787121015779 于渊 电子工业出版社 2005-08-01 P
Orange S:一个操作系统的实现 9787121084423 于渊 电子工业出版社 2009-06-01 P
Linux GNU C 程序观察 9787302545491 罗秋明 清华大学出版社 2020-05-01
深度探索嵌入式操作系统:从零开始设计、架构和开发 9787111514879 彭东 机械工业出版社 2015-10-01 P
阅读全文 »

GCC

书名ISBN作者出版社出版日期备注
编译系统透视:图解编译原理 9787111498582 新设计团队 机械工业出版社 2016-04-01 P,W
深入分析GCC 9787111556329 王亚刚 机械工业出版社 2017-02-01 P,W
GCC技术参考大全 9787302088431 [美]格里菲斯 清华大学出版社 2004-06-01 P
GNU gcc嵌入式系统开发 9787811248142 董文军 北京航空航天大学出版社 2010-03-01 P
高级C/C++编译技术(典藏版) 9787111717300 米兰·斯特瓦诺维奇 机械工业出版社 2022-12-01 W
阅读全文 »

eBPF是extended BPF的简称,BPF是Berkeley Packet Filter,即伯克利报文过滤器。

参考图书

书名 ISBN 作者 出版社 出版日期 备注
性能之巅(第2版):系统、企业与云可观测性 9787121435874 Brendan Gregg 电子工业出版社 2022-06-01 Z
BPF之巅:洞悉Linux系统和应用性能 9787121399725 Brendan Gregg 电子工业出版社 2020-11-01 P
Linux内核观测技术BPF 9787111660545 David Calavera 机械工业出版社 2023-03-01 P
What Is eBPF? 9781492097259 Liz Rice O’Reilly Media, Inc. 2022-04-01 P
Linux Observability with Bpf:

Advanced Programming for Performance Analysis and Networking

9781492050209 David Calavera O’Reilly Media, Inc. 2019-11-01 P
Learning eBPF 9781098135126 Liz Rice O’Reilly Media, Inc. 2023-03-01 P,E,E
阅读全文 »

参考图书

书名 ISBN 作者 出版社 出版日期 备注
BPF之巅:洞悉Linux系统和应用性能 9787121399725 Brendan Gregg 电子工业出版社 2020-11-01 P,Z
性能之巅:洞悉系统、企业与云计算(第2版)(英文版) 9787121450945 Brendan Gregg 电子工业出版社 2023-07-01
性能之巅:系统、企业与云可观测性(第2版) 9787121435874 Brendan Gregg 电子工业出版社 2022-06-01
性能之巅:洞悉系统、企业与云计算 9787121267925 Brendan Gregg 电子工业出版社 2020-10-01 P
Linux性能优化大师 9787121264726 赵永刚 电子工业出版社 2015-08-01 P
阅读全文 »

参考图书

Linux设备驱动开发详解:基于的Linux4.0内核
宋宝华
机械工业出版社
2015-08-01#9787111507895#PDF#WXB
Linux设备驱动开发详解.第2版
宋宝华
人民邮电出版社
2010-10-01#9787115236579#WX
嵌入式Linux设备驱动程序开发指南.第2版
[西]阿尔贝托·利贝拉尔·德·洛斯里奥斯
机械工业出版社
2021-07-01#9787111684558#WX#JDB
Linux设备驱动程序.第3版
[美]科波特
中国电力出版社
2010-09-01#9787508338637#PDF
Linux内核探秘:深入解析文件系统和设备驱动的架构与设计
高剑林
机械工业出版社
2014-01-01#9787111445852#PDF#EPUB
阅读全文 »

虚拟化技术主要包括:计算虚拟化、存储虚拟化、网络虚拟化、内存虚拟化、IO虚拟化。

  • 计算虚拟化四大主流路线:KVM、VMWARE、Hyper-V、Xen
  • 存储虚拟化两大主流路线:glustfs、ceph
  • 网络虚拟化一般采用自研的方式:主要技术有VxLAN、SDN等

参考图书

书名ISBN作者出版社出版日期备注
深度探索Linux系统虚拟化:原理与实现9787111666066王柏生机械工业出版社2020-10-01E,JB
深入浅出系统虚拟化:原理与实践9787302589419戚正伟清华大学出版社2021-10-01W
处理器虚拟化技术9787121230196邓志电子工业出版社2014-05-01P
Linux虚拟化—原理、方法和实战(KVM+Docker+OpenStack)9787302633419吴光科清华大学出版社2023-07-01
系统虚拟化—原理与实现9787302193722英特尔开源软件技术中心清华大学出版社2009-03-01P
阅读全文 »

图书与内核版本

书名 ISBN 作者 Linux内核版本 备注
深入Linux内核架构 9787115227430 [德]莫尔勒 linux-2.6.24
深入理解Linux内核(第三版) 9787508353944 [美]博韦/西斯特 linux-2.6.11
Linux内核设计与实现(第三版) 9787111338291 [美]拉芙 linux-2.6.34
Linux内核源代码情景分析 9787308027038 毛德操/胡希明 linux-2.4.0
Linux技术内幕 9787302451006 罗秋明 linux-3.13
 
Linux内核源码剖析—TCP/IP实现 9787111323730 樊东东/莫澜 linux-2.6.20
追踪Linux TCP/IP代码运行–基于2.6内核 9787512400481 秦健 linux-2.6.26
深入理解Linux网络技术内幕 9787508379647 [美]ChristianBenvenuti linux-2.6.x linux-2.6.11
精通Linux内核网络 9787115392930 [以]罗森 linux-3.9
Linux内核网络栈源代码情景分析 9787115216267 曹桂平 linux-1.2.13
深入理解Linux网络:修炼底层内功,掌握高性能原理 9787121434105 张彦飞 linux-3.10

操作系统原理

书名ISBN作者出版社出版日期备注
操作系统设计与实现 第三版 上册9787121261930[美]塔嫩鲍姆电子工业出版社2015-06-01P,Z
操作系统设计与实现 第三版 下册9787121026485[美]塔嫩鲍姆电子工业出版社2007-03-01P
现代操作系统:原理与实现9787111666073陈海波/夏虞斌机械工业出版社2020-10-01P
操作系统真象还原9787115414342郑钢人民邮电出版社2016-03-01P
操作系统概念 第十版9787111732853[美]亚伯拉罕.西尔伯沙茨机械工业出版社2019-09-01
操作系统—精髓与设计原理 第九版9787121388316[美]William Stallings电子工业出版社2020-07-01
Operating Systems: Three Easy Pieces(OSTEP)[D1], [D2]
阅读全文 »

CUDA(Compute Unified Device Architecture)是英伟达公司设计研发一种并行计算平台和编程模型,包含了CUDA指令集架构以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。
CUDA是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。

阅读全文 »

参考图书

书名ISBN作者出版社出版日期备注
面向模式的软件架构 卷1:模式系统 9787115332158 [德]布施曼 人民邮电出版社 2013年11月 P
面向模式的软件架构 卷2:并发和联网对象模式 9787115332141 [德]布施曼 人民邮电出版社 2013年12月 P
面向模式的软件架构 卷3:资源管理模式 9787115313430 [德]布施曼 人民邮电出版社 2013年06月 P
面向模式的软件架构 卷4:分布式计算的模式语言 9787115227737 [德]布施曼 人民邮电出版社 2010年06月 P
面向模式的软件架构 卷5:模式与模式语言 9787115261731 [德]布施曼 人民邮电出版社 2011年09月 P
设计模式:可复用面向对象软件的基础(典藏版) 9787111618331 [美]埃里克·伽玛 机械工业出版社 2019年06月 P
图解设计模式 9787115439499 [日]结城浩 人民邮电出版社 2016年12月 P

使用如下命令查看HAProxy支持的编译选项

1
$ make help

输出如下图:

由于内容较多,这里就不全部展示了,请读者自己去实验,或者使用这份输出示例(右键另存为)。

编译选项

USE_EPOLL : enable epoll() on Linux 2.6. Automatic.
USE_KQUEUE : enable kqueue() on BSD. Automatic.
USE_EVPORTS : enable event ports on SunOS systems. Automatic.
USE_NETFILTER : enable netfilter on Linux. Automatic.
USE_PCRE : enable use of libpcre for regex. Recommended.
USE_PCRE_JIT : enable JIT for faster regex on libpcre >= 8.32
USE_PCRE2 : enable use of libpcre2 for regex.
USE_PCRE2_JIT : enable JIT for faster regex on libpcre2
USE_POLL : enable poll(). Automatic.
USE_THREAD : enable threads support.
USE_STATIC_PCRE : enable static libpcre. Recommended.
USE_STATIC_PCRE2 : enable static libpcre2.
USE_TPROXY : enable transparent proxy. Automatic.
USE_LINUX_TPROXY : enable full transparent proxy. Automatic.
USE_LINUX_SPLICE : enable kernel 2.6 splicing. Automatic.
USE_LINUX_CAP : enable Linux capabilities.
USE_LIBCRYPT : enable encrypted passwords using -lcrypt
USE_CRYPT_H : set it if your system requires including crypt.h
USE_GETADDRINFO : use getaddrinfo() to resolve IPv6 host names.
USE_OPENSSL : enable use of OpenSSL. Recommended, but see below.
USE_OPENSSL_WOLFSSL : enable use of wolfSSL with the OpenSSL API
USE_QUIC : enable use of QUIC with the quictls API (quictls, libressl, boringssl)
USE_ENGINE : enable use of OpenSSL Engine.
USE_LUA : enable Lua support.
USE_ACCEPT4 : enable use of accept4() on linux. Automatic.
USE_CLOSEFROM : enable use of closefrom() on *bsd, solaris. Automatic.
USE_PRCTL : enable use of prctl(). Automatic.
USE_PROCCTL : enable use of procctl(). Automatic.
USE_ZLIB : enable zlib library support and disable SLZ
USE_SLZ : enable slz library instead of zlib (default=enabled)
USE_CPU_AFFINITY : enable pinning processes to CPU on Linux. Automatic.
USE_TFO : enable TCP fast open. Supported on Linux >= 3.7.
USE_NS : enable network namespace support. Supported on Linux >= 2.6.24.
USE_DL : enable it if your system requires -ldl. Automatic on Linux.
USE_MATH : enable use of -lm. Automatic.
USE_RT : enable it if your system requires -lrt. Automatic on Linux.
USE_BACKTRACE : enable backtrace(). Automatic on Linux.
USE_PROMEX : enable the Prometheus exporter
USE_DEVICEATLAS : enable DeviceAtlas api.
USE_51DEGREES : enable third party device detection library from 51Degrees
USE_WURFL : enable WURFL detection library from Scientiamobile
USE_SYSTEMD : enable sd_notify() support.
USE_OBSOLETE_LINKER : use when the linker fails to emit __start_init/__stop_init
USE_THREAD_DUMP : use the more advanced thread state dump system. Automatic.
USE_OT : enable the OpenTracing filter
USE_MEMORY_PROFILING : enable the memory profiler. Linux-glibc only.
USE_LIBATOMIC : force to link with/without libatomic. Automatic.
USE_PTHREAD_EMULATION: replace pthread’s rwlocks with ours
USE_SHM_OPEN : use shm_open() for the startup-logs

上节 我们主要讲解了HAProxy的基本知识,以及事关HAProxy的重要资源。我们知道HAProxy是众多负载均衡器中非常重要的一个,而本系列文章就是围绕其使用、管理以及原理来展开。在深度学习之前,我们先安装HAProxy,运行起来,直观感受下它的魅力。

源代码下载

使用上文提供的下载链接,下载到本地服务器上:

1
$ wget http://www.haproxy.org/download/2.8/src/haproxy-2.8.3.tar.gz

编译

HAProxy的编译相当简单,不用configure、不用cmake,系统给我们提供了Makefile文件,按照指引设置make参数即可编译成功。

我们先忽略掉所有编译选项,按照下面的方法编译一个版本出来测试。至于具体选项的特定含义,以及其他高级选项,后续再慢慢道来。

阅读全文 »

HAProxy是一款开源的、高性能的、基于TCP(四层)和HTTP(七层)应用的负载均衡软件,借助HAProxy可以免费、快速、可靠地部署基于TCP和HTTP应用的负载均衡解决方案。


HAProxy作为一款专业的负载均衡软件,其主要特性如下:

  • 高可靠性和高稳定性。HAProxy同时数以万计的并发连接,对内存和CPU资源消耗较低,其性能可与硬件级F5相媲美。
  • 支持轮循、加权轮循、源地址保持、RI、rdp-cookie等多种负载均衡算法。
  • 支持url检测后端服务健康度。
  • 支持原生SSL。
  • 支持ACL。
  • 支持session保持。
  • 支持连接拒绝、全透明代理。
  • 拥有一个功能强大的服务器状态监控页面,通过此页面可以实时了解系统的运行状况。
  • 自身有完美的热备方案(与Keepalived配合部署)。

工欲善其事必先利其器,本文记录HAProxy的重要资源,通过学习这些资料深度掌握HAProxy的部署、管理和原理等方面的知识。

阅读全文 »

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

参考图书

书名 ISBN 作者 出版社 出版日期 备注
深入理解Nginx:模块开发与架构解析(第2版) 9787111526254 陶辉 机械工业出版社 2022年07月 P
Nginx经典实例 9787519877613 [美]德里克 中国电力出版社 2023年05月

参考网站

域名系统,Domain Name System(DNS),是将域名和IP地址相互映射的一个分布式数据库。DNS使用UDP端口53,对每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

本文记录DNS相关图书、资料和开源系统列表,以供后续的逐步深入分析。

阅读全文 »

0x01 大规模系统架构

书名ISBN作者出版社出版日期备注
亿级流量系统架构设计与实战 9787121476983 李琛 电子工业出版社 2024年05月
架构师修炼之道 9787568052702 Michael Keeling 华中科技大学出版社 2019年08月
高并发系统实战派 9787121442049 谢恩德 电子工业出版社 2022年09月
架构演变实战:从单体到微服务再到中台 9787121436123 潘志伟 电子工业出版社 2022年06月
深入理解RPC框架原理与实现 9787121420948 华钟明 电子工业出版社 2021年10月
阅读全文 »

负载均衡(Load Balance)就是将操作合理有效分解到多个操作单元执行,从而扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有硬件负载和软件负载之分。

在大多数互联网公司中,普遍使用软件形态的负载均衡器,并且基于所处理的协议区分为两种不同的系统:

  • 四层负载均衡,也被称为网络负载均衡。仅用于对TCP、UDP流量进行处理。四层负载均衡在转发中主要基于IP地址、端口等信息。
    四层负载均衡的开源软件包括LVS、DPVS、Katran等,分别代表了三种方案:Linux内核,DPDK,eBPF。
  • 七层负载均衡,也被称为应用负载均衡。支持HTTP、HTTPS、SSL、TLS等协议的处理。
    七层负载均衡在转发中可以利用应用层的信息,如HTTP的请求头部,而这些信息对四层负载均衡来说是不可见的。
    七层负载均衡的开源软件包括Nginx、HAProxy、BFE、Traefik、Envoy等。
阅读全文 »

上文我们使用apt安装了Thrift开放框架,apt仓库中的Thrift是0.16.0版本,并不是官方最新版本。如果为了使用新的特性,我们需要自行编译最新版本。本文介绍采用从源代码编译的方式,来安装Thrift-0.19.0版本。

阅读全文 »

Thrift在Ubuntu/Debian系统上的安装一般有两种方式:

  • 一是APT仓库安装,简单方便,但这种方式安装的软件并非官方最新版本,版本更新有一定延迟;
  • 二是从源代码编译安装,可以编译使用最新特性版本,但过程略显复杂,需要有一定的技术功底;

读者自行选择某种方法,本文介绍apt安装方法。

安装

参考安装指南:
https://thrift.apache.org/docs/install/debian.html
https://d3s.mff.cuni.cz/files/teaching/nswi080/labs/Files/prepare-2thrift-en.html

阅读全文 »