InfraPub 为您找到相关结果 98

系统分析工具 Sysdig 详解

=80 and evt.buffer contains GET查看机器所有的SQL select查询:sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT查看本地Apache对外部MySQL的实时查询:sysdig -s 2000 -A -c echo_fds fd.sip=192.168.30.5 and proc.name=apache2 and evt.buffer contains SELECT 硬盘 I/O 查看使用硬盘带宽最多的进程:sysdig -c topprocs_file列出使用大量文件述符的进程:sysdig -c fdcount_by proc.name "fd.type=file"查看读写字节数最频...阅读全文

博文 2020-08-09 14:09:05 debian.cn

Linux Systemd被爆远程漏洞 CVE-2017

"dns_packet_new" 函数中, 它是一个 dns 响应处理程序组件, 它为本地应用程序提供网络名称解析。 根据星期二发布的一个公告, 当系统试图在攻击者控制的 dns 服务上查找主机名时, 经过精心构造的恶意 dns 响应,可以远程崩溃 " systemd-resolved " 程序。 最终, 大量 dns 响应会溢出目标计算机的缓冲区, 从而使攻击者改写其内存,引发远程代码执行。这意味着攻击者可以通过其恶意的 dns 服务,在目标系统或服务器上,远程执行任何恶意软件。 ubuntu 开发者Chris Coulson在开发规范中这样述, “直到 233版本的 systemd , certain sizes passed to dns_packet_new in systemd-resolved can...阅读全文

博文 2017-07-02 09:39:36 9445 影响多种Linux系统

7大维度看国外企业为啥选择gRPC打造高性能微服务

解释,否则错误很容易产生,事情很容易被拖延。 以下是在选择框架时的一些设计考虑因素: 强类型 - 消息是否是强类型的?如果通过服务边界发送的消息清晰可见,那么可以消除由于类型而造成的设计和运行时错误。 打开解释 - 能够直接从服务API规范生成客户端库,减少了误解的问题。错误条件 - 有一套明确定义的错误代码可以更容易一致地交流问题。 文档 - 服务API应该是易读易懂的。定义服务API的格式应该尽可能清楚,准确地述端点。 版本控制 - 更改是不可避免的,这是一个很好的选择,在某些时候,服务API将需要修改。所使用的消息传递格式和服务定义可以影响修改API并将其部署到生产的容易程度。是否有明确的路径来增加版本及其相应的库,并推出更改? 微服务最佳实践,为什么可扩展性是重要的 除了上面列出的...阅读全文

博文 2018-03-19 17:51:32 debian.cn

Linux系统诊断-内存基础

谈及linux内存,很多时候,我们会关注free,top等基础命令。当系统遇到异常情况时,内存问题的根因追溯,现场诊断时,缺乏深层次的debug能力。本篇幅不做深层讨论,能把当前系统的问题述清楚,是每个SRE应该具备的最基础能力。free========2.1 free命令原理free是通过查看 /proc/meminfo 来获取内存的使用情况。但是 /proc/meminfo 这个文件又是怎么来的?我们先了解下 /proc 目录:/proc 是一个虚拟文件系统,该目录下的所有文件都是伪文件,该类文件只存在于内存中,并不占用空间——使用 du -sh 即可验证,该模具路下的磁盘占用都是0。/proc 下的所有文件都是内核调用proc_create() 接口来创建的虚拟条目。/proc 中...阅读全文

博文 2021-02-11 14:22:42 SegmentFault 思否

Kubernetes 部署 Nacos 1.4 集群 · 小豆丁

性: 服务发现: 支持 DNS 与 RPC 服务发现,也提供原生 SDK 、OpenAPI 等多种服务注册方式和 DNS、HTTP 与 API 等多种服务发现方式。 服务健康监测: Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。 动态配置服务: Nacos 提供配置统一管理功能,能够帮助我们将配置以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态 DNS 服务: Nacos 支持动态 DNS 服务权重路由,能够让我们很容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。 服务及其元数据管理: Nacos 支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的述、生命周期、服务的静...阅读全文

博文 2021-02-24 10:10:29 www.mydlq.club

Docker 核心原理

对 Docker 的使用大部分都比较熟悉,但是说到 docker 的实现原理很多人还是一知半解。我把在团队内部做的一次 Docker 核心原理分享总结到文章里,以供参考。 Docker 的优势 Build once, Run anywhere 上面这句话很精辟的总结了 docker 的优点。我从下面几点具体述 docker 带给开发者的能力 应用标准化 无论什么语言开发的应用,我们都能用 dockerfile 和构建脚本方便的进行应用构建打包,代码库 + 构建 + registry 统一了 CI/CD 流程,也提升了效率。 环境一致 由于应用和依赖全部构建成镜像,做到了一次构建多次交付,无论是开发,测试还是上线环境都是一致的。大大提高了开发效率 应用隔离 由于通过 docker 部署的应...阅读全文

