自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 Kubernetes 基本概念

Kubernetes 是一个可移植、可扩展的开源平台。用于管理容器化的工作负载和服务,可促进声明式配 置和自动化。是谷歌保密了十几年的秘密武器Borg的开源版本,谷歌一直通过Borg系统管理着数量庞大 的应用程序集群。由于Kubernetes是基于容器技术的分布式架构方案,所以不局限于任何编程语言。Kubernetes是一个可插拔的开放式平台,那些默认的解决方案可都是可选的。Kubernetes为构建开发 人员平台提供了基础,但是在重要的地方保留了用户的选择权,拥有更高的灵活性。

2023-01-18 17:27:27 835

原创 Docker Swarm

Docker Swarm 是Docker官方的跨节点的容器编排工具。用户只需要在单一的管理节点上操作,即可管理集群下的所有节点和容器。

2023-01-17 18:43:55 499

原创 Docker-Compose

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。其代码目前在 https://github.com/docker/compose 上开源。

2023-01-17 17:47:49 358

原创 Docker 容器监控

源码:https://github.com/google/cadvisor源码:https://github.com/prometheus/node_exporter官方文档:https://prometheus.io/ PromQL文档:https://prometheus.io/docs/prometheus/latest/querying/basics/源码:https://github.com/prometheus/prometheus。

2023-01-17 14:39:21 817 1

原创 Docker 网络

在一台未经特殊网络配置的Ubuntu机器上安装完Docker之后,在宿主机上通过ifconfig命令可以看到多 了一块名为docker0的网卡。该网卡即是docker0网桥,网桥在这里的作用相当于交换机,为连接在其上 的设备转发数据帧。网桥上的veth网卡设备相当于交换机上的端口,可以将多个容器或虚拟机连接其 上,这些端口工作在二层,所以是不需要配置IP信息的。

2023-01-17 10:31:06 367

原创 Docker数据卷

Docker的镜像是有一系列的只读层组合而来,当启动一个容器时,Docker加载镜像的所有只读层,并在最上层加入一个读写层。这个设计使得Docker可以提高镜像构建、存储和分发的效率,节省了时间和存储空间,然而也存在一些问题:为了解决这些问题,Docker引入了数据卷(volume)机制。Volume 是存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中存在,并为数据的共享和持久化提供便利。Docker run 和 docker create 通

2023-01-16 17:54:38 527

原创 dockerfile笔记

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过 docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了 Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成 docker 镜像.

2023-01-15 21:13:56 833

原创 Docker镜像

容器解决应用开发、测试和部署的问题,而镜像解决应用部署环境问题。镜像是一个只读的容器模板, 打包了应用程序和应用程序所依赖的文件系统以及启动容器的配置文件,是启动容器的基础。镜像所打包的文件内容就是容器的系统运行环境——rootfs(根文件系统或根目录)。容器与镜像类似对象与类的关系。

2023-01-15 17:38:28 336

原创 docker 命令

docker 命令官方文档Reference documentation | Docker Documentationdocker events : 从服务器获取实时事件docker logs : 获取容器的日志docker history : 查看指定镜像的创建历史。docker run --rm -dit --cpu-period=50000 --cpu-quota=25000 ubuntu /bin/bashdocker run --rm -dit --cpu-rt-period=50000 --cp

2022-12-03 22:26:45 312

原创 Docker介绍

根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。 引用网图:docker是容器化技术,针对的是应用及应用所依赖的环境做容器化。遵循单一原则,一个容器只运行一 个主进程。多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫 重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网的提倡的原则而言,容器 = 应用 + 依赖的执行环境而不是像虚拟机一样,把

2022-12-03 19:35:47 476

原创 Docker环境搭建

1. 安装sudo apt install docker.io2. 卸载1. 官方文档:https://docs.docker.com/engine/install/ubuntu/2. 有三种安装方式:1. 基于官方存储库安装;2. 下载软件包安装;3. 基于官方给出的快捷脚本安装。1. 更新 apt 包索引,并且安装一些软件使得apt可以通过HTTPS协议访问软件库。2. 添加docker官方的GPG 秘钥3. 设置一个标准的docker软件仓库。4. 更新apt 包索引并查看docke

2022-12-03 17:29:58 120

原创 GRPC远程调用

