InfraPub 为您找到相关结果 38

RabbitMQ 高可用实现镜像队列

数据也是在三个节点之间同步,但 Queue 的实际存储只会在一个节点。我们发送消息到指定 Queue,其实是发送消息到指定节点下的 Queue。如下图所示,消息发送至 testQueue,无论发送者通过哪个 RMQ 节点执行发送,其最终的执行都会是在 MQ03 节点执行消息的存储。 说到这儿,可能有的小伙伴就要问了?说好的,RabbitMQ 集群提供高可用性呢?分析一下,RabbitMQ集群搭建完成后,如果不进行任何高可用配置,会有哪些问题呢? 单点故障会导致消息丢失:如果 MQ03 节点故障,那么 MQ03 中的消息就会丢失无法最大化的利用 RMQ 提升执行效率:既然每次发送到 testQueue 的消息都会在 MQ03 节点存储,那么何必搭建集群。 引入 RabbitMQ 的镜像...阅读全文

博文 2018-12-30 19:21:59 debian.cn

RabbitMQ 3.8.8 发布:引入维护模式

RabbitMQ 3.8.8 已经发布。RabbitMQ 是一个 Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 编写而成,因此它也继承了这些优点。 此版本最大亮点是引入了一种新的节点操作模式,称为维护模式。 当将节点放下进行维护并处于维护模式时,该节点将无法用于服务客户端流量,并且将尝试尽可能实际地转移其职责使其安全。当前,这涉及以下步骤: 挂起所有客户端连接侦听器(不接受新的客户端连接)关闭所有现有的客户端连接:应用程序应重新连接到其它节点并恢复所有经典镜像的主副本托管在传输目标节点上所有仲裁的主要副本托管在传输目标节点上,并阻止它们参与随后触发的 Raft 选举将节点标记为关闭以进行维...阅读全文

博文 2020-09-04 09:46:57 debian.cn

Golang 中的 channel 通道详解

channel通道golang的并发模型是序列通信处理CSP(communicating sequential process)——使用通信来共享内存 ,避免goroutine因竞争共享内存频繁加锁产生的性能问题。基本数据结构golang中提供了一个特殊的类型channel实现goroutine之间的通信。channel类似于,先进先出。channel数据结构源码在src/runtime/chan.go下。chan 使用 hchan 表示,它的传参与赋值始终都是指针形式,每个 hchan 对象代表着一个 chan。hchan 中包含一个缓冲区 buf,它表示已经发送但是还未被接收的数据缓存。buf 的大小由创建 chan 时的参数来决定。qcount 表示当前缓冲区中有效数据的总量...阅读全文

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

定要配置重试要根据业务情况而定。也可以用同步发送的模式去发消息,当然acks不能设置为0,这样也能保证消息发送的有序。 kafka保证全链路消息顺序消费,需要从发送端开始,将所有有序消息发送到同一个分区,然后用一个消费者去消费,但是这种性能比较低,可以在消费者端接收到消息后将需要保证顺序消费的几条消费发到内存(可以搞多个),一个内存开启一个线程顺序处理消息。 如果为了性能好,不允许所有消息只在同一个分区,同时又要保证顺序消费,那么可以给每条消息加一个下标,当消费者拿到消息后先不急着消费,而是先判断下标,然后根据下标以此进行消费; 2.1.4 消息积压 1)线上有时因为发送方发送消息速度过快,或者消费方处理消息过慢,可能会导致broker积压大量未消费消息。 此种情况如果积压了上百万未...阅读全文

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

如何更改 Linux 的 I/O 调度器

Linux 的 I/O 调度器是一个以块式 I/O 访问存储卷的进程,有时也叫磁盘调度器。Linux I/O 调度器的工作机制是控制块设备的请求:确定中哪些 I/O 的优先级更高以及何时下发 I/O 到块设备,以此来减少磁盘寻道时间,从而提高系统的吞吐量。 目前 Linux 上有如下几种 I/O 调度算法: noop - 通常用于内存存储的设备。 cfq - 完全公平调度器。进程平均使用IO带宽。 Deadline - 针对延迟的调度器,每一个 I/O,都有一个最晚执行时间。 Anticipatory - 启发式调度,类似 Deadline 算法,但是引入预测机制提高性能。 查看设备当前的 I/O 调度器: # cat /sys/block//queue/scheduler 假设磁...阅读全文

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