博文 2021-02-25 09:14:23 lxkaka

Debian 9 使用kubeadm创建 k8s 集群(下)

; 我们告诉kubeadm使用相同的子网。第二个任务在/home/sammy创建一个.kube目录。 此目录将保存配置信息,例如连接到群集所需的管理密钥文件以及群集的API地址。第三个任务将从kubeadm init生成的/etc/kubernetes/admin.conf文件复制到非root用户的主目录。 这将允许您使用kubectl访问新创建的集群。最后一个任务运行kubectl apply安装Flannel 。 kubectl apply -f descriptor.[yml|json]是告诉kubectl创建述descriptor.[yml|json]文件中descriptor.[yml|json]的对象的语法。 kube-flannel.yml文件包含在集群中设置Flannel所需的...阅读全文

博文 2019-05-13 22:57:41 debian.cn

谷歌公开了内部管理Infra层的两个工具的Paper

随着企业的逐步成熟,他们会开发更多工具。在Google,我们持续创建新的外部和内部服务,以及支持这些服务的基础架构。 从2013年起,我们开始放弃之前用来更新和维护服务的简单的自动化工作流。每个服务都要求复杂的更新逻辑,并且还需要适应基础架构的变化,经常性的集群的启动关闭等等。配置多个,互相交互的服务的工作流变得难以维护。 我们需要一种全新的方案来适应业务的增长以及所涉及到的配置的复杂性。为此,我们开发了声明式的自动化系统,作为统一的控制层,并且取代了工作流。这个系统包括两个主要的工具:Podspec,述服务基础架构的工具,和Annealing,更新生产环境来匹配Prodspec输出的工具。本文讨论我们解决过的问题,以及我们所选择的架构。 Prodspec和Annealing有一个根本共...阅读全文

博文 2023-01-08 11:23:20 CSDN博客

Linux 中使用 Fio 测评硬盘性能

Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。 Fio 接受一种非常简单易于理解的文本格式的任务述。软件默认包含了几个示例任务文件。 Fio 展示了所有类型的 I/O 性能信息,包括完整的 IO 延迟和百分比。 它被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持...阅读全文

博文 2018-08-15 19:18:24 debian.cn

Golang 应用集成 Prometheus 统计数据支持