RPC 即远程过程调用协议(Remote Procedure Call Protocol),可以让我们像调用本地对象一样发起远程调用。RPC 凭借其强大的治理功能,成为解决分布式系统通信问题的一大利器。gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架,基于 HTTP2 协议设计,序列化使用PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2+PB 保证了的高性能。

2022-11-30 16:51:42 187

原创 Protobuf3语法笔记

先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果 所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了}文件的第一行指定了你正在使用proto3语法:如果你没有指定这个,编译器会使用proto2。这个指定语法行必须是文件的非空非注释的第一个行。SearchRequest消息格式有3个字段,在消息中承载的数据分别对应于每一个字段。其中每个字段都有一个名字和一种类型。

2022-11-29 21:00:46 57

原创 Protobuf应用层协议设计

什么协议:协议是⼀种约定,通过约定,不同的进程可以对⼀段数据产⽣相同的理解,从⽽可以相互协作,存在进程间通信的程序就⼀定需要协议。为什么说进程间通信就需要协议?⽽不是说客户端和服务器端之前?为什么需要⾃⼰设计协议?⽐如不同表的插头,还需要进⾏各种转换,如果我们两端进⾏通信没有约定好协议,那彼此是不知道对⽅发送的数据是什么意义。

2022-11-29 19:48:00 307

原创 KafKa存储机制

Kafka 是为了解决大数据的实时日志流而生的, 每天要处理的日志量级在千亿规模。1. 数据实时产生2. 海量数据存储与处理所以它必然要面临分布式系统遇到的高并发、高可用、高性能等三高问题。对于 Kafka 的存储需要保证以下几点:1. 存储的主要是消息流(可以是简单的文本格式也可以是其他格式,对于 Broker 存储来说,它并不关心数据本身)2. 要支持海量数据的高效存储、高持久化(保证重启后数据不丢失)3. 要支持海量数据的高效检索(消费的时候可以通过offset或者时间戳高效查询并处理)

2022-11-28 20:37:31 538

原创 KafKa C++实战

1. Kafka架构是由producer(消息生产者)、consumer(消息消费者)、borker(kafka集群的 server,负责处理消息读、写请求,存储消息,在kafka cluster这一层这里,其实里面是有很多个 broker)、topic(消息队列/分类相当于队列,里面有生产者和消费者模型)、zookeeper 这些部分 组成。

2022-11-28 10:47:57 1090

原创 kafka使用场景与设计原理

Kafka 本质上是一个 MQ(Message Queue),使用消息队列的好处?解耦:允许我们独立的扩展或修改队列两边的处理过程。可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。缓冲:有助于解决生产消息和消费消息的处理速度不一致的情况。灵活性&峰值处理能力:不会因为突发的超负荷的请求而完全崩溃,消息队列能够使关键组件顶住突发的访问压力。异步通信:消息队列允许用户把消息放入队列但不立即处理它。

2022-11-27 15:57:04 621

原创 GRPC C++开发环境搭建

必须在 grpc 执行 git submodule update --init 命令之后生成的。如果cmake低于3.15, gcc/g++ 低于 7.0 ,请根据文档进行安装。查看此时grpc目录内容的大小du -h --max-depth=1, 可以看到。升级gcc和gdb的版本,至少需要6.3以上的版本。,下载完后会发现整个grpc目录内容明显变大=注: 文件路径是可以指定的, 一般选择在。里面编译安装对应的 protobuf。编译helloworld。再次查看 目录大小,

2022-11-27 09:37:08 305

原创 死锁检测组件

死锁,是指多个线程或者进程在运行过程中因争夺资源而造成的一种僵局,当进程或者线程处于这种僵持状态,若无外力作用,它们将无法再向前推进。如下图所示,线程 A 想获取线程 B 的锁,线程 B 想获取线程 C 的锁,线程 C 想获取线程 D 的锁,线程 D 想获取线程 A 的 锁,从而构建了一个资源获取环。死锁的存在是因为有资源获取环的存在,所以只要能检测出资源获取环,就等同于检测出 死锁的存在。

2022-11-26 22:47:24 56

原创 kafka开发环境搭建

登陆网址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载完成后,Linux默认下载位置在当前目录下的Download或下载文件夹下,通过命令cd ~/Downloads或cd ~/下载即可查看到对应的文件。

