InfraPub 为您找到相关结果 72

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

,包括大型软件工程项目的工作原理,而且我也明白自己多么地喜欢我的计算机系统。我非常清楚这些日子以来的闲暇时间我是如何度过的。 我会在以下各小节中逐一介绍我所面临的主要困难,讨论顺序不分先后。其中有些困难有一些相互影响——例如,如果改动后的效果更好,那么我们就有机会将包转换成更方便的机器。 Debian的变更流程 最近几年,我目前的团队在整个代码库中进行了各种大大小小的重构(涉及数千个项目),因此在关于如何有效地进行这些变更方面,我们学到了很多宝贵的经验。令我苦恼的是,Debian在各方面的工作方式几乎完全相反。我理解每个组织都不同,但我认为我的很多观点确实适用于Debian。 在Debian中,包的推送必须严格遵守一个文档——叫做Debian策略,还有个程序lintian用来保证该策略的实...阅读全文

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

分布式运行时 Dapr 知多少

制以完成诸如服务发现、流量控制、重试熔断、安全访问等,而这相关的网络控制功能就是集成在Dapr的Sidecar中,以对应用透明的方式集成进来的。整体的服务调用流程如下图所示: PS:如果对Istio熟悉的同学需要注意,二者虽然都是通过Sidecar的模式进行网络控制,但二者是有有区别的。Dapr是以API的方式,而Istio是以代理的方式(不改变HTTP请求URI)。 2. State management(状态管理) 在进行微服务开发时,绕不开的话题就是服务间的状态共享、并发一致性问题。对于状态共享,你可能会说,各个服务连接到同一个Redis实例就OK了。是,但不得不考虑潜在的更新冲突的问题。Dapr 以更友好的HTTP API的方式进行状态的存储和,同时支持通过ETags进行并发控制...阅读全文

Apache Flink 1.14 新特性预览 - OSCHINA

把 barrier 传到算子的 OutPut Buffer 的最前面,相当于它会立刻被下游的算子所到。通过这种方式可以使得 barrier 不受到数据阻塞,解决反压时候无法进行 Checkpoint 的问题。 当我们把 barrier 发下去后,需要做一个短暂的暂停,暂停的时候会把算子的 State 和 input output buffer 中的数据进行一个标记,以方便后续随时准备上传。对于多路情况会一直等到另外一路 barrier 到达之前数据,全部进行标注。 通过这种方式整个在做 Checkpoint 的时候,也不需要对 barrier 进行对齐,唯一需要做的停顿就是在整个过程中对所有 buffer 和 state 标注。这种方式可以很好的解决反压时无法做出 Checkpoint...阅读全文

博文 2021-09-05 07:26:58 中文开源技术交流社区

架构师详解 Nginx 架构

立好需要 listen 的 socket(listenfd)之后,然后再 fork 出多个 worker 进程。所有 worker 进程的 listenfd 会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有 worker 进程在注册 listenfd 读事件前抢 accept_mutex,抢到互斥锁的那个进程注册 listenfd 读事件,在读事件里调用 accept 接受该连接。当一个 worker 进程在 accept 这个连接之后,就开始请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。我们可以看到,一个请求,完全由 worker 进程来处理,而且只在一个 worker 进程中处理。 在 Nginx 服务器的运行过程中...阅读全文

博文 2018-05-01 23:10:47 debian.cn

说透IO多路复用模型_京东云开发者的博客

FD_ISSET方法来轮询文件描述符,如果数据可读,则数据即可。 举个例子,假设此时连接上来了3个客户端,connection的文件描述符分别为 4,8,12,那么其read_fds文件描述符表(bitmap结构)的大致结构为 00010001000100000…0,由于read_fds文件描述符的长度为1024位,所以最多允许1024个连接。 而在select的时候,涉及到用户态和内核态的转换,所以整体转换方式如下: 所以,综合起来,select整体还是比较高效和稳定的,但是呈现出来的问题也不少,这些问题进一步限制了其性能发挥: 文件描述符表为bitmap结构,且有长度为1024的限制。 fdset无法做到重用,每次循环必须重新创建。 频繁的用户态和内核态拷贝,性能开销较大。 需要对文件描述符表进行...阅读全文