基本概念 Prometheus 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB):属于同一指标名称,同一标签集合的、有时间戳标记的数据流。除了存储的时间序列,Prometheus 还可以根据查询请求产生临时的、衍生的时间序列作为返回结果。 样本在时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成: 指标(metric):指标名称和述当前样本特征的 labelsets; 时间戳(timestamp):一个精确到毫秒的时间戳; 样本值(value): 一个 folat64 的浮点型数据表示当前样本的值。 {

博文 2022-11-24 10:33:09 CSDN博客

AWS EKS 添加IAM用户角色 - SRE运维博客

:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ] } 创建eks-admin角色并附加AmazonEKSAdminPolicy策略 述eks-admin角色 aws iam get-role --profile terraform --role-name eks-admin 创建AmazonEKSAssumePolicy允许承担角色的策略 { "Version": "2012-10-17", "Statement...阅读全文

博文 2022-12-19 21:15:27 博客园

C++ 夺冠!成为 TIOBE 2022 年度编程语言

应、Hao 123 等等。具体的计算方式详见:https://www.tiobe.com/tiobe-index/programming-languages-definition/。请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。 这个排行榜可以用来考察你的编程技能是否与时俱进,也可以在开发新系统时作为一个语言选择依据。 详细榜单信息可参考 TIOBE 官网:https://www.tiobe.com/tiobe-index 《2022-2023 中国开发者大调查》重磅启动,欢迎扫下方二维码,参与问卷调研,更有 iPad 等精美大礼等你拿!...阅读全文

博文 2023-01-10 06:42:12 CSDN博客

Twitter确认接受440亿美元收购提议 埃隆·马斯克将完全控制该公司

,该公司以其目前的形式既不会繁荣,也不会为这种社会需要服务。Twitter需要作为一家私营公司进行转型"。 在周五提交的一份美国证券交易委员会文件中,马斯克阐述了他为这笔交易筹资的计划,其中包括250亿美元的贷款和220亿美元的个人股权。分析师认为,这些贷款可能使Twitter每年的服务成本高达10亿美元,或约占该公司年收入的20%。 在马斯克宣布收购计划后不久,Twitter的董事会曾制定了一项"毒丸"措施,表明它打算抵制马斯克的收购。目前还不清楚是什么导致该公司改变了主意。纽约时报》周一的一篇报道述了Twitter员工对这一消息的分歧,他们几乎没有收到有关正在进行的谈判的信息。 目前还不清楚马斯克将对Twitter产生什么影响,或者他将从哪里开始改变Twitter。当...阅读全文

3个 Linux 命令让你看起来很忙:摸鱼的技巧

到的最常见的工具之一是 Nmap,这是一个开源的安全扫器。事实上,它在好莱坞电影中常常被用作在屏幕上演示黑客行为的工具,很多电影,从《Matrix Reloaded》重装到《The Bourne Ultimatum》、《The Girl with the Dragon Tattoo》,甚至《Die Hard 4》里面也用到了它。 当然,你可以创建自己的组合,使用诸如 screen 或 tmux 之类的终端多路复用器来启动你希望的任何程序,显示你想要的数据。 那么,你是如何让你的电脑看起来很忙的呢?...阅读全文

博文 2019-09-28 15:48:43 debian.cn

linux下查看系统socket读写缓冲区_eyucham的专栏

(int argc,char **argv) { int err = -1; /* 返回值 */ int s = -1; /* socket述符 */ int snd_size = 0; /* 发送缓冲区大小 */ int rcv_size = 0; /* 接收缓冲区大小 */ socklen_t optlen; /* 选项值长度 */ /* * 建立一个TCP套接字 */ s = socket(PF_INET,SOCK_STREAM,0); if( s == -1){ printf("建立套接字错误\n"); return -1; } /* * 先读取缓冲区设置的情况 * 获得原始发送缓冲区大小 */ optlen = sizeof(snd_size); err = getsockopt(s...阅读全文

博文 2021-01-26 16:21:35 CSDN博客

kubectl 创建 Pod 背后到底发生了什么?—探寻 Kubectl 创建 Pod 的原理

否需要触发其他操作,例如记录命令(用来进行回滚或审计)。 在 kubectl 判断出要创建一个 Deployment 后,它将使用 DeploymentV1Beta1 生成器从我们提供的参数中生成一个运行时对象。 API 版本协商与 API 组 为了更容易地消除字段或者重新组织资源结构,Kubernetes 支持多个 API 版本,每个版本都在不同的 API 路径下,例如 /api/v1 或者 /apis/extensions/v1beta1。不同的 API 版本表明不同的稳定性和支持级别,更详细的述可以参考 Kubernetes API 概述。 API 组旨在对类似资源进行分类,以便使得 Kubernetes API 更容易扩展。API 的组名在 REST 路径或者序列化对象的...阅读全文

博文 2022-04-18 16:18:04 CSDN

改善 Debian Linux 软件包管理的七款工具

说,你可以用它来设定软件包安装时向你提出哪种类型的问题、重置问题的优先级,或者尽管软件包破损仍强行安装。 dpkg-reconfigure可用来配置基于Debian系统的几乎方方面面。由于出现了配置安装系统的其他工具,它的多用途性在丧失,不过dpkg- reconfigure仍可用于配置诸如此类的特性:时区、视频驱动程序、打印机和扫仪。Ubuntu弃用了dpkg- reconfigure,但是它在其他基于Debian的发行版中仍很有用。 4.netselect-apt 如今,互联网连接的速度已经非常快。然而,一些软件包代码库的速度仍比其他代码库要快;在使用高峰期间,流行的软件包代码库会降低速度。有时候,根本就缺少高速连接。 对于注重速度的那些人来说,netselect-apt为你的位置列出...阅读全文

博文 2021-01-28 17:50:21 debian.cn

十个增加 Linux Shell 脚本趣味的小工具

nmap或者port扫器: # find out if TCP port 25 open or not (echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25 close" 你可以 使用循环来查找开着的端口: echo "Scanning TCP ports..." for p in {1..1023} do (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open" done 输出: Scanning TCP ports... 22 open 53 open 80 open 139 open 445...阅读全文

博文 2018-04-09 09:38:50 debian.cn

如何校验 Debian 软件包的 MD5

apt install debsums 现在可以了解如何使用debsums工具,来校验已安装软件包的MD5和了。 说明:我在下面的所有命令中使用了sudo,因为普通用户可能没有某些文件的读取权限。 此外,来自debsums命令的输出在左边显示了文件位置,在右边显示了检验结果。你会得到三种可能的结果,它们包括: OK――表明某个文件的MD5和是好的。 FAILED――表明某个文件的MD5和不匹配。 REPLACED――意味着某个特定文件已被来自另一个软件包的文件所更换。 如果你不用任何选项来运行,debsums会对照常规的md5sum文件来校验系统上的每个文件。 $ sudo debsums 扫文件系统、寻找MD5和 /usr/bin/a11y-profile-manager-indicator...阅读全文

博文 2021-01-28 17:50:18 debian.cn

图解 Debian 系统通用安装教程

是纯净安装,那肯定是纯净为首了,对于软件包流行度调查,不参加即可。 不扫其他DVD,不使用网络镜像。 我为了速度快所以用DVD-1完整镜像做了教程,如果是网络安装镜像的话不会有下面这个提示,对于网络镜像站点也选择不使用就行了。 如果非要选择,在Asia的China中选ftp.cn.debian.org。 选择软件包进行安装,当然是全不选,需要的后面会手动安装,在这里安装的桌面环境话会连接安全服务器更新内核,那速度真等着哭吧。 安装完成后就是配置Grub了,如果你不想用Grub替换MBR,就选手动输入。 然后输入你前面配置的挂载根目录/的文件系统,像我前面用的是/sda1,这里就输入/dev/sda1。 安装完成后,拔掉启动U盘,直接点继续。 开机后进入Grub引导界面,如果没有替换MBR的...阅读全文

博文 2017-07-13 12:52:56 debian.cn

Debian 相比 Ubuntu 有哪些不同之处

Debian 和 Ubuntu 是有史以来最具有影响力的两大 Linux 发行版。在大约285个活跃发行版当中,有132个源自Debian (也包括Ubuntu本身),另有67个直接源自Ubuntu。不过在Ubuntu和Debian之间作一个选择并非易事。说到底,选择Ubuntu还是选择Debian用来制定业务战略,取决于你在平台支持、用户控制级别、易用性及另外一些关键问题方面的使用偏好。 如果要求你解释一下 Debian和Ubuntu 之间的区别,大多数会这样回答:Ubuntu是面向新手的发行版,而Debian是面向专家的发行版。这样的述部分正确,但同时夸大其辞。Debian的声誉建立在10多年前的状态;如今,允许每个用户可以选择众多的实际控制特性。 同样,从设计概念来看,Ubuntu...阅读全文

博文 2017-12-22 23:41:07 debian.cn

Gitlab CI 配置文件 .gitlab

本文档是述 .gitlab-ci.yml 详细用法的下半部分,上半部分的内容请参考这里。.gitlab-ci.yml 文件被用来管理项目的 runner 任务。如果想要快速的了解GitLab CI ,可查看快速引导。 该文件存放于项目仓库的根目录,它定义该项目如何构建。 参考阅读:Gitlab CI 配置文件 .gitlab-ci.yaml 详解(上) artifacts 注意: 非Windows平台从GitLab Runner v0.7.0中引入。 Windows平台从GitLab Runner V1.0.0中引入。 在GItLab 9.2之前,在artifacts之后存储缓存。 在GItLab 9.2之后,在artifacts之前存储缓存。 目前并不是所有的executors都支持...阅读全文

博文 2018-12-12 21:09:02 ci.yaml 详解(下)

我要彻底放弃 Debian 操作系统!-Michael Stapelberg

/2019-02-15-debian-debugging-devex/)所述的那样,使用Debian进行开发的体验也有很多不足之处。 其他的想法 到这里,这篇文章已经很长了,希望你已经对我的动机有了一个粗略的了解。 尽管我上面述了Debian的种种缺点,但压倒骆驼的最后一根稻草实际上还是其缺乏积极的前景。我的很多想法在我看来都很有吸引力,但是,根据以前的项目情况,我觉得在Debian的项目中这些想法不可能会实现。 我打算发布一些有关具体改进操作系统的文章。敬请关注。 最后,我希望这篇文章能够给部分人一些启示,让他们来改善Debian的开发者体验。 原文:https://michael.stapelberg.ch/posts/2019-03-10-debian-winding-down/ 本文为...阅读全文

博文 2019-03-22 17:01:23 Michael Stapelberg

最全 MongoDB 基础教程

MongoDB 创建数据库 - 格式:use DATABASE_NAME - use ruochen - db 创建数据库需要插入一条数据才会在列表中显示 - db.ruochen.insert({'name': '若尘'}) - show dbs 删除数据库 格式:db.dropDatabase() use ruochen db.dropDatabase() show dbs 创建集合 - 格式:db.createCollection(name, options) - name: 要创建的集合名称 - options: 可选参数,指定有关内存大小及索引的选项 字段 类型 述 capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它...阅读全文

博文 2021-02-22 07:45:45 OSChina

细数k8s支持的4种类型的container - 侃豺小哥

截止目前k8s1.18,k8s已经支持标准容器,sidecar容器,init 容器,ephemeral 容器 4种类型的containers。本文我们详细介绍一下这4种容器的特性已经使用场景。 Ephemeral 容器 临时容器与其他容器的不同之处在于,它们缺少对资源或执行的保证,并且永远不会自动重启,因此不适用于构建应用程序。临时容器使用与常规容器相同的 ContainerSpec 段进行述,但许多字段是不相容且不允许的。 临时容器没有端口配置,因此像 ports,livenessProbe,readinessProbe 这样的字段是不允许的。 Pod 资源分配是不可变的,因此 resources 配置是不允许的。 有关允许字段的完整列表,请参见临时容器参考文档。 临时容器是使用...阅读全文

博文 2021-08-20 11:45:32 博客园

Kafka生产问题总结以及性能优化

"。 异常中最关键的信息是“ Too many open flies”,这是一种常见的 Linux 系统错误,通常意味着文件述符不足,它一般发生在创建线程、创建 Socket、打开文件这些场景下 。 在 Linux系统的默认设置下,这个文件述符的个数不是很多 ,通过 ulimit -n 命令可以查看:一般默认是1024,可以将该值增大,比如:ulimit -n 65535 2.1.8 消息传递保障 at most once(消费者最多收到一次消息,0–1次):acks = 0 可以实现。 at least once(消费者至少收到一次消息,1–多次):ack = all 可以实现。 exactly once(消费者刚好收到一次消息):at least once 加上消费者幂等性可以实现,还可以...阅读全文

博文 2023-01-05 23:16:48 CSDN博客

Monit:开源服务器监控工具

服务(service)。看监控语法: check <类型> <服务名> [PATH ] [ADDRESS ] 其中类型是monit支持的监控类型,一共有:system、file、process、fifo、filesystem、directory、host、network、program。服务名必需是英文且唯一,不可以出现重复!后面的带[]是根据类型需要添加的。 服务类型语法 每个服务条目由关键字组成check,后面是服务类型。每个条目需要唯一的述性名称,可以自由选择。此名称由Monit用于在内部和与用户的所有交互中引用该服务。 目前,支持九种类型的检查语句: 进程 CHECK PROCESS 阅读全文

博文 2023-04-12 15:21:43 阿里云开发者社区

HTML 5.1 — 14 项新增特性及使用案例

让你可以指定一个多个可选的图像来源,对应于不同的像素分辨率。它将允许浏览器根据用户设备的不同选择合适质量的实现来进行显示。例如,对于使用网络比较慢的移动设备的用户,显示一张低分辨率的图片会比较好。 你可以使用 srcset 属性并且带上它自有的 x 修饰符来述每一个图片的像素比例, 如果用户的像素比例等于 3,就会显示 high-res 这张图片。 除了像素比例之外,你也可以选择使用 w 修饰符来指定不同尺寸大小的图片。在如下示例中,high-res 图片被定义成在...阅读全文

博文 2021-01-28 17:50:20 debian.cn

Apollo 配置中心简单介绍

。 Config config = ConfigService.getConfig("FX.Hermes.Producer"); 对这种情况的配置获取规则,简而言之如下: 首先获取当前应用下的FX.Hermes.Producer namespace的配置然后获取hermes应用下FX.Hermes.Producer namespace的配置上面两部分配置的并集就是最终使用的配置,如有key一样的部分,以当前应用优先 图示如下: 通过这种方式,就实现了对框架类组件的配置管理,框架组件提供方提供配置的默认值,应用如果有特殊需求,可以自行覆盖。 4.5 总体设计 上图简要述了Apollo的总体设计,我们可以从下往上看: Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端...阅读全文

博文 2021-04-09 17:53:51 CSDN

基于thanos搭建分布式prometheus

prometheus存在单点问题,具体痛点可以这么述: prometheus单机存储和抓取能力都有上限,容易单点故障。 虽然有一种方式是通过部署N个prometheus分别抓取不同的target来分摊压力的,但是grafana就要为不同的图表配置不同的prometheus地址,复杂程度比较棘手。 thanos+prometheus可以解决这个问题,它提供了一个核心能力: 1,thanos querier组件可以反向代理到N个prometheus,然后grafana直接指向thanos querier即可,thanos querier会从N个prometheus同时查询数据,返回满足Promql的数据结果; 2,如果N个prometheus抓取的数据存在重复的,那么thanos...阅读全文

博文 2021-03-01 13:02:46 鱼儿的博客

Go 语言的大版本更新:Go 2.0 安排上了

废话不多说,先来看看 Go 2.0 有哪些值得关注的内容: 最大程度保持对 1.x 的兼容,以避免分裂 Go 语言生态系统 采用增量升级的方式,而非单独发布重大更新版本 实施新的提案评估流程,以评估尚未解决且被标记为提案的 issue 将会在 Go 1.13 版本中选择 Go 2 部分的提案 背景 早在2017年的 GopherCon 大会上,Russ Cox(Go 核心开发团队的技术 leader)就已经正式开始思考 Go 的下一个大版本(相关文章)。当时官方非正式地将它称为 Go 2,但我们知道,所谓的 Go 2.0 并非一个单独的重大更新版本,而是通过“增量更新(incremental)”的方式以逐渐抵达 "Go 2.0"。所以本文对这个未来版本的称号 —— 也暂且用 Go 2 来...阅读全文

聊聊很重要的内核技术eBPF

或bpftrace等项目间接使用eBPF,这些项目在eBPF之上提供了抽象,并且不需要直接编写程序,而是提供了指定基于意图的定义的功能,然后使用eBPF实施。 如果不存在更高级别的抽象,则需要直接编写程序。 Linux内核希望eBPF程序以字节码的形式加载。虽然当然可以直接编写字节码,但更常见的开发实践是利用LLVM之类的编译器套件将伪C代码编译为eBPF字节码。 在编写eBPF程序之前,需要简单了解几个概念。 1)map(映射) :BPF最令人着迷的方面之一是,内核上运行的代码和加载了该代码的程序可以在运行时使用消息传递相互通信。 BPF映射是驻留在内核中的键/值存储。任何BPF程序都可以访问它们。在用户态中运行的程序也可以使用文件述符访问这些映射。只要事先正确指定数据大小,就可以在映射...阅读全文

博文 2020-08-16 11:08:44 debian.cn

HAProxy用法详解 最详细中文文档

分配器在固定大小的内存池中可实现即时内存分配,这能够显著减少创建一个会话的时长; 6,树型存储:侧重于使用作者多年前开发的弹性二叉树,实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列; 7,优化的HTTP首部分析:优化的首部分析功能避免了在HTTP首部分析过程中重读任何内存区域; 8,精心地降低了昂贵的系统调用,大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件述符的启用和禁用等; 所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚至于在非常高的负载场景中,5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象,这意味着HAProxy进程消耗比系统空间消耗低20倍以上。因此,对OS进行性能调优是非常重要的...阅读全文

博文 2014-05-10 17:14:46 debian.cn

最全的 DevOps 工具集合

Groovy 的领域特定语言,替代 Apache Maven 使用的 XML 格式来声明项目配置。 MSBuild Microsoft Build Engine(通常称为 MSBuild)是用来托管代码及原生 C++ 代码的免费开源构建工具集,它之前是.NET Framework 的一部分。Visual Studio 依赖 MSBuild(反之则不然)。 Rake Rake 是一个软件任务管理和自动化构建工具。它允许用户指定任务并述依赖关系。你也可以对命名空间中的组任务执行这些操作。 JFrog Artifactory JFrog Artifactory 这款工具可用来存储构建过程的二进制输出,以备分发和部署之用。Artifactory 支持许多软件包格式,如 Maven、Debian、npm...阅读全文

博文 2021-05-26 14:35:21 博客园

Web前端知识体系精简

hash的同源url也支持。 7、HTML5离线缓存 HTML5离线缓存又叫Application Cache,是从浏览器的缓存中分出来的一块缓存区,如果要在这个缓存中保存数据,可以使用一个述文件(manifest file),列出要下载和缓存的资源。 manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。manifest 文件可分为三个部分: - CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存 - NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存 - FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面) 离线缓存为应用带来三个优势: 离线浏览 - 用户可在应用离线时使...阅读全文

