InfraPub 为您找到相关结果 78

互联网协议正在发生变化

必须阻止对 Google 的全部访问(向他们提供的服务致敬!)(LCTT 译注:他们做到了)。 DOH 才刚刚开始,但它已经引起很多人的兴趣,并有了一些部署的传闻。通过使用 DNS 来实施政策影响的网络(和政府机构)如何反应还有待观察。 阅读 IETF 100, Singapore: DNS over HTTP (DOH!) 僵化和润滑 让我们返回到协议变化的动机,有一个主题贯穿了这项工作,协议设计者们到的越来越多的问题是网络对流量的使用做了假设。 例如,TLS 1.3 有一些临门一脚的问题是中间设备假设它是旧版本的协议。gQUIC 将几个对 UDP 通讯进行限流的网络列入了黑名单,因为,那些网络认为 UDP 通讯是有害的或者是低优先级的。 当一个协议因为已有的部署而 “冻结” 它的可扩展...阅读全文

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

无意触怒任何为Debian做出了贡献的人,我只是想表达我对Debian太过于失望而决定放手的原因。 到目前为止,Debian出现在我的生命中已经超过10年了。 几个星期前,我在苏黎世Debian聚会上见了一些多年未见的老朋友。在骑自行车回家的路上,我突然发现我们讨论的主题与我们上次的讨论大致相同。出于对开源社区的尊敬,我们绕了个圈子先探讨了systemd的好处,然后回到了Debian的讨论,最后兴致所至还谈到了Debian的民主以及他们在理论和实践上的失败。诚然,最后一个话题有点像瑞士。 我说这些不是对Debian聚会有异议,而是因为通过这次聚会我开始反思最近对Debian的感觉,还有它是否适合我。 最终,我做出了一个本应在很久以前就已经做出的决定:我会将有关Debian的工作减到最少...阅读全文

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

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

自己到了什么问题,就是来找解决方案的。还有一批人只有一个简单的想法,但不知道具体的问题。举个例子,以读数据库慢为例,前者已经知道数据库慢可能是因为数据量巨大且没有加索引,解决方案很简单 加索引,这时候他可能需要知道的是如何正确地加索引。而后者可能着重关注的是为什么读数据库会慢,这时候你可能需要额外重点介绍下数据库相关的原理。 ## 清晰的分类 ## 文档大致可以分为以下几种类型,每种类型也有自己不同的特点和写作侧重点。 ## 参考文档 ## 参考文档也是大部分开发人员日常会使用和书写的文档,比如我们使用某个框架或者工具,都会有API说明文档,这就属于参考类文档。 它并没有太多的要求,只要能向读者展示清楚如何使用即可,但无需向读者讲明具体的实现。 注:参考文档并不仅限于API文档,还包括文件...阅读全文

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

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

模型的差别则在于一系列的函数处理一批数据包。这种方法的主要目的是解决当 pipeline 变复杂时所到 i-cache miss 较高的问题。 标量处理模型 vs 向量处理模型 标量处理模型在性能上不如向量处理模型的另一个原因,就是在不同处理函数(业务逻辑)之间,报文传递到下一个处理函数的方式上有所不同。前者只是简单地用 pointer assignment 的方法来传递,若处理基于不同批次的情况下,由于低效的 pointer assignment,会导致处理一批报文时性能低下。 而对于向量包处理模型而言,向量包处理模型反而可以减少上述标量处理模型因批处理而导致性能不理想的情况。这是因为在向量模型中,报文在业务逻辑之间的传输除了可以通过最原始的 pointer assignment 之外...阅读全文

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

协议介绍之深入了解 gRPC

大的提高一条连接上面的 stream 并发,可以考虑调大 SETTINGS_MAX_CONCURRENT_STREAMS,在 TiKV 里面,我们就到过这个值比较小,整体吞吐上不去的问题。 这里还需要注意,虽然一条连接上面能够处理更多的请求了,但一条连接远远是不够的。一条连接通常只有一个线程来处理,所以并不能充分利用服务器多核的优势。同时,每个请求编解码还是有开销的,所以用一条连接还是会出现瓶颈。 在 TiKV 有一个版本中,我们就过分相信一条连接跑多 streams 这种方式没有问题,就让 client 只用一条连接跟 TiKV 交互,结果发现性能完全没法用,不光处理连接的线程 CPU 跑满,整体的性能也上不去,后来我们换成了多条连接,情况才好转。 Priority 因为一条连接允许多个...阅读全文

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

