Debian 爱好者社区 为您找到相关结果 515

深入理解Golang之context

方法时会设置取消原因,将done channel设置为一个关闭channel或者关闭channel,然后将子节点context依次取消,如果有需要还会将当前节点从父节点上移除。WithCancelWithCancel函数用来创建一个可取消的context,即cancelCtx类型的context。WithCancel返回一个context和一个CancelFunc,调用CancelFunc即可触发cancel操作。直接看源:type CancelFunc func() func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { c := newCancelCtx(parent) propagateCancel...阅读全文

博文 2021-01-27 09:05:27 知乎

kubelet 中垃圾回收机制的设计与实现

kubernetes 中的垃圾回收机制主要有两部分组成:一是由 kube-controller-manager 中的 gc controller 自动回收 kubernetes 中被删除的对象以及其依赖的对象;二是在每个节点上需要回收已退出的容器以及当 node 上磁盘资源不足时回收已不再使用的容器镜像;本文主要分析 kubelet 中的垃圾回收机制,垃圾回收的主要目的是为了节约宿主上的资源,gc controller 的回收机制可以参考以前的文章 garbage collector controller 源分析。kubelet 中与容器垃圾回收有关的主要有以下三个参数:--maximum-dead-containers-per-container: 表示一个 pod 最多可以保存多少个...阅读全文

博文 2021-02-05 17:48:22 知乎

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

; 我们告诉kubeadm使用相同的子网。第二个任务在/home/sammy创建一个.kube目录。 此目录将保存配置信息,例如连接到群集所需的管理钥文件以及群集的API地址。第三个任务将从kubeadm init生成的/etc/kubernetes/admin.conf文件复制到非root用户的主目录。 这将允许您使用kubectl访问新创建的集群。最后一个任务运行kubectl apply安装Flannel 。 kubectl apply -f descriptor.[yml|json]是告诉kubectl创建描述descriptor.[yml|json]文件中descriptor.[yml|json]的对象的语法。 kube-flannel.yml文件包含在集群中设置Flannel所需的...阅读全文

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

译:Kubernetes 最佳实践

统中不同组件的交互方式。K8s 官方文档中推荐的 Pod 标签包括名称、实例、版本、组件、部分和管理者。标签也可以以类似于在云环境中对资源使用标签的方式使用,以跟踪与业务相关的事物,例如对象所有权和对象应属于的环境。此外,还建议使用标签来详细说明安全要求,包括机性和合规性。使用网络策略应该使用网络策略来限制 K8s 集群中对象之间的流量。默认情况下,所有容器都可以在网络中相互通信,如果恶意行为者获得对容器的访问权限,从而允许他们遍历集群中的对象,这会带来安全风险。网络策略可以在 IP 和端口级别控制流量,类似于云平台中的安全组的概念,以限制对资源的访问。通常,默认情况下应拒绝所有流量,然后应制定允许规则以允许所需流量。使用防火墙除了使用网络策略来限制 K8s 集群上的内部流量外,还应该在...阅读全文

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

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

),则在下一次推送日志时缩小nextIndex,直到nextIndex验证通过。总结一下就是:当leader和follower日志冲突的时候,leader将校验 follower最后一条日志是否和leader匹配,如果不匹配,将递减查询,直到匹配,匹配后,删除冲突的日志。这样就实现了主从日志的一致性。(二)Raft协议算法代实现前面我们已经大致了解了Raft协议算法的实现原理,如果我们要自己实现一个Raft协议的算法,其实就是将我们讲到的理论知识给翻译成为代的过程,具体的开发需要考虑的细节比较多,代量肯定也比较大,好在有人已经实现了Raft协议的算法了,我们可以直接拿过来使用。创建maven工程并导入jar包地址如下: 阅读全文

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

Jono Bacon: GPL 没落了吗?

客户觉得把他们的代用 GPL 发布不舒服。 随着 大约 65% 的公司对开源事业做贡献 ,自从 2010 年以后显然开源行业已经引来了不少商业兴趣和投资。我相信,我之前说的那些趋势,已经表明这行业不认为 GPL 适合搞开源生意。 连接社区和公司 说真的,GPL 的没落不太让人吃惊,因为有如下原因。 首先,开源行业已经转型升级,它要在社区发展以及……你懂的……真正能赚钱的商业模型中做出均衡,这是它们要做的最重要的决策。在开源思想发展之初,人们有种误解说,“如果你搞出来了,他们就会用”,他们确实会来使用你的软件,但是在很多情况下,都是“如果你搞出来了,他们不是一定要给你钱。” 随着历史的进程,我们看到了许多公司,比如 Red Hat、Automattic、Docker、Canonical...阅读全文

博文 2017-08-04 08:03:43 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 表示当前缓冲区中有效数据的总量...阅读全文

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

发的全链路影子库路由组件借助了 OpenTracing 随行数据透传机制,且与监控组件是强耦合关系,而基础框架将统筹监控,压测和其他模块,借助Spring Boot Starter 机制,一定程度上做到了功能的开箱即用,无缝集成。而使用字节增强方式的 Pinpoint, SkyWalking,无法很好地做到与基础框架集成,若并行开发,也会多出基础框架与 Java Agent 两边的管理和维护成本,减缓迭代速度。 在之后将近两年的时间里,应用服务监控覆盖了得物技术部使用的将近 70% 的组件,为得物App在 2021 年实现全年 99.97% 的 SLA 提供了强有力的支持。现在看来,基于 OpenTracing + Prometheus 生态,很好地解决了分布式系统的调用链监控,借助...阅读全文

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