博文 2021-01-28 17:50:33 debian.cn

使用 MongoDB 之前应该知道的 14 件事

有一个“填充因子(padding factor)”,为文档增长提供空间。 你也许会想,你可以通过不建立数组索引来绕开这个问题。遗憾的是,没有索引,你会遇到其他问题。因为文档会从头到尾扫,找到一个接近数组尾部的元素需要花更多的时间, 大部分处理这个文档的操作都会变慢 。 忘记聚合情况下的阶段排序 在有查询优化器的数据库系统中,你编写的查询是说明你想要什么而不是如何获取它。这就像在餐馆中点餐;你通常只需要点菜,而不必对厨师发出详细的指令。 在 MongoDB 中,你是对厨师发指令。例如,你需要通过$match 和$project 确保管道中的数据尽早减少,排序只在数据减少时发生一次,查找按照你希望的顺序执行。查询优化器省去了不必要的工作,优化阶段顺序,选择连接类型,这会把你宠坏。MongoDB...阅读全文

域名与商标: 如何防止域名被仲裁

被投诉人选择一人独任,则最终由一人独任审理,对另外一种情况我则没有查到具体的说法。 以上是我近期学习到的关于域名仲裁的相关内容,在这里分享给大家,由于个人理解的不同,述不一定正常,在这里仅仅是作为一个介绍,欢迎朋友们一起讨论和指正。 关于域名与商标,虽然知识产权在社会中越来越被重视和保护,但还是希望各大公司、终端自身给予高度的重视,在这个互联网时代、眼球时代和信息爆炸时代,互联网经济必然会占到越来越大的比重,最终会与实体经济平起平座,各大依托于网络的公司能在短短几年内,超越苦心经营几十年的实体企业,这都是互联网经济的威力。而域名就是企业在网络上的虚似商标,是企业的网络脸面,一些大的公司无不在自身网站的域名上不惜成本,花空心思,说明一个契合自身特色的域名是多么的重要。 当然,在这里也奉劝各位...阅读全文