Apache Flink 1.14 新特性预览 - OSCHINA

Checkpoint 机制痛点 目前 Flink 触发 Checkpoint 是依靠 barrier 在算子间进行流通,barrier 随着算子一直往下游进行发送,当算子下游到 barrier 的时候就会进行快照操作,然后再把 barrier 往下游继续发送。对于多路的情况我们会把 barrier 进行对齐,把先到 barrier 的这一路数据暂时性的 block,等到两路 barrier 都到了之后再做快照,最后才会去继续往下发送 barrier。 现有的 Checkpoint 机制存在以下问题: 反压时无法做出 Checkpoint :在反压时候 barrier 无法随着数据往下游流动,造成反压的时候无法做出 Checkpoint。但是其实在发生反压情况的时候,我们更加需要去做出对数据的...阅读全文

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

社交巨人Facebook使用Linux和Btrfs的姿势

被我们称之为“影子层”的地方进行——我们可以在一个非生产环境重放生产网络的流量,这样我们能够在一个非常安全的地方检测系统的稳定性和性能。我们可以像做实验那样一边加大流量一边说:“好了,我先给它(测试环境)5%的生产网络流量,然后一路增加到100%,看看会有什么发现吧。”像做A/B测试那样,我就能得到两个内核在整个实验过程中对比鲜明的数据。 我们有工具能验证内核并帮助测试上游内核。这样比较容易发现上游内核新的有意思的bug,而非只是找到已经被上游内核修复过的bug。 Linux.com:您比较担心什么问题? Chris Mason:就运行Linux内核或者文件系统而言,我们还没到什么问题;况且有这么多的社区在支持Linux,我也没有必要担心什么。 Linux.com:您参与Linux开发也有...阅读全文

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

什么是线程安全,以及并发需要知道的几个概念

。比如它的线程优先级太低,而高优先级的线程不断抢占它所需的资源,导致低优先级资源无法工作。 3、活锁的情况是线程一种非常有趣的情况,在生活中我们可能会碰到这样的情况,那就是出门的时候可能会到有人要进门,你打算让他先进门,他又打算让你先出门,结果,两个人都互相退后了,然后你打算先出门时对方也向前一步,来来回回就一直卡在门口。当然,这种事情正常人很快就能解决,但如果是线程碰到就没那么幸运了。 如果两个线程占用着公共的资源,并且秉承着 “谦让” 的原则,主动把资源让给他人使用,你让我也让,这样就造成资源在两个线程间不断跳动但线程之间都拿不到资源的情况,这样的情况就是活锁了。 线程安全 线程安全指的是多线程的安全。如果一段程序可以保证被多线程访问后仍能保持正确性,那么程序就是线程安全的。一般来说,线...阅读全文

博文 2018-12-31 20:44:06 debian.cn

技术部门的 SEO 规范

为客户提供SEO顾问服务的时候,经常到一些作为外部顾问不方便全程参与的情况。比如有的公司要新建网站,或者现有网站推到重来,问我能否从一开始就参与,提供SEO建议。 网站规划设计阶段就考虑SEO当然是好事,但作为一个远在异国的顾问,参与到这种需要大量深度讨论、沟通、协调的过程中,实在是不好操作,内部SEO人员更适合这种工作。 有的客户公司规模比较大,技术开发、内容、SEO等各部门是分开的,SEO部门的很多需求是要提交给技术、运营等部门实施的。反过来,其它部门的需求也由技术部门实施,但可就不一定经过SEO部门同意了。这个过程中就可能产生对SEO的不良影响。 也有的公司人员流动频繁,即使原先的开发人员都经过SEO培训,也还是会有完全不了解SEO的新人加入团队。 这些情况都需要有一个技术部门必须...阅读全文

博文 2019-03-28 13:58:51 debian.cn

Debian 往事: 与已故创始人 Ian Murdock 的昔日访谈

用。Stallman 曾有过这样的感想:「我们对 Linux 了解的越来越多,我们甚至也开始考虑如何开发这个系统。」说这句话是因为当时 Debian 的系统开发到了瓶颈,开发团队在无意间看到 Linux 时发现他们的想法和他们想做的系统竟然与 Linux 是如此的相似。 有一段时间,Murdock 是拿着 FSF 给的工资在开发 Debian 的。 「我发现我无法把开发 Debian 当成我的业余生活;我在工作空闲时完全没有好的灵感;我要全心全意投入到这项事业中去。」但是不久后团队就出现了分歧。「到那时候 Debian 的影响力已经超过了我本人,我也对 Debian 的方向有了更明确更坚定的想法。然而我也不再是一个人,我的身边有了越来越多的人,越来越多的观点。很多人都不赞成 FSF 的目标...阅读全文

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

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

