InfraPub 为您找到相关结果 68

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

者的工作方式类似,但有一点区别:与验证链和授权链不同,如果某个准入控制器检查不通过,则整个链会中断,整个请求将立即被拒绝并且返回一个错误给终端用户。 准入控制器设计的重点在于提高可扩展性,某个控制器都作为一个插件存储在 plugin/pkg/admission 目录中,并且与某一个接口相匹配,最后被编译到 kube-apiserver 二文件中。 大部分准入控制器都比较容易理解,接下来着重介绍 SecurityContextDeny、ResourceQuota 及 LimitRanger 这三个准入控制器。 SecurityContextDeny 该插件将禁止创建设置了 Security Context 的 Pod。ResourceQuota 不仅能限制某个 Namespace 中创建资...阅读全文

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

协议介绍之深入了解 gRPC

HTTP header。HTTP header 各个 fields 使用 \r\n 分隔,然后跟 body 之间使用 \r\n\r\n 分隔。解析完 header 之后,我们才能从 header 里面的 content-length 拿到 body 的 size,从而读取 body。 这套流程其实并不高效,因为我们需要读取多次,才能将一个完整的 HTTP 请求给解析出来,虽然在代码实现上面,有很多优化方式,譬如: 一次将一大块数据读取到 buffer 里面避免多次 IO read 读取的时候直接匹配 \r\n 的方式流式解析 但上面的方式对于高性能服务来说,终归还是会有开销。其实最主要的问题在于,HTTP/1.x 的协议是 文本协议,是给人看的,对机器不友好,如果要对机器友好,二协议才是更好的...阅读全文

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

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

“模式浏览器(Schema Explorer)”这样可以执行定期模式检查的特性也是值得拥有的。 忘记排序规则(排序顺序) 这比其他任何的配置错误都会导致更多的挫折和时间浪费。MongoDB 默认使用 二排序规则 。这对任何地方的文化都是不利的。在 80 年代,大小写敏感、重音敏感、二排序规则,和念珠、土耳其长衫和卷胡子一起,被视为奇怪的时代错误。现在,他们没法辩解了。在现实生活中,motorbike 和 Motorbike 就是一样,而 Britain 和 britain 就是同一个地方。小写字母和大写字母只是书写上的等价。就不要让我再说重音字符排序规则了。当你创建一个 MongoDB 数据库时,使用一种合乎系统 用户语言和文化 的 重音敏感、大小写敏感 排序规则。这使得字符串数据的检...阅读全文

粘合万种芯片的“万能胶” 是摩尔定律的续命丹吗? - 硬件

进的前道晶圆工艺节点往往是芯片最佳性能的象征,最先进的工艺节点往往引领芯片性能发展的潮流。但到了Chiplet时代,单个先进工艺节点的竞争力有可能被多芯片异构系统集成取代,异构集成能力逐渐成为评价一家芯片设计或制造公司的新标准。"刘宏钧补充到。"也正因如此,英特尔主导参与了UCIe标准的建立,以期构建一个围绕Chiplet技术的生态圈,对其IDM2.0战略升级而言至关重要。"值得一提的是,当先程对芯片性能提升的重要性程度被削弱时,对于在晶圆制造领域并不领先的中国大陆芯片产业的发展有利,尤其是中国大陆在先进封测领域位居世界前列,Chiplet时代有望占据一定优势。"相比先造,在先进封装上,中国与国际先进水平的差距并不大,Chiplet的出现对我国芯片产业的发展有利。"戴伟民说道。从成本...阅读全文

博文 2022-04-08 07:35:46 cnBeta.COM

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