博文 2019-01-18 14:59:59 debian.cn

如何写好技术文档 — 来自十多年的文档经验总结

,它的价值马上就体现出来了。而写一份文档,随着时间的推移,它的价值才会逐渐体现出来。 你可能只写一次文档,将来它会被阅读上百次、上千次,因为一份好的文档可以在未来替你向别人回答类似下面这些问题。 1. 为什么当时是这么决策的? 2. 为什么代码是这样实现的? 3. 这个项目里都有哪些概念? 4. …… 写文档同样对于写作者也有非常大的收益: - 帮你构思规范化API: 写文档的过程也是你审视你API的过程,写文档时会让你思考你API设计是否合理,考虑是否周全。如果你没法用语言将API述出来,那么说明你当前的API设计是不合理的。 - 文档也是代码的另一种展现: 比如你两年后回过头来看你写过的代码,如果有注释和文档,你可以很快速理解代码。 - 让你的代码看起来更专业: 我们都有个感觉,只要文档...阅读全文

博文 2021-07-30 16:15:13 joseph

译:零信任对 Kubernetes 意味着什么

。2024财年;国防部创建了零信任参考架构;美国国家安全局发布了一份Kubernetes 强化指南,专门述了 Kubernetes 中零信任安全的最佳实践。随着这种噪音,零信任无疑吸引了很多营销关注。但尽管有噪音,零信任不仅仅是一个空洞的术语——它代表了对未来安全的一些深刻和变革性的想法。那么具体来说,什么是零信任,为什么它突然变得如此重要?零信任对 Kubernetes 用户意味着什么?什么是零信任?正如所料,零信任从根本上讲是关于信任。它是解决安全核心问题之一的模型:是否允许 X 访问 Y?换句话说,我们是否相信 X 可以访问 Y?当然,零信任中的“零”有点夸张。要使软件正常工作,显然某些东西需要信任其他东西。因此,零信任并不是完全消除信任,而是将信任降低到最低限度(众所周知的最小特权原则)并...阅读全文