片不需要向用户展示时,可以使用此特性。假如一个 img 元素还有其他用途而不仅仅是展示一个图片,例如,作为一个服务的一部分用来计算页面视图个数,在 width 和 height 属性中使用 0 数值。对于 0 宽度的图片,推荐使用空属性。 7. 校验表单 新的 reportValidity() 方法允许你校验一个表单和重置结果,并且在浏览器适合位置向用户报告错误。用户代理可以报告一个以上的限制规则,假如单一元素同时到多个问题。对于这种情况,“密码”输入为必填内容但没有填,将会标识为错误。

Form validation

Enter details阅读全文

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

Debian 相比 Ubuntu 有哪些不同之处

序。Ubuntu的标准安装程序被设计成主要为了要求尽量少的用户输入,以便确保安装简单、速度尽可能快。要是你到任何问题,可以试试专家模式安装程序,这是Debian安装程序稍稍改头换面的版本。 Debian安装程序显然有其他优先事项。比如说,其图形化版本是GUI,这有别于主要在工具包中的基于文本的安装程序:除了让害怕使用命令行的那些用户感到安心外,没有任何优势可言。 相比之下,Debian之前的声誉是,只要按照在线操作说明,此外每个阶段接受默认设置,通常就可以安装Debian。然而,如果你决定亲自选择,可以在安装过程的每一步选择每个设置,这大大增加了安装所需的时间。Debian安装程序并不是迎合没有经验的用户,而是兼顾所有不同水平的用户。它不是很漂亮,但是不用编译自己的程序包,所以你不可能找到...阅读全文

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

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

Alpine 的镜像。它们的体积非常小,但代价是兼容性较差。Alpine 使用了略微不同的标准 C 库——muslc。你可能会时不时地到一些兼容性问题。 原始基础镜像非常适合用于测试和开发。它虽然体积很大,但提供了与 Ubuntu 工作站一样的体验。此外,你还可以访问操作系统的所有二进制文件。 最后,我们再回顾一下各个镜像调整后的大小: node:8 681MB node:8 使用多阶段构建为 678MB gcr.io/distroless/nodejs 76.7MB node:8-alpine 69.7MB 英文原文:https://itnext.io/3-simple-tricks-for-smaller-docker-images-f0d2bda17d1e...阅读全文

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

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

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

RabbitMQ 高可用实现镜像队列

如果 RabbitMQ 集群只有一个 broker 节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致 message 的丢失(尤其是在非持久化 message 存储于非持久化 queue 中的时候)。可以将所有 message 都设置为持久化,并且使用持久化的 queue,但是这样仍然无法避免由于缓存导致的问题:因为 message 在发送之后和被写入磁盘并执行 fsync 之间存在一个虽然短暂但是会产生问题的时间窗。通过 publisher 的 confirm 机制能够确保客户端知道哪些 message 已经存入磁盘,尽管如此,一般不希望到因单点故障导致服务不可用。 如果 RabbitMQ 集群是由多个 broker 节点构成的,那么从服务的整体可用性上来讲,该集群对...阅读全文

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

阿里巴巴版 JDK 首发 GA 版 生产环境可用

版本中,当 JFR 功能被打开,JVM 能以非常小的性能开销记录 Java 运行过程中产生的各种运行时数据。产生的 JFR 数据包含 JVM 运行时的各种微观细节,可以被 JMC(Java Mission Control) 进行分析。JMC 是一个桌面应用程序,通过解析 JFR 数据,JMC 能够高效快速定位线上产品环境的各种故障,分析内存分配热点,方法调用热点,方法调用超时分析,内存泄漏,IO 活动,线程活动等,帮助 Java 用户保证服务稳定。 据了解,阿里巴巴日常开发过程中到的很多问题都是通过 JFR 得到解决的,可以说是 Java 故障诊断利器。如上所言,JFR 功能在 OpenJDK 11 以及以上版本才有,但是在阿里巴巴的推动努力下,JFR 功能已经被 OpenJDK 8u 社...阅读全文

博文 2019-07-11 10:24:52 debian.cn

Kubernetes源码探疑:Pod IP泄露排查及解决方法