博文 2023-01-01 15:13:50 CSDN博客

深度解密基于 eBPF 的 Kubernetes 问题排查全景图

。用户态进程这些数据后,进一步关联 Kubernetes 元数据后推送到存储端。这是整体处理过程。eBPF 的超能力体现在能订阅各种内核事件,如文件读写、网络流量等,运行在 Kubernetes 中的容器或者 Pod 里的一切行为都是通过内核系统调用来实现的,内核知道机器上所有进程中发生的所有事情,所以内核几乎是可观测性的最佳观测点,这也是我们为什么选择 eBPF 的原因。另一个在内核上做监测的好处是应用不需要变更,也不需要重新编译内核,做到了真正意义上的无侵入。当集群里有几十上百个应用的时候,无侵入的解决方案会帮上大忙。但作为新技术,人们对 eBPF 也存在些许担忧,比如安全性与探针性能。为了充分保证内核运行时的安全性,eBPF 代码进行了诸多限制,如最大堆栈空间当前为 512、最...阅读全文

博文 2022-03-21 09:11:51 joseph

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

候,消费者会去上一次提交的偏移量,自动提交默认是每5秒一次,这会导致重复消费或者丢失消息。enable.auto.commit=false,设置为手动提交。还有一个参数我们可能也需要考虑进去的:auto.offset.reset=earliest,这个参数代表没有偏移量可以提交或者broker上不存在偏移量的时候,消费者如何处理。earliest代表从分区的开始位置,可能会重复消息,但是不会丢失,消费方一般我们肯定要自己保证幂等,另外一种latest表示从分区末尾,那就会有概率丢失消息。综合这几个参数设置,我们就能保证消息不会丢失,保证了可靠性。(八)聊聊副本和它的同步原理吧?Kafka副本的之前提到过,分为Leader副本和Follower副本,也就是主副本和从副本,和其他...阅读全文

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

2017 年会是 Serverless 爆发之年吗

大量数据的功能,例如搜索这类应用,我们不需要运行一个专用服务,而是通过 FaaS 模块,通过 API Gateway 对 HTTP 访问提供响应。这样可以使得客户端和服务端都从同一个数据库中相关数据。由于原始服务使用 Java 开发,AWS Lambda(FaaS 提供者)支持 Java 功能,因此可以直接从服务端将代码移植到搜索功能,而不用重写代码。 最后,可以将其他功能用另外一个 FaaS 功能取代,因为安全原因放在服务端还不如在客户端重新实现,当然前端还是 API Gateway。 常见的 Serverless 框架介绍 Amazon 的 Lambda 产品 2014 年 11 月 14 日,AWS 发布了 AWS Lambda。AWS Lambda 是市面上最早,也是最为成熟的...阅读全文

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

理解 Linux 的虚拟内存

。 在 Linux 中,内存设置被映射为 /dev/mem,root 用户通过对这个文件读写,可以直接操作内存。 JVM 进程占用虚拟内存过多 使用 TOP 查看系统性能时,我们会发现在 VIRT 这一列,Java 进程会占用大量的虚拟内存。 导致这种问题的原因是 Java 使用 Glibc 的 Arena 内存池分配了大量的虚拟内存并没有使用。此外,Java 的文件也会被映射为虚拟内存,在虚拟机默认配置下 Java 每个线程栈会占用 1M 的虚拟内存。具体可以查看 为什么linux下多线程程序如此消耗虚拟内存。 而真实占用的物理内存要看 RES (resident) 列,这一列的值才是真正被映射到物理内存的大小。 常用管理命令 我们也可以自己来管理 Linux 的虚拟内存。 查看系统内存状...阅读全文

博文 2018-11-25 11:03:49 debian.cn

Apache Kafka发布 3.0 正式版

OffsetFetch 请求以接受多个组 ID请求 Kafka 消费者组的当前偏移量已经有一段时间了。但是获取多个消费者组的偏移量需要对每个组进行单独的请求。在 3.0 和KIP-709 中,fetch 和 AdminClient API 被扩展为支持在单个请求/响应中同时多个消费者组的偏移量。KIP-699:更新 FindCoordinator 以一次解析多个 Coordinator支持可以以有效方式同时应用于多个消费者组的操作在很大程度上取决于客户端有效发现这些组的协调者的能力。这通过KIP-699成为可能,它增加了对通过一个请求发现多个组的协调器的支持。Kafka 客户端已更新为在与支持此请求的新 Kafka 代理交谈时使用此优化。KIP-724:删除对消息格式 v0 和 v1 的支持自 2017 年...阅读全文