Docker 核心原理

对 Docker 的使用大部分都比较熟悉,但是说到 docker 的实现原理很多人还是一知半解。我把在团队内部做的一次 Docker 核心原理分享总结到文章里,以供参考。 Docker 的优势 Build once, Run anywhere 上面这句话很精辟的总结了 docker 的优点。我从下面几点具体描述 docker 带给开发者的能力 应用标准化 无论什么语言开发的应用,我们都能用 dockerfile 和构建脚本方便的进行应用构建打包,代库 + 构建 + registry 统一了 CI/CD 流程,也提升了效率。 环境一致 由于应用和依赖全部构建成镜像,做到了一次构建多次交付,无论是开发,测试还是上线环境都是一致的。大大提高了开发效率 应用隔离 由于通过 docker 部署的应...阅读全文

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

Apache Kafka发布 3.0 正式版

方法接受Instant数据类型的参数。此更改将影响需要实现新方法的任何自定义只读交互式查询会话存储实现。KIP-622:添加currentSystemTimeMs和currentStreamTimeMs到ProcessorContext该ProcessorContext增加在3.0两个新的方法,currentSystemTimeMs和currentStreamTimeMs。新方法使用户能够分别查询缓存的系统时间和流时间,并且可以在生产和测试代中以统一的方式使用它们。KIP-743:删除0.10.0-2.4Streams 内置指标版本配置的配置值3.0 中取消了对 Streams 中内置指标的旧指标结构的支持。KIP-743正在0.10.0-2.4从配置属性中删除该值...阅读全文

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

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 知乎

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

提供关注点分离,并专注于特定功能,以减少意大利面条的依赖性和不可测的组件 对于Sidecar容器一般来说主要体现在以下4种角色: 代理。例如现在Istio中的Envoy。 通过这种Sidercar 模式,代理可以拦截进出主容器的流量从而Istio可以提取有关流量行为的大量信号作为属性。 Istio可以使用这些属性来执行策略决策,并将其发送到监视系统以提供有关整个网格行为的信息。 Sidecar代理模型还允许您将Istio功能添加到现有部署中,而无需重新构造或重写代。 适配器。适配器容器对输出进行标准化。考虑监视N个不同应用程序的任务。可以使用不同的导出监视数据的方式来构建每个应用程序。 (例如JMX,StatsD,特定于应用程序的统计信息),但每个监控系统都希望其收集的监控数据具有一致且统...阅读全文

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

Gitlab CI 配置文件 .gitlab

no 定义此作业完成部署的环境名称 coverage no 定义给定作业的代覆盖率设置 script script是Runner执行的yaml脚本。举个例子: job: script: "bundle exec rspec" 该参数也可以用数组包含多个命令: job: script: - uname -a - bundle exec rspec 有时候,script命令需要被单引号或者是双引号包裹起来。举个例子,当命令中包含冒号(:)时,script需要被包在双引号中,这样YAML解析器才可以正确解析为一个字符串而不是一个键值对(key:value)。使用这些特殊字符的时候一定要注意::,{,},[,],,,&,*,#,?,|,-,<,>,=,!。 stage stage允许一组jobs进入...阅读全文

博文 2018-12-12 21:01:19 ci.yaml 详解(上)

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

来实现,直接在代里写前缀的做法要严格避免,这样可维护性实在太差了。 如:系统名:业务名:业务数据:其他 但是注意,key的名称不要过长,尽量清晰明了,容易理解,需要自己衡量 10.线上禁止使用monitor命令 禁止生产环境使用monitor命令,monitor命令在高并发条件下,会存在内存暴增和影响Redis性能的隐患 11.禁止大 string 核心集群禁用1mb的string大key(虽然redis支持512MB大小的string),如果1mb的key每秒重复写入10次,就会导致写入网络IO达10MB; 12.redis容量 单实例的内存大小不建议过大,建议在10~20GB以内。 redis实例包含的键个数建议控制在1kw内,单实例键个数过大,可能导致过期键的回收不及时。 13 可靠...阅读全文

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

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

。 但如果一个事务中的命令有非语法类的错误(比如对String执行HSET操作),无论客户端驱动还是Redis都无法在真正执行这条命令之前发现,所以事务中的所有命令仍然会被依次执行。在这种情况下,会出现一个事务中部分命令成功部分命令失败的情况,然而与RDBMS不同,Redis不提供事务回滚的功能,所以只能通过其他方法进行数据的回滚。 通过事务实现CAS Redis提供了WATCH命令与事务搭配使用,实现CAS乐观锁的机制。 假设要实现将某个商品的状态改为已售: if(exec(HGET stock:1001 state) == "in stock") exec(HSET stock:1001 state "sold"); 这一伪代执行时,无法确保并发安全性,有可能多个客户端都获取到了”in...阅读全文

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