协议介绍之深入了解 gRPC

的初始连接和 stream 的 flow control window size。 Flow control 不可能被禁止掉。当 HTTP/2 连接建立起来之后,client 和 server 会交换 SETTINGS frames,用来设置 flow control window size。 Flow control 是 hop-by-hop,并不是 end-to-end 的,也就是我们可以用一个中间人来进行 flow control。 这里需要注意,HTTP/2 默认的 window size 是 64 KB,实际这个值太小了,在 TiKV 里面我们直接设置成 1 GB。 HPACK 在一个 HTTP 请求里面,我们通常在 header 上面携带很多该请求的元信息,用来述要传输的资源以...阅读全文

博文 2017-06-22 11:08:48 debian.cn

三个技巧 大幅减少 Docker 镜像体积

需要的只是 Node.js。Docker 容器应该只包含一个进程以及用于运行这个进程所需的最少的文件,你不需要整个操作系统。实际上,你可以删除 Node.js 之外的所有内容。 但要怎么做?所幸的是,谷歌为我们提供了 distroless。以下是 distroless 存储库的述: “distroless”镜像只包含应用程序及其运行时依赖项,不包含程序包管理器、shell 以及在标准 Linux 发行版中可以找到的任何其他程序。 这正是你所需要的!你可以对 Dockerfile 进行调整,以利用新的基础镜像,如下所示: FROM node:8 as build WORKDIR /app COPY package.json index.js ./ RUN npm install FROM...阅读全文