2022-11-22 18:27:08 305

原创 Nginx入门笔记

代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过 HTTP 以外的协议将请求传递给应用服务器。压缩响应通常会显着减少传输数据的大小。然而,由于压缩在运行时发生,它还可以增加 相当大的处理开销,这会对性能产生负面影响 在向客户端发送响应之前,NGINX 会执行压 缩,但不会“压缩”已压缩的响应(例如,由代理的服务器)。当启用缓存时,NGINX 将响应保存在磁盘缓存中,并使用它们来响应客户端,而不必每次都为同一内容代理请求。

2022-11-19 22:01:52 902

原创 mysql连接池和redis连接池

定义:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成 一个连接池,由程序动态地对池中的连接进行申请,使用,释放。大白话:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的 时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度, 还更加安全可靠。这里讲的数据库,不单只是指Mysql,也同样适用于Redis。

2022-11-06 21:23:58 251

原创 Redis主从同步与对象模型

为什么会涉及到这个问题?因为redis是一个内存数据库,如果此时redis是数据量已经达到了最大值,这时候我们再发送一个写命令去操作redis,此时如何定义我们的行为。这时候就涉及到淘汰策略的问题。

2022-10-31 21:15:21 28

原创 Redis源码分析-存储原理与数据模型

redis源码学习redis是单线程,分治 , 内存wsl2安装安装 WSL | Microsoft Docsvscode开始通过 WSL 使用 VS Code | Microsoft Docsc/c++基本配置Get Started with C++ and Windows Subsystem for Linux in Visual Studio Code建议学习方法1. 首先定一个小的主题,预期要得到的效果;2. 准备测试数据以及调试环境;3. 查看流程,把.

2022-10-28 15:44:23 657

原创 协程学习笔记

ntyco协程学习

2022-10-15 20:43:10 61

原创 统一事件源

一种典型的解决方案是:把信号的主要处理逻辑放到程序的主循环中,当信号处理函数被触发时,它只是简单地通过通知主程序接受到的信号,并把信号传递给主循环,主循环再根据接收到的信号值执行目标信号对应的逻辑代码。这里的解决方案是,信号处理函数仅仅发送信号通知程序主循环,将信号对应的处理逻辑放在程序主循环中,由主循环执行信号对应的逻辑代码。一般的信号处理函数需要处理该信号对应的逻辑,当该逻辑比较复杂时,信号处理函数执行时间过长,会导致信号屏蔽太久。是的,但定时事件是非必须立即处理的事件,可以允许这样的情况发生。

2022-09-22 09:36:49 31

原创 C++11 function、bind、可变参数模板

在设计回调函数的时候,无可避免地会接触到可回调对象。在C++11中,提供了std::function和 std::bind两个方法来对可回调对象进行统一和封装。C++语言中有几种可调用对象:函数、函数指针、lambda表达式、bind创建的对象以及重载了函数调用 运算符的类。和其他对象一样,可调用对象也有类型。例如,每个lambda有它自己唯一的(未命名)类类型;函数及函数指针的类型则由其返回值类型和实参类型决定。

2022-09-15 09:25:41 385

原创 C++11 条件变量

互斥量是多线程间同时访问某一共享变量时,保证变量可被安全访问的手段。但单靠互斥量无法实现线 程的同步。线程同步是指线程间需要按照预定的先后次序顺序进行的行为。C++11对这种行为也提供了 有力的支持,这就是条件变量。条件变量位于头文件condition_variable下。条件变量使用过程:1. 拥有条件变量的线程获取互斥量;2. 循环检查某个条件,如果条件不满足则阻塞直到条件满足;如果条件满足则向下执行;

2022-09-14 16:48:59 541

转载 IO_uring

iouring

2022-09-06 22:07:48 90

原创 定时器方案,红黑树,时间轮

定时器、时间轮

2022-09-02 21:48:31 187

原创 NDS教程

DNS协议

2022-08-31 22:11:58 381

原创 守护进程笔记

守护进程编写规则 (1)调用umask(0); umask是个函数,用来限制(屏蔽)一些文件权限的。 (2)fork()一个子进程(脱离终端)出来,然后父进程退出( 把终端空出来,不让终端卡住);固定套路 fork()的目的是想成功调用setsid()来建立新会话,目的是 子进程有单独的sid;而且子进程也成为了一个新进程组的组长进程;同时,子进程不关联任何终端了;#include <stdio.h>#include <s...