博文 2021-09-26 14:13:03 joseph

从 Debian 安装 Proxmox VE,并配置网络和双硬盘

经常需要的. SSD 这块硬盘的分区,因为不是直接安装的 Proxmox ,调整分区大小有风险,先保持现状吧. HDD 的话,我打算 100G 作为镜像存放(完全够了吧),剩下的作为 VM 的存储。 1234567891011121314151617[email protected]:/home/customer# lvs LV VG Attr LSize Pool Origin Data% Meta% M ove Log Cpy%Sync Convert base-9000-disk-0 hdd Vri---tz-k 20.00g vm-data vm-100-disk-0 hdd Vwi---tz-- 200.00g vm-data vm-101-cloudinit hdd Vwi...阅读全文

博文 2021-03-01 20:20:31 驱蚊器喵的插座

WebAssembly:无需容器的 Docker (下)

然地,为了让 php-wasmedge-aot 能够 index.php 文件,我们必须明确地向 WasmEdge 声明我们想要预先打开 images/php/docroot 以便在 Wasm 应用程序的上下文中作为 /docroot 进行访问。这显而易见展示了 Wasm 除了可移植性之外的最大优势之一。 我们得到了更佳的安全性,因为除非明确说明,否则无法访问任何内容。$ wasmedge --dir /docroot:$(pwd)/images/php/docroot \ build-output/php/php-7.4.32/bin/php-wasmedge-aot -f /docroot/index.php

Hello from PHP...阅读全文

博文 2023-01-03 06:39:46 spider

译:Kubernetes 最佳实践

(RBAC)在 K8s 集群中使用 RBAC 对于正确保护系统至关重要。可以为用户、组和 service account 分配权限,以在特定命名空间(角色)或整个集群(ClusterRole)上执行允许的操作。每个角色可以有多个权限。要将定义的角色绑定到用户、组或 service account,使用 RoleBinding 或 ClusterRoleBinding 对象。RBAC 角色授予应设置为使用最小权限原则,即仅授予所需的权限。例如,管理员组可能有权访问所有资源,而运维人员组可能能够部署,但不能 secret。在外部托管Kubernetes集群(使用云服务)在自己的硬件上托管 K8s 集群可能是一项复杂的工作。云服务将 K8s 集群作为平台即服务 (PaaS) 提供,例如 Azure 上...阅读全文

博文 2022-09-13 19:32:21 atbug.com

Git 介绍与使用详解

没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。举个例子,要浏览项目的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中。 你能立即看到项目历史。 如果你想查看当前版本与一个月前的版本之间引入的修改,Git 会查找到一个月前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理。 2.安装、配置Git 2.1GUI可视化界面推荐 1.GitForWindows https://gitforwindows.org/ 自带GIT BASH和GIT GUI 2.TortoiseGit https://tortoisegit.org/download/ 3...阅读全文

博文 2017-02-25 09:00:27 程序员

Cortex: 高可用和水平扩展Prometheus监控系统

高可用性。使Prometheus高可用的一种方式是运行多个实例去scraping相同的作业。这些实例在抓取指标时会因微小的时间间隔差异而在数据中产生细微差异。此外,如果其中一个实例宕机了几个小时,那么当查询转发到该实例时,将会出现数据空白。如果我们使用grafana这样的工具将指标展示为图形,我们可能会得到不同的样本值或有数据缺失的图形。可以将Cortex配置为从多个HA Prometheus实例数据。它从一个主实例main接受指标,并从其他实例放弃该度量。一旦这个副本掉线,Cortex会无缝切换到另一副本并将其标记为主副本main。为此,Cortex着眼于两个标签,一个共同的标签与一个集群(或一组Prometheus)相关联,另一个识别副本。全局指标视图可以将Prometheus实例配...阅读全文

博文 2021-10-09 17:00:22 知乎

Monit:开源服务器监控工具