博文 2018-09-06 10:50:29 debian.cn

案例:Redis命令不当 引起数据库雪崩 造成数百万损失

服务化项目服务不可用几十分钟,造成订单数减少几十万笔,损失百万资金。 原因分析 当时是没有定位到具体的原因的,但是下面的原因也是一部分可能引起宕机的情况。 某服务化项目的业务增速非常快,在高峰期,数据库QPS突破35000,系统处于高负荷状态。 在高峰期如果同时执行几个全表扫的SQL,会造成数据库压力急剧上升,应用超时增多,前端应用超时,用户重试,流量飙升,形成了雪崩效应。 主要原因在与一些老项目的SQL查询性能较差,并且使用的主库,对数据库影响较大。数据库QPS太高,但是缓存方案因为人手原因一直没有落地,慢SQL的问题处理优先级应该提升。 改进方案 针对每个应用建一个数据库账号,严格按照规范使用 缓存优化方案即时落地,慢SQL问题优先处理,集中处理目前已经发现的慢SQL(查询时间超过1S...阅读全文

博文 2018-10-27 10:18:18 debian.cn

DPDK Graph Pipeline 框架简介与实现原理

graph 中的 node。注意此处使用的是 graph_node 结构,其中包含了本身的 node(struct node* node)以及其相邻的 node。 struct graph_node vs struct node struct node 结构体的用法仅仅是用来述对应的 node,和 graph 是没有关系的。而 struct graph_node 其实就是把 struct node 包装了一层,主要目的就是强调这个 node 在一个 graph 中。 struct rte_graph 接下来介绍 struct rte_graph(rte_*: runtime 时所用到的数据结构)的内存布局,建议先把先前的 graph walk 部分浏览一遍,以更好了解 rte_graph 是如何被...阅读全文

博文 2023-02-09 07:13:55 掘金

HTTP状态码详解

向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。参见RFC 2617。 402 该状态码是为了将来可能的需求而预留的。 403 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。 404 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404...阅读全文

博文 2021-01-28 17:50:11 debian.cn

大起底:揭开亚马逊云计算丰厚利润的秘密 - 电子商务

设计处理器的消息。亚马逊最近几年比较受欢迎的另外一个云计算产品是“Lambda”,该产品将会在某种触发条件下完成计算工作。比如一个用户在社交网络上传照片之后,系统将启动计算,自动生成一个微缩小图。上述产品被开发者述为“无服务器”,意思是服务商并不要求开发者自己来管理服务器基础设施。行业研究报告显示,亚马逊对Lambda计算服务的收费是EC2实例的两倍之多。数据存储:S3和EBS亚马逊云计算的另外一个鼻祖服务是“简单计算存储”,简称S3,产品推出于2006年,客户可用该服务在网络上保存各种数据对象,包括照片、视频或其他文件类型。科技从业者丹·阿尔瓦雷兹(Don Alvarez)是上述服务的早期用户。他早年曾经在华盛顿州西雅图的新创科技公司工作,主要为电影制片人群体开发协作软件。当年,科技公司...阅读全文

博文 2021-09-07 11:41:54 cnBeta.COM

六大算法之三:动态规划【转载】

于理论上的设计,也就是上面4个步骤的确定,一旦设计完成,实现部分就会非常简单。 使用动态规划求解问题,最重要的就是确定动态规划三要素: (1)问题的阶段 (2)每个阶段的状态 (3)从前一个阶段转化到后一个阶段之间的递推关系。 递推关系必须是从次小的问题开始到较大的问题之间的转化,从这个角度来说,动态规划往往可以用递归程序来实现,不过因为递推可以充分利用前面保存的子问题的解来减少重复计算,所以对于大规模问题来说,有递归不可比拟的优势,这也是动态规划算法的核心之处。 确定了动态规划的这三要素,整个求解过程就可以用一个最优决策表来述,最优决策表是一个二维表,其中行表示决策的阶段,列表示问题状态,表格需要填写的数据一般对应此问题的在某个阶段某个状态下的最优值(如最短路径,最长公共子序列,最大价值...阅读全文

博文 2021-07-31 07:18:53 CSDN博客

Hadoop 核心 - HDFS 分布式文件系统详解

衡量标准。 节点距离:两个节点到达最近的共同祖先的距离总和。 例如,假设有数据中心d1机架r1中的节点n1。该节点可以表示为/d1/r1/n1。利用这种标记,这里给出四种距离述。 Distance(/d1/r1/n1, /d1/r1/n1)=0(同一节点上的进程) Distance(/d1/r1/n1, /d1/r1/n2)=2(同一机架上的不同节点) Distance(/d1/r1/n1, /d1/r3/n2)=4(同一数据中心不同机架上的节点) Distance(/d1/r1/n1, /d2/r4/n2)=6(不同数据中心的节点) 机架 7.2 机架感知(副本节点选择) 1)低版本Hadoop副本节点选择 第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。 第二个副...阅读全文

Kafka 3.0新特性全面曝光,真香!

发送Fetch请求后,在超时阈值quorum.fetch.timeout.ms之后仍然没有得到Fetch响应,表示Leader疑似失败。从当前Leader收到了EndQuorumEpoch请求,表示Leader已退位。Candidate状态下,在超时阈值quorum.election.timeout.ms之后仍然没有收到多数票,也没有Candidate赢得选举,表示此次选举作废,重新进行选举。具体详细过程实现述如下:增加节点本地的current term,切换到candidate状态。自己给自己投一票。给其他节点发送RequestVote RPCs,要求其他节点也投自己一票。等待其他节点的投票回复。整个过程中的投票过程可以用下图进行表述。leader节点选举的限制每个节点只能投一票,投给自...阅读全文

博文 2022-04-28 16:02:11 mp.weixin.qq.com