PodName,Sandbox容器ID,NameSpace,VPC IP等对应关联信息进行额外存储。这样当进入DEL操作后,只需要通过kubelet传入的PodName,Sandbox容器ID和NameSpace即可找到VPC IP,然后通过UCloud 公有云相关API删除之,无需依赖NETNS操作。 考虑到问题的根因是出现在kubelet源码中的SyncPod函数,UK8S团队也已修复kubelet相关源码并准备提交patch给Kubernetes社区。 写在最后 Kubernetes依然是一个高速迭代中的开源项目,生产环境中会不可用避免见一些异常现象。UK8S研发团队在学习理解Kubernetes各个组件运行原理的同时,积极根据现网异常现象深入源码逐步探索出问题根因,进一步保障UK8S服务的稳定...阅读全文

在 Kubernetes 上扩展 TensorFlow 模型

由于人工智能 / 机器学习日益集成到应用和业务流程中,因此生产级机器学习模型需要更多可扩展的基础设施和计算能力,以用于训练和部署。 现代机器学习算法在大量数据上进行训练,并且需要数十亿次迭代才能使成本函数最小化。这类模型的垂直扩展会到操作系统级别的瓶颈,包括可提供的 CPU、GPU 和存储的数量,而且对于这种类型的模型,已经证明效率并不高。更为高效的并行处理算法,例如异步训练和 allreduce 式训练,需要一个分布式集群系统,由不同的 worker (工作器)以协调的方式同时学习。 可扩展性对于在生产环境中服务深度学习模型也非常重要。将单个 API 请求处理到模型预测端点可能会触发复杂的处理逻辑,这将花费大量时间。由于更多用户访问模型的端点,为了有效地处理客户端请求,需要更多服务实例...阅读全文

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

Prometheus已成为cloud-native世界中的默认监控应用程序和系统。对于真是使用案例,Prometheus应该是高可用的,这是有挑战的。一旦在高可用性模式下运行Prometheus,就会到很多问题,例如数据重复,为重复数据实现single pane等。为了解决此问题,Cortex诞生了。Cortex是一个CNCF sandbox project,旨在为使用Prometheus 收集的指标提供长期存储和全局指标视图。首先让我们看一下Cortex的主要目标,然后看一下它为Prometheus解决的一些问题。水平可伸缩性– Cortex可以分成多个微服务,每个微服务都可以独立地水平伸缩。例如,如果许多Prometheus实例正在向Cortex发送数据,则可以扩展Ingester微...阅读全文

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

“Debian 章程有毒” - OSCHINA

the light of Joey's resignation, as I'm sure many of us have been. Joey 的离职让我不住去想 Debian 的管理出了什么问题,我相信我们其中许多人也一样。 当时,Russ 已经在 Debian 技术委员会里待了6个年头,但他没能熬过2014年那场论战。他表示,委员会几乎每一个决策都受到巨大的压力,他感到没有精力来处理这些事情,他也觉得自己在技术委员会的工作对整个项目没什么帮助。 2019年,Debian 开发者 Michael Stapelberg 在离职 Debian 时留下一篇长文,里面细数了 Debian 内部的各种问题,引起各方热议。 在写下这篇文章的几个星期前,Michael 在苏黎世 Debian 聚会上见了一...阅读全文

博文 2021-12-06 13:55:33 中文开源技术交流社区

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

time desc limit 17.总结本文整理了业务中使用influxdb到的问题,并提出了一些优化方案。目前来看,influxdb对于笔者仍然是一个黑盒程序,更细致的内容就需要从源码追寻。当前采用了如下方式进行优化(由于需要对配置参数,策略各方面权衡,这是一个持续的过程):(1) retention policy#将保留策略修改为:3天一周期;1天一分片 alter retention policy rp_iot_cloud on iot_cloud duration 3d REPLICATION 1 SHARD DURATION 1d default(2) 配置文件#influxdb配置文件,主要参数如下: [data] #wal日志落盘周期,官方建议0-100ms #尝试了100ms...阅读全文

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

journalctl 清理journal日志 - 九重霄

/dev/kmsg 中读取内核产生的日志消息。 TTYPath= 指定 ForwardToConsole=yes 时所使用的控制台TTY, 默认值是 /dev/console LineMax= 在将日志流转化为日志记录时,每条日志记录最大允许的长度(字节)。 如果将单元的标准输出(STDOUT)/标准错误(STDERR)通过流套接字连接到日志中, 那么将会以换行符("\n", ASCII 10)与NUL字符("\0", ASCII 0)作为分割符, 把日志流切分成一条条独立的日志记录。 如果超过此处设置的长度之后仍然没有到分割符, 那么将会自动插入一个分割符,以强制将单行超长日志截断为多行。 此选项的值越大,每个日志流客户端日志守护进程占用的内存也越大(最大值等于此选项的值)。 另外,此选项的值...阅读全文