group是允许访问Monit的Web界面的组名称 只读用户 最后,可以将一些用户定义为只读。只读用户可以Monit网页,但无法访问按钮,并且无法从Web界面更改服务。 set httpd port 2812 allow admin:password allow hauk:password read-only allow @admins allow @users read-only 通过在 username:password 后使用只读关键字将用户设置为只读。在上述示例中,用户hauk被定义为只读用户,而admin用户具有所有访问权限。 实践 监听Nginx、php-fpm及API接口 /etc/monit.d/http # check nginx process check process...阅读全文

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

HTTP状态码详解

端在收到错误信息后继续向服务器发送数据,服务器的TCP栈将向客户端发送一个重置数据包,以清除该客户端所有还未识别的输入缓冲,以免这些数据被服务器上的应用程序并干扰后者。 400 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。 2、请求参数有误。 401 当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当...阅读全文

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

Web前端知识体系精简

。 Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。 在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。 html5提供了两种在客户端存储数据的新方法:localStorage 和 sessionStorage, 它们都是以key/value 的形式来存储数据,前者是永久存储,后者的存储期限仅限于浏览器会话(session),即当浏览器窗口关闭后,sessionStorage中的数据被清除。 localStorage的存储空间大约5M左右(不同浏览器可能不同,分 HOST),这个相当于一个5M大小的前端页面的数据库,相比于cookie可以节约带宽,但localStorage在浏览器隐私模式下是不可的,当存储数据超过了...阅读全文

博文 2021-01-28 17:50:33 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

Redis 命令、特性介绍与性能调优

,Redis能够确保每个客户端得到的序列值或序列范围都是全局唯一的,绝对不会出现不同客户端得到了重复的序列值的情况。 List Redis的List是链表型的数据结构,可以使用LPUSH/RPUSH/LPOP/RPOP等命令在List的两端执行插入元素和弹出元素的操作。虽然List也支持在特定index上插入和元素的功能,但其时间复杂度较高(O(N)),应小心使用。 与List相关的常用命令: LPUSH:向指定List的左侧(即头部)插入1个或多个元素,返回插入后的List长度。时间复杂度O(N),N为插入元素的数量 RPUSH:同LPUSH,向指定List的右侧(即尾部)插入1或多个元素 LPOP:从指定List的左侧(即头部)移除一个元素并返回,时间复杂度O(1) RPOP:同LPOP,从指...阅读全文

博文 2018-10-27 10:37:55 debian.cn

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

Annealing的插件,都是提供和任意基础架构集成的。Terraform的目标是更新生产状态去匹配用户提供的intent——这和Annealing一样。当然,它们也有一些主要的不同,比如: Annealing是为了持续执行而构建的。Annealing仅在安全的时候去应用更新过的配置,不需要人工交互。Annealing在应用变更后会监控服务健康情况。Terraform有统一的配置界面HCL。与之对比,Prodspec直接使用已有的配置资源。Prodspec强制密封性,允许生成配置数据,而无需访问其所描述的生产环境。配置数据可以跨版本进行比较,并由任何工具, 而不仅仅是驱动层。Prodspec是权威的,Annealing是为了能从生产中恢复状态而构建的。这避免了像Terraform这样需要一个状态文件,但...阅读全文

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

提问的智慧 – 全文

要参与者 使用易于且标准的文件格式发送问题 本章阅读提示[14]。 如果你将问题搞得复制难以阅读,它多半会被忽略,人们更愿读易懂的问题,所以: 使用纯文本而不是HTML格式; 发送邮件时如有附件,记得添加附件,同时记得检查附件内容是否能正常打开; 不要发送整段的文字,尝试将文字按主题分段; 发送数据时应该发送原始数据,让回复者看到的东西与你看到的一样; 很多邮件程序并不支持「Quoted-Printable」MIME编码,所以谨慎使用; 不要指望黑客们阅读封闭格式的文档,诸如微软公司的Word或Excel文件等。大多数黑客讨厌这种文件格式。即使他们能够处理,也很厌恶这么做; 如果你用Windows操作系统发送电子邮件,关闭微软的「引用」功能,以免在你的邮件中出现乱码; 切勿在在论坛勿滥用...阅读全文

博文 2009-10-01 13:18:00 debian.cn