总结系统设计中的33个黄金法则

Refer to https://www.linkedin.com/pulse/system-design-rules-navneet-kumar-p6n7f/ 系统设计很复杂,它需要设计者有深厚的计算机知识和专业知识,没有一种通用的设计可以适应所有业务场景。尽管如此,还是有一些比较通用的规则可以供你设计系统时参考,也能帮助你在面试中摆脱困境。 1. 对于数据密集型系统 — 考虑使用缓存。 2. 对于写入量大的系统 — 使用消息进行异步处理 3. 对于低延迟要求 — 考虑使用缓存和 CDN。 4. 需要𝐀原子性、𝐂一致性、𝐈隔离性、𝐃耐用性兼容数据库 — 选择 RDBMS/SQL 数据库。 5. 对于非结构化数据——可以选择NoSQL...阅读全文

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

统瘫痪! 5.线上Redis禁止使用Keys正则匹配操作 Redis是单线程处理,在线上KEY数量较多时,操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高QPS情况下会直接造成Redis服务崩溃!如果有类似需求,请使用scan命令代替! 6.可靠的消息服务 Redis List经常被用于消息服务。假设消费者程序在从中取出消息后立刻崩溃,但由于该消息已经被取出且没有被正常处理,那么可以认为该消息已经丢失,由此可能会导致业务数据丢失,或业务状态不一致等现象发生。 为了避免这种情况,Redis提供了RPOPLPUSH命令,消费者程序会原子性的从主消息中取出消息并将其插入到备份中,直到消费者程序完成正常的处理逻辑后再将该消息从备份...阅读全文

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

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

表驱动节点调度(便于支持QoS)而不是 hardcode pipeline Graph 工作流程 现在来说一下整体上 graph 框架的工作流程。如上图所述的一样,一个 graph 是由不同的节点 (node) 所组成的。与传统的标量模型相比,两个框架其实都包含一样的逻辑。最大的不同是 graph 框架中 node 节点在运行时与其他 node节点的交互方式,或者具体地来说,是报文在node节点中的传递方式。 一个 node 中的 报文 传送到不同的 node,home run 情况 (优化案例) 以及正常 enqueue情况;动态增加 node 的 objects 大小 Node 的 Object 大小 默认情况下,每个 node 都有一个...阅读全文

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

Linux Kernel 4.19 正式版本发布 将是长期支持版

Greg Kroah-Hartman 在内核邮件列表上 宣布 释出 Linux 4.19。Linux 作者 Linus Torvalds 最近在 休假反省 ,Linux 的开发现在由稳定版内核维护者 Kroah-Hartman 接手。 Kroah-Hartman 表示,4.19 将会是一个长期支持版本,他也会维持几年。 Linux 4.19 的主要新特性包括: 基于异步 I/O 的轮训接口 L1TF 漏洞补丁 块 I/O 延迟控制器 Common Applications Kept Enhanced (CAKE) 管理算法 Wi-Fi 6 (802.11ax) 初步支持 实验性文件系统 EROFS Intel Cache Pseudo-locking 基于时间的包传输 改进 RISC...阅读全文

博文 2018-10-24 13:37:11 debian.cn

Linux kernel 5.6 正式版发布

Linus Torvalds 在内核邮件列表上宣布释出 Linux 5.6。Torvalds 称,他没有看到内核开发受到新冠疫情影响的迹象,大部分人可能早就习惯了在家远程工作。 他估计 Linux 5.7 的发布不太会有变动,但有人错过合并窗口还是可能的,毕竟合并窗口没有你或你周围的人的健康更重要。 Linux 5.6 的特性包括: Arm EOPD 支持,时间命名空间,BPF 调度器和批映射操作,openat2() 系统调用,WireGuard VPN 实现,流 PIE 包调度器,2038 年问题接近解决,pidfd_getfd()系统调用,ZoneFS 文件系统,BPF TCP 拥堵控制算法实现,移除 /dev/random blocking pool 等等。 具体可阅读...阅读全文

博文 2020-03-30 23:40:37 debian.cn

Kafka 常用命令行工具