博文 2021-02-05 15:43:28 博客园

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

schema。我们还需要检查check插件来避免周末的推送。 Annealing插件和Kubernetes控制器在有些方面很类似,它们都抽象了操作生产环境特殊方面的逻辑。但是,实现上这两有所不同: Kubernetes控制器监控资源的变化。Annealing插件除非被显式调用否则什么也不做。Annealing插件更细粒度。一个Kubernetes控制器可能会检查某个操作是否需要(asset插件diff),验证现在是否可以推送这个变更(check插件),以及执行变更(asset插件push)。 Enforcer独立处理每个asset。最初,我们在决策之前都会尝试评估所有asset,但是到了可扩展性的问题。 如图9所示,Enforcer按照如下步骤为每个asset运行着一个永久的循环: Pinning...阅读全文

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

王垠:如何掌握所有的程序语言

法完成 你别跟我讲 for 循环,函数什么的了…… 可不可以等几个月,等我背熟了 printf 的用法再学那些啊? 所以你就发现一旦被差劲的老师教过,这个程序员基本就毁了。就算到好的老师,他们也很难纠正过来。 当然这是一个夸张的例子,因为 printf 根本不算是语言特性,但这个例子从同样的角度说明了次要肤浅的语言特性带来的问题。 这里举一些次要语言特性的例子: C 语言的语句块,如果里面只有一条语句,可以不打花括号。 Go 语言的函数参数类型如果一样可以合并在一起写,比如 func foo(s string, x, y, z int, c bool) { ... } Perl 把正则表达式作为语言的一种特殊语法 JavaScript 语句可以在某些时候省略句尾的分号 Haskell 和...阅读全文

博文 2017-07-10 10:13:17 debian.cn

Web前端知识体系精简

this this 存在于函数中,它指向的是该函数在运行时被调用的那个对象。在实际项目中,到this的坑比较多,因此需要对this作深入的理解。 Function对象还提供了call、apply和bind等方法来改变函数的this指向,其中call和apply主动执行函数,bind一般在事件回调中使用,而call和apply的区别只是参数的传递方式不同。关于call,apply和bind的用户请参考博客:详解JS的call,apply和bind 4、构造函数 new JS中的函数即可以是构造函数又可以当作普通函数来调用,当使用new来创建对象时,对应的函数就是构造函数,通过对象来调用时就是普通函数。 普通函数的创建有:显式声明、匿名定义、new Function() 等三种方式。 当通过new来...阅读全文

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

Apollo 配置中心简单介绍

,服务端都会返回304 - Not Modified定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟。客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中客户端会把从服务端获取到的配置在本地文件系统缓存一份 在到服务不可用,或网络不通的时候,依然能从本地恢复配置应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知 4.6.1 配置更新推送实现 前面提到了Apollo客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。 长连接实际上我们是通过Http Long Polling实现的,具体而言: 客户端发起一个Http请求到服务端服务端会保持住...阅读全文

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

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

地实现了进程监测这样的需求。所以,eBPF 可编程的执行引擎非常适合用来将增强可观测性,将丰富的内核数据采集上来,通过关联业务应用,方便问题排查。​三、从监测系统到可观测性随着云原生浪潮,可观测性概念正深入人心。但仍离不开日志、指标、链路这三类可观测领域的数据基石。做过运维或 SRE 的同学经常到这样的问题:半夜被拉到应急群里,披头盖地地被质问为什么数据库不工作了,在没有上下文的情况下,无法立刻抓住问题核心。我们认为好的可观测性平台应该帮助用户很好地反馈上下文,就像 Datadog 的 CEO 说的那样:监测工具不是功能越多功能越好,而是要思考怎样在不同团队和成员之间架起桥梁,尽可能把信息放在同一个页面中(to bridge the gap between the teams and...阅读全文

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

HTTP状态码详解

Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。 426 客户端应当切换到TLS/1.0。(RFC 2817) 449 由微软扩展,代表请求应当在执行完适当的操作后进行重试。 5xx 服务器错误 这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。 这些状态码适用于任何响应方法。 500 服务器到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。 501...阅读全文

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