InfraPub 为您找到相关结果 324

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

、Hyperloglogs等。 Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数据自动分片能力。 Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线程安全的(因为只有一个线程),其所有操作都是原子的,不会因并发生数据异常 Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1)) 使用高耗时的Redis命令是很危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。(例如时间复杂度为O(N)的...阅读全文

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

深入了解Docker背后的namespace技术

的demo之一,同时它会生一个shell会话,这样你就可以在你的namespace中“闲逛”。你可以自己的方式探索与检查这些不同的namespace。因此让我们复制这个文件,并开始使用network namespace。 > cp skeleton.c network.c 在这个文件里有一个很特殊的变量,叫做clone_flags,大部分的变化将在此处发生。namespace主要由clone标志控制。network namespace的clone标记是CLONE_NEWNET。我们需要把int clone_flags = SIGCHLD;这一行改为 int clone_flags = CLONE_NEWNET | SIGCHLD;。这样调用clone就为我们创建一个新的network...阅读全文

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

Debian Live 项目的剧变

debian-cd 和 Debian Installer 团队合作开发 live-build-ng 。 Debian Live 是一个「官方的」 Debian 项目(也可以是狭义的「官方」),尽管它因为思路上的不同生过争论。除此之外, vmdebootstrap 的维护者 Neil Willians 为脱离 Debian Live 项目提供了如下的解释: 为了更好的支持 live-build 的代替者, vmdebootstrap 肯定会被推广。为了能够用 live-build 解决目前存在的问题,这项工作会由 debian-cd 团队来负责。这些问题包括可靠性问题,以及不能很好的支持多种机器和 UEFI 等。 vmdebootstrap 也存在着这些问题,我们用来自于对 live-boot 和...阅读全文

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

利用 NAT VPS 进行流量中转

port 端口号如需只允许 UDP 入站:1sudo ufw allow proto udp from 中转机地址 to any port 端口号以上命令中,中转机地址 为 NAT VPS 的公网 IP 地址。其他系统、其他防火墙控制软件的操作与之类似,放行来自 NAT VPS 的 IP 的指定端口号即可。 一些大陆 NAT VPS 商注:本小节包含的链接含有 aff 值。CloudIPLC:热门稳定,价格合理,需要及时关注补货情况碳云:价格较低,年付套餐手慢则无AkkoCloud:二次元风格的网站,品同样抢手 ReferencesHow to open and close ports on RHEL 8 / CentOS 8 LinuxPort ForwardingNAT 主机的正确食用方法通...阅读全文

博文 2021-03-11 21:16:11 Silearner

百度运维工程师挖矿实录:四个月用155台服务器挖矿赚10万判3年

和对生系统的访问控制就变成了一个现实可控的问题。明略科技曾经在接受采访时表示: 对于运维人员的审核,最好对每个运维线上的操作都能“操作前有审批”、“操作中有记录”、“操作后有核对”,在数据备份方面要做到权责分离。 当然,这不失为一个好办法,但对于运维员工自身来说,保持基本的职业操守或许更为重要。...阅读全文

博文 2020-03-17 20:42:41 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 表示当前缓冲区中有效数据的总量...阅读全文

Docker 17.06 社区版发布

今天我们发布了Docker CE 17.06,它包含了诸多新特性、优化和bug修复。我们在四月份的DockeCon上公布了Moby项目,Docker CE 17.06是第一个完全构建在它基础上的Docker版本。变更日志中能看到完整的更新列表,我们来看看它的一些新特性。 我们也为这篇文章制作了一个视频版本。 多阶段构建 17.06 CE最大的特性是它的多阶段构建(multi-stage builds),它最初在四月的DockerCon被公布,现在已经达到了稳定版本。多阶段构建能从一个Dockerfile中构建出更加简洁、体积更小的Docker镜像。 多阶段构建通过构建过渡镜像并生输出。这样就能在一个过渡镜像中编译代码,在最终的镜像中只使用它的输出。例如,Java开发者通常使用Apache...阅读全文

博文 2017-06-30 23:08:57 debian.cn

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

。 Netpoll Netpoll 是字节跳动内部的 Golang 高性能、I/O 非阻塞的网络库,专注于 RPC 场景。 RPC 通常有较重的处理逻辑(业务逻辑、编解码),耗时长,不能像 Redis 一样采用串行处理(必须异步)。而 Go 的标准库 net 设计了 BIO(Blocking I/O) 模式的 API,为了保证异步处理,RPC 框架设计上需要为每个连接都分配一个 goroutine,这在空闲连接较多时,生大量的空闲 goroutine,增加调度开销。此外,net.Conn 没有提供检查连接活性的 API,很难设计出高效的连接池,池中的失效连接无法及时清理,复用低效。开源社区目前缺少专注于 RPC 方案的 Go 网络库。类似的项目如:evio、gnet 等,均面向 Redis、Haproxy...阅读全文

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

基于thanos搭建分布式prometheus

external_labels: cluster: 158 rule_files: - /etc/prometheus/rules/*.yml remote_write: - url: http://receive集群的service ip:19291/api/v1/receive scrape_configs: remote_write部分的IP填写receive集群对外暴露的入口IP,端口是receive组件的remote-write专用端口19291,URI部分是固定的。 最后 thanos官方提供了一个sidecar方案的交互式教程,帮助大家理解thanos整个组件关系和配置过程,建议学习:https://katacoda.com/thanos/courses/thanos,实际生中建议采用方案2。 如果文章...阅读全文

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

开源社区的运作模式:Debian Vs. Ubuntu

定自己的策略,在遵循开发者成员委员会规定的基本原则下,可以自行增加新成员。 Ubuntu贡献开发人员是一种中间身份,他还没有为成为其他开发者身份做好准备,但表达了成为Ubuntu成员的决心。 所有这些身份都可以通过类似的方法取得:创建一个Wiki页面列举你过去所做出的贡献;从与你一起工作过的现有成员那里收集证明;将你自己添加到下一次委员会会议的议事日程中,并准时参加会议。委员会成员将会查看你的Wiki页面,并根据你在会议(以及平时的开发者邮件列表)上的作答情况,以及其他人对你的意见,审核你是否能通过。 最重要的委员会成员是由社区选举生的,而其他一般的角色是由社区委员会任命的。这些治理主体包括Canonical员工,但并没有想象的那么多人:开发者成员委员会总共有8人,其中2人是...阅读全文

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

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

建议。 实现:根据来自社区的反馈意见,提案开始实现。 针对所实现的提案的反馈:在开发周期中,Go 开发团队和社区试用新功能并且收集进一步的反馈意见。 启动决策:在三个月的开发周期结束时,根据在发布周期中收集的经验和反馈意见,Go 开发团队会考虑变更的预期收益或生的额外成本,从而最终决定是否发布每个变更。一旦发布,这些被发布的提案就成为语言和库的一部分。未被发布的提案可能会重新起草,但也有可能会被永久拒绝。 可以看到,通过两轮的反馈过程,可对提案进行有效的筛选,从而防止“功能蔓延(feature creep)”,有助于保持 Go 语言的简洁。 提案选择标准 一项提案至少要满足以下这些条件: 解决大部分使用者觉得重要的问题 不会对其他使用者造成太大的影响 提供一个清晰且易于理解的解决方案 条件...阅读全文

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

。即使用户空间的占用率提高一倍,其CPU占用率也仅为10%,这也解释了为何7层处理对性能影响有限这一现象。由此,在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。 在生环境中,在7层处理上使用HAProxy作为昂贵的高端硬件负载均衡设备故障故障时的紧急解决方案也时长可见。硬件负载均衡设备在“报文”级别处理请求,这在支持跨报文请求(request across multiple packets)有着较高的难度,并且它们不缓冲任何数据,因此有着较长的响应时间。对应地,软件负载均衡设备使用TCP缓冲,可建立极长的请求,且有着较大的响应时间。 二,安装配置HAProxy 以下实验环境均为 Debian i686平台。 1,安装haproxy [root@LB ~]# apt-get...阅读全文

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

Apollo 配置中心简单介绍

、Thread Pool Size、Buffer Size、Request Timeout、Feature Switch、Server Urls等。配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。配置可以有多种加载方式 配置也有很多种加载方式,常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等配置需要治理 权限控制 由于配置能改变程序的行为,不正确的配置甚至能引起灾难,所以对配置的修改必须有比较完善的权限控制不同环境、集群配置管理 同一份程序在不同的环境(开发,测试,生)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理框架类组件配置管理 还有一类比较特殊的配置...阅读全文

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

理解 Linux 的虚拟内存

。 内存寻址和分配 我们知道通过虚拟内存机制,每个进程都以为自己占用了全部内存,进程访问内存时,操作系统都会把进程提供的虚拟内存地址转换为物理地址,再去对应的物理地址上获取数据。CPU 中有一种硬件,内存管理单元 MMU(Memory Management Unit)专门用来翻译虚拟内存地址。CPU 还为页表寻址设置了缓存策略,由于程序的局部性,其缓存命中率能达到 98%。 以上情况是页表内存在虚拟地址到物理地址的映射,而如果进程访问的物理地址还没有被分配,系统则会生一个缺页中断,在中断处理时,系统切到内核态为进程虚拟地址分配物理地址。 功能 虚拟内存不仅通过内存地址转换解决了多个进程访问内存冲突的问题,还带来更多的益处。 进程内存管理 它有助于进程进行内存管理,主要体现在: 内存完整性:由于...阅读全文

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

Gitlab CI 配置文件 .gitlab

: stage: build script: make build dependencies: [] 有时候只需要为标签为releases创建artifacts,以避免将临时构建的artifacts传递到生服务器中。 只为tags创建artifacts(default-job将不会创建artifacts): default-job: script: - mvn test -U except: - tags release-job: script: - mvn package -U artifacts: paths: - target/*.war only: - tags 在job成功完成后artifacts将会发送到GitLab中,同时也会在GitLab UI中提供下载。 artifacts:name...阅读全文

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

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

libgraph 的参照对象。因为 VPP 项目整体是一个非常全面的解决方案,从中剥离核心的设计框架为其它轻量级项目所用就变得很有意义。这也是 Libgraph 的生背景。虽然它目前还是DPDK 中相对比较新的 lib,但是其优秀的设计思想还是值得学习参考。 下面将首先介绍 libgraph 架构的核心概念:标量和向量包处理(scalar vs vector packet processing)以及它们之间的区别。然后再介绍 libgraph 中的核心组件,以及它们之间的联系和交互方式。最后,我们将介绍 libgraph 的具体用例以及优缺点。 背景 DPDK libgraph 是一个向量包处理的框架。与传统的标量包处理模型(一系列函数负责处理一个数据包,重复直到所有数据包处理完毕)相比,向量数据包处理...阅读全文

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

Git 介绍与使用详解

前言 Git是目前非常流行的协同开发工具,很多开源网站都使用Git作为代码管理仓库(例如 开源中国,GitHub),不管是开发还是品、设计师,Git都很适合,而且很多IDE默认集成了Git,熟练的使用Git会起到事半功倍的效果,所以今天我为大家分享一下Git的介绍与使用。 1.Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。 1.1什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。如果你是位网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本。 有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你也可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题...阅读全文

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

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

容器要求。换句话说,即使有一个未使用的节点可以在其中运行应用程序容器,但如果初始化容器具有该节点可以处理的更高资源先决条件,则Pod也不会部署到该节点。因此,在定义初始化容器的请求和限制时,您应尽可能严格。最佳做法是,除非绝对必要,否则请勿将这些参数设置为高于应用程序容器的值。 标准容器和Sidecar容器 在k8s1.18 之前,这两种容器从k8s管理的角度来看,并没有什么区别。只不过人为从功能上做了区分。 使用sidecar容器(模块化)具有的优点 加速应用程序开发,因为容器可以在团队甚至更大的社区之间重复使用 整理专家知识,因为每个人都在一个容器化的实现上进行协作,该实现反映了最佳实践,而不是无数种功能大致相同的自家生的不同容器 启用敏捷团队,因为容器边界是自然边界,是团队职责的契约...阅读全文

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

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

现过于复杂,所以 go 语言团队在最新1.15版本还没有着手实现。目前根据相关资料,考虑influxdb运行时会占用大规模内存,建议通过如下方式启动influxdb:numactl --interleave=all /usr/bin/influxd -config /usr/bin/influxdb.conf6.读取端优化从系统角度,应该同时关注influxdb写入和读取两个维度。写入端应从具体业务场景,提前划分好写入的tags及fields,从而避免生大量的series导致内存膨胀过快。而读取端,应明确查询时间范围,命中更少的分片数据,来防止加载大量的无用查询结果而导致程序OOM。走查了读取端相关influxdb查询语句,发现几处类似如下消耗内存及性能的语句:#表描述 - 表名...阅读全文

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

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

5.1 中被引入的新的功能特性和功能提升。你不需要动 JavaScript 就可以利用上这些功能特性。并非所有的浏览器都支持这些功能特性,因此你最好是在将它们应用于生环境之前先检查一下浏览器的支持情况。 14. 预防网络钓鱼攻击 大多数使用 target='_blank' 的开发者都不了解一个事实——最新打开的标签可以改变 window.opener.location 到一些钓鱼网页。它将会在已打开的网页,以你的名义执行一些恶意 JavaScript 代码。因为用户相信已经打开的网页,他们不会起疑心。 为了彻底解决这个问题,HTML5.1 已经标准化 rel=”noopener”的使用属性,与浏览器的上下文环境分开。rel=”noopener” 允许在 标签之间使用...阅读全文

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

中国开源人访谈系列之:清风博主

关的行业,不是没想过,但已经熬不了夜了,还是多给年轻人一些机会嘛(好吧,其实是水平实在有限,啥也干不了)。 5.您使用开源软件对您的学生有没有生影响呢? 答:对于中学生,基本没影响。一,我不是信息技术老师,只是个教地理的;二,即便是现在的中学信息技术教学,在现行的IT教育模式下,也没办法施加影响。 6.电脑高手在学校,大家日常工作是怎么看您的呢?会叫您“修电脑”吗? 答:硬件维修不至于找我,还有信息技术老师呢!不过,装个系统是常有的事,或者经常被问一些软件方面的问题,你懂的,交流始终不在一个频道,不胜其烦。再者,有一次犯了强迫症,把老婆电脑的重要数据给清理掉,被下了不许碰她电脑的禁令,就更没有耐心管别人的事了。所以,强烈建议:喜欢清理电脑且有强迫症的同学(这样的人会很多吧),千万不要乱动老...阅读全文

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

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

Kubernetes对象的关系。 豆荚在Kubernetes中无处不在,因此了解它们将有助于您的工作。部署概述 - 提供部署概述 。 了解部署控制器如何工作非常有用,因为它们在无状态应用程序中经常用于扩展和不健康应用程序的自动修复。服务概述 - 涵盖服务,Kubernetes集群中另一个常用对象。 了解服务类型及其选项对于运行无状态和有状态应用程序至关重要。 您可以研究的其他重要概念是Volumes , Ingresses和Secrets ,所有这些在部署生应用程序时都会派上用场。 Kubernetes提供了许多功能和特性。 Kubernetes官方文档是了解概念,查找特定于任务的指南以及查找各种对象的API参考的最佳位置。...阅读全文

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

HTTP状态码详解

息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如,包含资源的元数据可能导致原始服务器知道元信息的超级。使用此状态码不是必须的,而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。 204 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或更新后的元信息。如果存在这些头部信息,则应当与所请求的变量相呼应。 如果客户端是浏览器的话,那么用户浏览器应保留发送了该请求的页面,而不生任何文档视图上的变化,即使按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。 由于204响应被禁止包含任何消息体,因此它始终以消息头后的第一个空行结尾。 205...阅读全文

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

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

与Y的最后一个元素相同,这说明该元素一定位于公共子序列中。因此,现在只需要找:LCS(Xn-1,Ym-1)就好,LCS(X,Y)=LCS(Xn-1,Ym-1)+1;如果xn != ym,这下要麻烦一点,因为它生了两个子问题:LCS(Xn-1,Ym) 和 LCS(Xn,Ym-1)。 动态规划解法:先创建一个解空间即数组,因为给定的是两个字符串即两个一维数组存储的数据,所以要创建一个二维数组,设字符串X有n个值,字符串Y有m个值,需要创建一个m+1*n+1的二维数组,二维数组每个位置(i,j)代表当长度为i的X子串与长度为j的Y的子串他们的最长公共子串,之所以要多创建一个是为了将边界值填入进去,边界值就是第一行跟第一列,指X长度为0或者Y长度为0时,自然需要填0,其他位置填数字时,当这两个位置...阅读全文

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