2022-01-22 20:59:59 50

原创 内核:linux进程原理

一、进程原理1、进程 Linux内核把进程称为任务(task),进程的虚拟地址空间分为用户虚 拟地址空间和内核虚拟地址空间,所有进程共享内核虚拟地址空间,每个 进程有独立的用户空间虚拟地址空间。 进程有两种特殊形式:没有用户虚拟地址空间的进程称为内核线程, 共享用户虚拟地址空间的进程称为用户线程。通用在不会引起混淆的情况下把用户线程简称为线程。共享同一个用户虚拟地址空间的所有用户线程组成一个线程组。2、Linux进程四要素:a.有一段程序供其执行。b.有进程专用的系...

2022-01-08 19:25:28 737

原创 Redis协议与异步方式

redis网络层eactor并发处理连接,线程串行处理命令;单reactor,一个线程同时处理命令+网路IO (mysql则是一个连接一个线程处理)redis pipeline redis pipeline 是一个客户端提供的,而不是服务端提供的;pipeline就是多个请求依次发送出去,然后依次接收回包对于request操作,只是将数据写到fd对应的写缓冲区,时间非常快,真正耗时操作在读取 response;send这是将数据写到写缓冲区,真正的发送...

2021-12-05 14:58:56 1088

原创 Redis相关命令以及持久化

RedisRedis 是Remote Dictionary Service 的简称;也是远程字典服务;Redis 是内存数据库,KV数据库,数据结构数据库;Redis 应用非常广泛,如Twitter、暴雪娱乐、Github、Stack Overflow、腾讯、阿里巴巴、京东、华为、新浪微博等,很多中小型公司也在使用;Redis命令查看:http://redis.cn/commands.html应用记录朋友圈点赞数、评论数和点击数(hash)记录朋友圈说说列表(排序),便于快速显示

2021-12-03 22:52:46 220

原创 FastDFS单机版环境搭建

1 搭建环境ubuntu2 gcc、g++编译器ubuntu平台在线安装指令:1 apt-get install gcc2 apt-get install g++3 apt-get install build-essential4 apt-get install libtool3 Nginx的安装和配置3.1 使⽤Nginx的必备软件PCRE库PCRE库源码包下载地址: https://sourceforge.net/projects/pcre/files/p

2021-11-28 10:57:52 1954

原创 Mysql集群

再聊B+树change bufferinnodb存储引擎对非唯一辅助索引的 DML 操作进行缓冲;包含 insert buffer,delete buffer, purge buffer;change buffer 是一颗B+树,所有的非唯一辅助索引的 change buffer 存储在一棵B+树上,存储在共享存储表空间;对于非唯一辅助索引的 DML 操作不是每一次直接插入到索引页,先判断插入的非唯一辅助索引页是否在缓冲区中,如果在,直接插入;如果不在,则先放到一个 change buff

2021-10-25 18:32:20 154

原创 Mysql的缓存方案

mysql主从复制原理图1. 主库更新事件(update、insert、delete)通过io-thread写到binlog;(事务提交之后产生的文件)2. 从库请求读取binlog,通过io-thread写⼊(write)从库本地 relay log(中继⽇志);3. 从库通过sql-thread读取(read) relay log,并把更新事件在从库中执⾏(replay)⼀遍;读写分离当我们写完主数据库之后再去读从数据库,读到的数据不一定是最新的数据。最终..

2021-10-23 22:29:38 198

原创 Mysql事务

目的事务将数据库从一种一致性状态转换为另一种一致性状态;组成事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成;特征在数据库提交事务时,可以确保要么所有修改都已经保存,要么所有修改都不保存;事务是访问并更新数据库各种数据项的一个程序执行单元。在 MySQL innodb 下,每一条语句都是事务;可以通过 set autocommit = 0; 设置当前会话手 动提交;事务控制语句-- 显示开启事务START TRANSACTION | BEGI

2021-10-22 22:52:15 38

原创 用户态协议栈之协议栈设计

用户态协议栈

2021-10-21 23:10:08 239

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除