显著的性能提升。 但是观测上图,我们发现了新的性能黑点,如红框所述,我们将其展开,见详细图: 这里主要是一个 toHexString 的操作,竟然占用的cpu资源这么大,这里需要定位。 9.4 ObjectId.toHexString 性能优化 查看这一步转换为16的字符串的代码如下,我们结合上面的火焰图可以看出来,主要耗时是在 String.format() 这一步操作。 private String toHexString() { StringBuilder buf = new StringBuilder(24); byte[] bytes = new byte[12]; bytes[0] = int3(this.timestamp); bytes[1] = int2...阅读全文

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

Jono Bacon: GPL 没落了吗?

、Digital Ocean 等等等等,探索着在开源领域中赚钱的法子。他们探索过分发模式、服务模式,核心开源模式等等。现在可以确定的是,传统的商业软件赚钱的方式已经不再适用开源软件;因此,你得选择一个能够支持你的公司的经营方式的开源协议。在赚钱和免费提供你的技术之间找到平衡在很多情况下是很困难的一件事。 这就是我们看到那些变化的原因。尽管 GPL 是一个开源协议,但是它根本上是个自由软件协议,作为自由软件协议,它的管理以及支持是由自由软件基金会提供的。 我喜欢自由软件基金会的作品,但是他们已经把观点局限于软件必须 100% 绝对自由。对于自由软件基金会没有多少可以妥协的余地,甚至很多出名的开源项目(比如很多 Linux 发行版)仅仅是因为一丁点二固件就被认为是 “非自由” 软件。 对于商业来说,最复杂...阅读全文

博文 2017-08-04 08:03:43 debian.cn

聊聊很重要的内核技术eBPF

中存储任何类型的数据。内核将键和值视为二 blobs,它并不关心您在映射中保留的内容。 BPF验证程序包括多种保护措施,以确保您创建和访问映射的方式是安全的。当我们解释如何访问这些映射中的数据时,我们也将解释这些保护措施。 当然BPF映射类型有很多,比如哈希表映射,数组映射,Cgroup 数组映射等,分别满足不同的场景。 2)验证器 BPF验证程序也是在您的系统上运行的程序,因此,对其进行严格审查是确保其正确执行工作的目标。 验证程序执行的第一项检查是对VM即将加载的代码的静态分析。第一次检查的目的是确保程序有预期的结果。为此,验证程序将使用代码创建有向循环图(DAG)。验证程序分析的每个指令将成为图中的一个节点,并且每个节点都链接到下一条指令。验证程序生成此图后,它将执行深度优先搜索...阅读全文

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

字节跳动开源微服务中间件 CloudWeGo - OSCHINA

/kitex-benchmark。 扩展性:Kitex 设计上做了模块划分,提供了较多的扩展接口以及默认的扩展实现,使用者也可以根据需要自行定制扩展。Kitex 未耦合 Netpoll,开发者可选择其他网络库扩展使用。 消息协议:RPC 消息协议默认支持 Thrift、Kitex Protobuf、gRPC。Thrift 支持 Buffered 和 Framed 二协议;Kitex Protobuf 是 Kitex 自定义的 Protobuf 消息协议,协议格式类似 Thrift;gRPC 是对 gRPC 消息协议的支持,可以与 gRPC 互通。除此之外,使用者也可以扩展自己的消息协议。 传输协议:传输协议封装消息协议进行 RPC 互通,传输协议可以额外透传元信息,用于服务治理,Kitex 支持的...阅读全文

博文 2021-09-09 13:56:42 中文开源技术交流社区

互联网协议正在发生变化

在已经被广泛部署,并且被所有的主流浏览器和 web 服务器支持。 从网络的角度来看,HTTP/2 带来了一些显著变化。首先,这是一个二协议,因此,任何假定它是 HTTP/1.1 的设备都会出现问题。 这种破坏性问题是导致 HTTP/2 中另一个重大变化的主要原因之一:它实际上需要加密。这种改变的好处是避免了来自伪装的 HTTP/1.1 的中间人攻击,或者一些更细微的事情,比如 strip headers 或者阻止新的协议扩展 —— 这两种情况都在工程师对协议的开发中出现过,导致了很明显的支持问题。 当它被加密时,HTTP/2 请求也要求使用 TLS/1.2,并且将一些已经被证明是不安全的算法套件列入黑名单—— 其效果只允许使用短暂密钥ephemeral keys。关于潜在的影响可以去看...阅读全文

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 详解(下)

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