-consumer-groups.sh --bootstrap-server localhost:9092 --list 查看kafka消息特定组的消费积压情况(主要看CURRENT-OFFSET、LOG-END-OFFSET的值,判断Kafka堆积情况)kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group g1 查看指定topic上每个partition的offsetkafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic infras_cn 例子: ``` # 创建一...阅读全文

Prometheus 2.13.0 发布

] Service discovery:为 kubernetes 添加新的节点地址类型 #5902[ENHANCEMENT] UI:如果查询返回了一些警告,则显示警告 #5964[ENHANCEMENT] Remote write:减少系列缓存的内存使用量 #5849[ENHANCEMENT] Remote read:使用远程读取流传输以减少内存使用量 #5703[ENHANCEMENT] Metrics:添加了将远程最大/最小/所需分片写入管理器的指标 #5787[ENHANCEMENT] Promtool:在标签查询期间显示警告 #5924[ENHANCEMENT] Promtool:改进了解析错误规则时的错误消息 #5965[ENHANCEMENT] Promtool:更多提示规则 #5515...阅读全文

Debian目前面临的问题:钱足够但很缺人!

认为需提供更好的入门指南,以便于更多志愿者和维护者得以参与 Debian 项目开发中。 人员问题并非 Debian 独有。上个月,Linux 基金会成员 Sarah Novotny 也向 Register 提出了降低新内核开发人员门槛中的挑战。 另一个问题是新软件包会卡在 NEW 中等待核准。Carterh 说,“这是我们大家的一个痛点。很多软件包会卡顿很长时间”。今年早期,NEW 的规模达到了历史新高,通过团队努力到 7 月已大为削减。 Carter 说,项目本身正在不断改进,也需要做更多努力。团队正与联想商洽在其 OEM 笔记本上预装 Debian 系统,虽然 Carter 也明白,即便是 Debian 开发人员,大多也会在购买这样的笔记本后立刻卸载预装版本并重装系统。团队认识到...阅读全文

博文 2020-10-09 10:24:04 debian.cn

influxdb内存消耗分析及性能优化【探索篇】

1.新的问题influxdb目前支持内存型索引inmem及文件型索引tsi1。之前追踪篇将influxd索引修改为tsi1之后,经过一段时间的运行,从监控观察到,由于调用方采用异步+批处理的方案将数据写入influxdb,会在某些时刻调用方内部出现数据堆积,指标如图:横坐标: 时间轴,从12-29 00:00 到 12-30 00:00纵坐标: 中数据堆积长度,坐标最大值250k,即最大25w个数据堆积从上图可以看到,当天监控出现数次堆积,上午7:00-10:00尤为严重。在堆积时,登录influxdb服务器,查看机器状态如下:top - 09:40:58 up 120 days, 19:18, 1 user, load average: 32.29, 32.32, 29.82...阅读全文

博文 2021-10-27 16:06:30 知乎

深入了解Docker背后的namespace技术

should never reach here! exit(EXIT_FAILURE); } 请确保在你的main函数中的clone_flags的变量应该是这样的nt clone_flags = CLONE_NEWUTS | SIGCHLD;,然后编译并用同样的命令参数运行。这个时候你可以看到用它执行 hostname命令的返回值。同时为了核查这个变动不会影响你当前的shell环境,我们将执行 hostname 并确认返回了先前原始的值。 > gcc -o uts uts.c > ./uts hostname myhostname > hostname development IPC Namespace IPC namespace用于隔离进程间通信,像SysV的消息,让我们为这个命名空间创建一个...阅读全文

博文 2015-05-17 10:03:00 debian.cn

gRPC 1.23.0 发布,Google高性能 RPC 框架

器支持)移动到 Grpc.Core.Api(对于 v1.23.x 分支)(#19853)重构 ChannelCredentials 并移到 Grpc.Core.Api (#19712)C# 将主要版本提升为 2.x (#19796)添加 ChannelBase,更改 ClientBase 构造函数参数 (#19599)删除 System.Interactive.Async 依赖项 (#19059)不要将 shutdownRef 计数用于同步完成 (#19629)C# – 从取消注册中删除 allocation 和 boxing (#19610)csharp:删除 Timespec 上的双框 (#19525)C#:添加 System.Memory 依赖项并在内部对所有目标框架使用 Span...阅读全文

博文 2019-08-18 18:31:20 debian.cn

Golang后端面试题目

技术一面 基础面试 一面是通过电话直接沟通。 go的调度go struct能不能比较go defer(for defer)select可以用于什么context包的用途client如何实现长连接主协程如何等其余协程完再操作slice,len,cap,共享,扩容map如何顺序读取实现set实现消息(多生产者,多消费者)大文件排序基本排序,哪些是稳定的http get跟headhttp 401,403http keep-alivehttp能不能一次连接多次请求,不等后端返回tcp与udp区别,udp优点,适用场景time-wait的作用数据库如何建索引孤儿进程,僵尸进程死锁条件,如何避免linux命令,查看端口占用,cpu负载,内存占用,如何发送信号给一个进程git文件版本,使用顺序...阅读全文

博文 2020-04-13 13:13:00 2020腾讯社招

如何在 Debian 中锁定软件包版本

在 Debian 或基于 Debian/Ubuntu 的 Linux 发行版系统中,有多种方法可以将软件包锁定在一个特定的版本。也就是说,可以将某个软件固定维护在指定版本,不让其随系统更新而更新。 为什么要锁定软件包,防止软件包更新呢? 通常是用户对某个软件版本有特定的需求,或更新期间、更新后可能会导致问题,所以需要维持特定的版本不进行升级。在常见的数据类服务中,这样的需求很有代表性,比如缓存Redis、数据RabbitMQ等。还有部分服务依赖于系统中特定的软件,比如指定的 Linux 内核版本,这时就需要锁定内核版本防止因内核升级导致服务异常。 我们这里介绍两种方式,防止软件包被更新。需要注意的是,如果软件包被其他软件所依赖,阻止其更新,可能会导致关联问题。建议将尽量少的的软件包锁定...阅读全文

博文 2019-01-09 13:19:52 debian.cn

得物云原生全链路追踪Trace2.0-采集篇 - OSCHINA

误数:如 HTTP 500 错误。当然,有些即便是 HTTP 200 状态也需要根据特定业务逻辑来区分当前请求是否属于“错误”请求。 饱和度:类似服务器硬件资源如CPU,内存,网络的使用率等等。 所以,我们决定使用 Micrometer 库来对各个组件进行吞吐量,延迟和错误率的埋点,从而对 DB 类,RPC类的组件做性能监控。因此也可以说,我们第二阶段的监控是以指标监控为主,调用链监控为辅的应用性能监控。 3.1 使用 Endpoint 贯穿指标埋点帮助性能分析 在指标埋点过程中,我们在所有的指标中引入了“流量入口(Endpoint)”标签。这个标签的引入,实现了根据不同流量入口来区分关联 DB,缓存,消息,远程调用类的行为。通过流量入口,贯穿了一个实例的所有组件指标,基本满足了以下场景...阅读全文

博文 2022-12-10 06:50:41 中文开源技术交流社区

Golang 操作 Kafka 样例

)、consumer(消息消费者)都可以是分布式的。 在消息的生产时可以使用一个标识topic来区分,且可以进行分区;每一个分区都是一个顺序的、不可变的消息, 并且可以持续的添加。 同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。 消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡 1.1.3. 常用的场景 监控:主机通过Kafka发送与系统和应用程序健康相关的指标,然后这些信息会被收集和处理从而创建监控仪表盘并发送警告。 消息: 应用程度使用Kafka作为传统的消息系统实现标准的和消息的发布—订阅,例如搜索和内容提要(Content Feed)。比起大多数的消息系统来说,Kafka...阅读全文

博文 2023-01-10 13:46:09 掘金

分布式运行时 Dapr 知多少

bindings and triggers (资源绑定及事件触发) Dapr的Bindings与Azure Functions很类似,其是建立在事件驱动架构的基础之上的。通过建立触发器与资源的绑定,可以从任何外部源(例如数据库,,文件系统等)接收和发送事件,而无需借助消息,即可实现灵活的业务场景。Dapr的Bindings分为两种: Input Bindings(输入绑定):当外部资源的事件发生时,借助输入绑定,你的应用即可通过特定的API:POST http://localhost:/收到外部资源的事件,用于处理特定逻辑。Output Bindings(输出绑定):输出绑定允许你调用外部资源。比如,在订单处理场景中,在订单创建成功后,可以将订单信息通过Dapr的绑定...阅读全文

Web前端知识体系精简

创建一个新对象时,JS底层将新对象的原型链指向了构造函数的原型对象,于是就在新对象和函数对象之间建立了一条原型链,通过新对象可以访问到函数对象原型prototype中的方法和属性。new的详细介绍请参考博客:理解JS中的new运算符 5、闭包 闭包其实是一个主动执行的代码块,这个代码块的特殊之处是可以永久保存局部变量,但又不污染全局变量,可以形成一个独立的执行过程,因此我们经常用闭包来定义组件。关于闭包的介绍请参考:干货分享:让你分分钟学会JS闭包 6、单线程和异步 setTimeout和setInterval是JS内置的两个定时器,使用很简单,但这两个方法背后的原理却不简单。 我们知道,JS是单线程语言,在浏览器中,当JS代码被加载时,浏览器会为其分配一个主线程来执行任务(函数),主线...阅读全文

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

Stackstorm 入门介绍

可扩展套件,与你的基础环境交互,执行流程如下: 从各个服务系统通过push或pull的方式把event传给sensors, sensors会产生一个trigger到规则配置中查询该trigger对应的动作或者工作流将来自工作流的Action发送到消息(内置rabbitmq)中Actions到达外部的系统后就执行相应的动作日志和审计历史被推送到数据库进行存储(Mongodb)处理后的结果被发送回规则引擎进行进一步处理 Stackstorm的更新非常活跃,最新的发布信息从官方网站上可以看到。目前最新的版本是 2.10.1。 Stackstorm工作原理 目录...阅读全文

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

位置,-2代表List倒数第二个位置。时间复杂度O(N) LSET:将指定List指定index上的元素设置为value,如果index越界则返回错误,时间复杂度O(N),如果操作的是头/尾部的元素,则时间复杂度为O(1) LINSERT:向指定List中指定元素之前/之后插入一个新元素,并返回操作后的List长度。如果指定的元素不存在,返回-1。如果指定key不存在,不会进行任何操作,时间复杂度O(N) 由于Redis的List是链表结构的,上述的三个命令的算法效率较低,需要对List进行遍历,命令的耗时无法预估,在List长度大的情况下耗时会明显增加,应谨慎使用。 换句话说,Redis的List实际是设计来用于实现,而不是用于实现类似ArrayList这样的列表的。如果你不是想要实现...阅读全文

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

nsenter 及 Linux命名空间 简介

进程有一个独立的挂载文件系统,始于Linux 2.4.19ipc:ipc命名空间,使进程有一个独立的ipc,包括消息,共享内存和信号量,始于Linux 2.6.19uts:uts命名空间,使进程有一个独立的hostname和domainname,始于Linux 2.6.19net:network命令空间,使进程有一个独立的网络栈,始于Linux 2.6.24pid:pid命名空间,使进程有一个独立的pid空间,始于Linux 2.6.24user:user命名空间,是进程有一个独立的user空间,始于Linux 2.6.23,结束于Linux 3.8cgroup:cgroup命名空间,使进程有一个独立的cgroup控制组,始于Linux 4.6 Linux的每个进程都具有命名空间,可以在...阅读全文

博文 2020-12-15 11:22:44 debian.cn

Kubernetes v1.21 新特性预览

个 annotation controller.kubernetes.io/pod-deletion-cost,其值表示删除一个 Pod 的成本,值越小代表越优先删除。当 annotation 不存在时,表示其删除成本为 0。Indexed Jobs Alpha通常,当使用 Job 来运行分布式任务时,用户需要一个单独的系统来在 Job 的不同 worker Pod 之间分配任务。比如,设置一个工作,逐一给每个 Pod 分配任务。Kubernetes v1.21 新增的 Indexed Job 会给每个任务分配一个数值索引,并通过 annotation batch.kubernetes.io/job-completion-index 暴露给每个 Pod。使用方法为在 Job spec 中...阅读全文

博文 2021-03-30 20:24:36 mp.weixin.qq.com

Debian 11 "bullseye" 发布,带来内核 exFAT 支持

systemd 服务文件将在使用 USB 的打印机连接到系统时启动 ipp-usb 守护程序,以使其可用于打印任务。默认情况下 cups-browsed 软件包应当可以自动完成配置,或者可以手动设置本地无驱动打印。SANE 和无驱动扫描官方的 SANE 无驱动后端在 libsane1 软件包中由 sane-escl 提供。另有一独立开发的无驱动后端 sane-airscan。两个后端均可使用 eSCL 协议,但 sane-airscan 另外也可使用 WSD 协议。用户应该考虑在系统上同时安装两个后端。eSCL 和 WSD 均为网络协议。因此,它们在设备是 IPP-over-USB 设备的情况下也可经由 USB 连接生效(参见上文)。请注意 libsane1 推荐安装 ipp-usb 软件包。在软件...阅读全文

Gitlab CI 配置文件 .gitlab

: variables: GET_SOURCES_ATTEMPTS: 3 你可以在全局variables模块中设置,也可以在单个job的variables模块中设置。 Shallow cloning GitLab 8.9 以实验性功能引入。在将来的版本中有可能改变或者完全移除。 你可以通过GIT_DEPTH来指定抓取或克隆的深度。它可浅层的克隆仓库,这可以显著加速具有大量提交和旧的大型二进制文件的仓库的克隆。这个设置的值会传递给git fetch和git clone。 注意:如果设置depth=1,并且有一个jobs或者是重试jobs,则jobs可能会失败。 由于Git抓取和克隆是基于一个REF,例如分支的名称,所以Runner不能指定克隆一个commit SHA。如果中有多个jobs,或者您正在重试旧...阅读全文

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

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

发送消息的客户端。 consumer:消息消费者,就是从broker拉取数据的客户端。consumer group:消费者组,由多个消费者consumer组成。消费者组内每个消费者负责消费不同的分区,一个分区只能由同一个消费者组内的一个消费者消费;消费者组之间相互独立,互不影响。所有的消费者都属于某个消费者组,即消费者组是一个逻辑上的订阅者。broker:一台服务器就是一个broker,一个集群由多个broker组成,一个broker可以有多个topic。topic:可以理解为一个,所有的生产者和消费者都是面向topic的。partition:分区,kafka中的topic为了提高拓展性和实现高可用而将它分布到不同的broker中,一个topic可以分为多个partition,每个...阅读全文

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

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

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

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

聊聊很重要的内核技术eBPF

。它使用其他输入流(例如容器运行时度量标准和Kubernetes度量标准)丰富了收集的数据,并允许连续监视和检测容器,应用程序,主机和网络活动。 5:Katran Katran是一个C ++库和eBPF程序,用于构建高性能的第4层负载平衡转发平面。 Katran利用Linux内核中的XDP基础结构来提供用于快速数据包处理的内核功能。它的性能与NIC接收的数量成线性比例,并且使用RSS友好的封装转发到L7负载平衡器。 6:Sysdig Sysdig是提供深层系统可见性的简单工具,并具有对容器的原生支持。 其他基于eBPF技术的项目还有很多,比如kubectl-trace ,ply 等,这里不再赘述。 如何编写一个eBPF程序? 在很多情况下,不是直接使用eBPF,而是通过Cilium,bcc...阅读全文

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

WebAssembly:无需容器的 Docker (上)

?WasmEdge 是一个高性能的 WebAssembly 运行时:是开源的,属于 CNCF。支持所有主要的 CPU 架构(x86、ARM、RISC-V)。支持所有主要操作系统(Linux、Windows、macOS)以及其他操作系统,例如 seL4 RTOS、Android。针对云原生和边缘应用程序进行了优化。可扩展并支持标准和新兴技术使用 Tensorflow、OpenVINO、PyTorch 进行人工智能推理Tokio 的异步网络。 支持微服务、数据库客户端、消息等。与容器生态、Docker 和 Kubernetes 无缝集成(如本文所示!)解释型语言呢?到目前为止,我们只提到了 C 和 Rust 等编译语言可以编译为 WebAssembly。 对于 Python、Ruby 和 PHP 等解释型语...阅读全文

博文 2023-01-03 06:35:56 spider

2017 年会是 Serverless 爆发之年吗

、API 应用相同的上下文中运行程序或脚本。可以上传并运行可执行文件,例如 cmd、bat、exe、psl 等等。WebJobs 提供 SDK 用于简化针对 Web 作业可以执行的常见任务,例如图像处理、处理、RSS 聚合、文件维护,以及发送电子邮件等等。 Serverless 架构原则 按需使用计算服务执行代码 Serverless 架构是 SOA 概念的自然延伸。在 Serverless 架构中,所有自定义代码作为孤立的、独立的、细粒度的函数来编写和执行,这些函数在 AWS Lambda 之类的无状态计算服务中运行。开发人员可以编写函数,执行常见的任务。在比较复杂的情况下,开发人员可以构建更复杂的管道,编排多个函数调用。 编写单一用途的无状态函数单单负责处理某一项任务的函数很容易测试,并稳...阅读全文

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

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

守护程序、unchecked、dinstall,以及其他等)。 根据时间安排,我估计你可能需要等待7个小时(!!)以上,你的包才能变成可安装的状态。 对我来说更糟糕的是,针对上传的反馈是异步的。我喜欢做一件事,那就做完它,然后再做下一件。然而,由于没有良好的技术,当前的设置需要等上好几分钟,而且任务切换的开销很大。你可能觉得几分钟也没什么大不了,但是我每天在Debian上花费的时间都以分钟来衡量的话,那么会对工作的生产力和乐趣产生巨大的影响。 最后一次有关于加快这一流程的沟通是2008年ganneff的这篇文章(https://lists.debian.org/debian-project/2008/12/msg00014.html)。 更好的方式是什么? 利用一个Web服务取代匿名...阅读全文

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

如何读懂火焰图?+ 实例讲解程序性能优化 - xuxh120

代表cpu使用的时间。例如: 九、Async-profiler的使用 和 火焰图分析 背景: 目前有一个kafka消费者工程,此工程会消费kafka中的消息,并通过fastjson解析该消息为java实体,然后存入到阻塞 BlockingQueue中。另外有若干个线程会从queue中批量拿消息,然后以批量形式写入到 elasticsearch 中。目前在使用中发现存在性能瓶颈,需要定位是该工程对消息转化处理较慢,还是写es操作比较慢。 9.1采集cpu profile数据 我们将代码回退到第一次测试的情况,并启动程序,并找到当前进程号(627891),然后通过如下命令进行采集,并转换为火焰图格式 svg。 ./profiler.sh -d 15 -i 50ms -o svg -e cpu...阅读全文

博文 2022-03-11 10:05:09 博客园

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

packet 为单位(默认64K),A 收到一个 packet 就会传给 B,B 传给 C。A 每传一个 packet 会放入一个应答等待应答; 数据被分割成一个个 packet 数据包在 pipeline 上依次传输,在 pipeline 反方向上, 逐个发送 ack(命令正确应答),最终由 pipeline 中第一个 DataNode 节点 A 将 pipelineack 发送给 Client; 当一个 block 传输完成之后,Client 再次请求 NameNode 上传第二个 block,重复步骤 2; 7.1 网络拓扑概念 在本地网络中,两个节点被称为“彼此近邻”是什么意思?在海量数据处理中,其主要限制因素是节点之间数据的传输速率——带宽很稀缺。这里的想法是将两个节点间的带宽作为距离的...阅读全文

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

记录的更改)。在我们的例子中,控制器通过一个 Informer 注册一个创建事件的特定回调函数(更多信息参加下文)。 当 Deployment 第一次对外可见时,该 Controller 就会将该资源对象添加到内部工作,然后开始处理这个资源对象: 通过使用标签选择器查询 kube-apiserver 来检查该 Deployment 是否有与其关联的 ReplicaSet 或 Pod 记录。 有趣的是,这个同步过程是状态不可知的,它核对新记录与核对已经存在的记录采用的是相同的方式。 在意识到没有与其关联的 ReplicaSet 或 Pod 记录后,Deployment Controller 就会开始执行弹性伸缩流程: 创建 ReplicaSet 资源,为其分配一个标签选择器并将其版本号设置...阅读全文

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