库。一个恰当的数据库格式,或者至少是二的可交换格式都需要花费很大力气。 Debian Code Search希望尽快接受新包。我们曾经用过Debian的fedmsg实例,但似乎现在已经不见了。目前还不清楚从哪里获取新包的通知,以及获取这些包的最佳位置。 复杂的构建堆栈 请参阅我的这篇文章“Debian软件包构建工具”(https://michael.stapelberg.ch/posts/2016-11-25-build-tools/)。让我感到困惑的是其他人不认为工具的蔓延是个问题。 非常痛苦的开发者体验 到目前为止,本文讨论的大多数都是开发Debian的体验,但是正如我最近的这篇文章“Debian中的调试体验”(https://michael.stapelberg.ch/posts...阅读全文

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

journalctl 清理journal日志 - 九重霄

下面的逻辑来覆盖默认设置: 主配置文件最先被读取, 优先级也最低。 所有 *.conf.d/ 中的配置文件 都会覆盖主配置文件中的设置。 所有 *.conf.d/ 中的配置文件(无论位于哪个目录中), 统一按照文件名的字典顺序处理。 当多个配置文件都设置了同一个选项的时候: (1)如果该选项仅接受一个单一值,那么仅以文件名最靠后(字典顺序)的那一个为准; (2)如果该选项可接受一个值列表,那么将会按照文件名的字典顺序将所有值列表拼接起来。 为了便于排序, 建议给所有 *.conf.d/ 中的配置文件 都加上两位十数字的文件名前缀。 如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个配置文件, 那么最佳做法是在 /etc/ 目录中 创建一个指向 /dev/null 的同名符号链接...阅读全文

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

Docker 核心原理

8000 ENTRYPOINT ["./app"] 对于这个例子来说我们其实只需要构建后的二包,其他文件包括 golang 我们都是不需要的。 我们可以把上述构建成两个阶段,可以大大减小构建后的镜像大小 1 2 3 4 5 6 7 8 9 10 11 12 FROM golang:1.15.6-alpine3.12 as builder RUN mkdir -p /src WORKDIR /src COPY src/ . RUN go build -o app . FROM alpine:3.12 COPY --from=builder /src/ . EXPOSE 8000 ENTRYPOINT ["./app"] 1 2 3 4 $ docker image ls REPOSITORY...阅读全文

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

Monit:开源服务器监控工具

不指向目录,monit将禁用对此条目的监视。如果Monit在被动模式下运行或者没有定义启动方法,Monit只会在错误时发送警报。 远程主机 CHECK HOST ADDRESS 主机地址可以指定为主机名字符串或点分十格式的IP地址字符串。例如,tildeslash.com或“64.87.72.95”。 系统 CHECK SYSTEM 的唯一的名称通常是本地主机名,而是可以使用任何描述性名称。如果使用变量$ HOST作为名称,它将扩展为主机名。此检查允许监控一般系统资源,如CPU使用率,总内存使用或负载平均。该唯一名称在邮件警报中用作系统主机名,在M/Monit中用作主机条目的初始名称。 自定义...阅读全文

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

深入了解Docker背后的namespace技术

,OS里指进程识别号)namespace是划分那些一个进程可以查看并与之交互的PID的方式。当我们创建一个新的 PID namespace时,第一个进程的PID会被赋值为1。进程退出时,内核会杀死这个namespace内的其他进程。让我们来通过制作 skeleton.c副本开始我们的改变。 > cp skeleton.c pid.c 创建一个新的 PID namespace,我们需要设置clone_flags为 CLONE_NEWPID. 该变量应该看起来像int clone_flags = CLONE_NEWPID | SIGCHLD;,我们在shell中运行 ps aux,然后以相同的参数编译和运行我们的pid.c二文件。 > ps aux USER PID %CPU %MEM VSZ...阅读全文

博文 2015-05-17 10:03:00 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 博客园

提问的智慧 – 全文

述详细过程也许更有用。这样黑客在阅读你的记录时就知道该注意哪些内容了。 描述目标而不是过程 如果你想知道如何做某事(而不是报告一个bug),你需要在开头就表明你的目标,然后再陈述你遇到问题。 经常出现这种一种情况:寻求技术帮助的人在脑中里有个更高层次的目标,他们自以为按自己的路走能达成目的,但在中途却被卡住了,又跑来问该怎么走,他们从来没有意识到这条路本身有问题,所以他们往往更折腾才能达成目的 愚蠢的提问:我怎样才能让某图形程序的颜色拾取器取得十六的RGB值? 明智的提问:我正试着用自己选定数值的颜色替换一幅图片的色表,我现在知道的唯一方法是编辑每个表槽,但却无法让某图形程序的颜色拾取器取得十六的RGB值。 第二种提法是明智的,它会获得更合适的回答:建议采用更合适的工具来完成任务...阅读全文

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

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

KEYS命令,严格禁止在生产环境中使用) Redis的数据结构和相关常用命令 本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。本节只对Redis命令进行扼要的介绍,且只列出了较常用的命令。如果想要了解完整的Redis命令集,或了解某个命令的详细使用方法,请参考官方文档:https://redis.io/commands Key Redis采用Key-Value型的基本数据结构,任何二序列都可以作为Redis的Key使用(例如普通的字符串或一张JPEG图片) 关于Key的一些注意事项: 不要使用过长的Key。例如使用一个1024字节的key就不是一个好主意,不仅会消耗更多的内存,还会导致查找的效率降低 Key短到缺失了可读性也是不好的,例如”u1000flw”比起...阅读全文

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