InfraPub 为您找到相关结果 325

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

++规范,国内的阿里Java开发规范等…… 但对于文档 似乎相关的资料却很少。但实际上,不应该把文档和代码割裂开来,你可以简单粗暴地认为文档其实就是用一种特殊语言书写的代码,这种语言就是人类的语言。这么想的话,实际上我们很多在代码和工程中总结出来的经验,也可以直接用在文档中,比如: - 有统一的规范 - 有版本控制 - 有明确的责任人维护 - 有变更Review机制 - 有问题的反馈和更新机制 - 定期更新 - 有衡量的指标(比如准确性,时效性) ## 明确你的读者是谁 ## 写文档有一个很常见的错误,那就是很多人文档都是写给自己看的,这种情况下就会导致你的文档只有自己或者和你有相似知识背景的人才能看懂,团队较时这种问题还好,你们都做着类似的工作,所以也都能看懂文档。但当团队逐渐壮大后,问题就...阅读全文

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

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

有 30 分钟的时间进行支付,如果 30 分钟之内没有支付成功,那么这个订单将进行异常处理,这时就可以使用延时队列来处理这些订单了。 2)订单完成1时后通知用户进行评价。 实现思路:发送延时消息时先把消息按照不同的延迟时间段发送到指定的队列中(topic_1s,topic_5s,topic_10s,…topic_2h,这个一般不能支持任意时间段的延时),然后通过定时器进行轮训消费这些topic,查看消息是否到期,如果到期就把这个消息发送到具体业务处理的topic中,队列中消息越靠前的到期时间越早,具体来说就是定时器在一次消费过程中,对消息的发送时间做判断,看下是否延迟到对应时间了,如果到了就转发,如果还没到这一次定时任务就可以提前结束了。 2.1.6 消息回溯 如果某段时间对已消费消息计算...阅读全文

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

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

,非常的耗时且影响集群的可用性。元数据更新网络开销大整个元数据的更新操作也是以全量推的方式进行,网络的开销也会非常大。强耦合违背软件设计原则Zookeeper对于运维来说,维护Zookeeper也需要一定的开销,并且kafka强耦合与zk也并不好,还得时刻担心zk的宕机问题,违背软件设计的高内聚,低耦合的原则。网络分区复杂度高Zookeeper本身并不能兼顾到broker与broker之间通信的状态,这就会导致网络分区的复杂度成几何倍数增长。zk本身不适合做消息队列zookeeper不适合做消息队列,因为zookeeper有1M的消息大限制 zookeeper的children太多会极大的影响性能znode太大也会影响性能 znode太大会导致重启zkserver耗时10-15分钟...阅读全文

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

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

annotation。将保存着测试证书的 volume 注入到特定命名空间的所有 Pod 中。如果 Secret 中的密码于 20 个字符,就组织其创建。 initializerConfiguration 资源对象允许你声明某些资源类型应该运行哪些Initializers。如果你想每创建一个 Pod 时就运行一个自定义Initializers,你可以这样做: apiVersion: admissionregistration.k8s.io/v1alpha1 kind: InitializerConfiguration metadata: name: custom-pod-initializer initializers: - name: podimage.example.com rules...阅读全文

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

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

很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习。由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 可是逐渐的,我发现原来不只是白们有这个问题,就连美国大公司的很多资深工程师,其实也没搞明白。 今天我有动力了,想来统一回答一下这个搁置已久的“初级问题”。类似的话题貌似曾经写过,然而现在我想把它重新写一遍。因为在跟很多人交流之后,我对自己头脑中的(未转化为语言的)想法,有了更精准的表达。 如果你存在以下的种种困惑,那么这篇文章也许会对你有所帮助: 你是编程初学者,不知道该选择什么程序语言来入门。 你是资深的程序员或者团队领导,对新出现的种种语言感到困惑,不知道该“投资”哪种语言。 你的团队为使用哪种程序语言争...阅读全文

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

OpenAI掌门人Sam Altman:AI的下一个发展阶段_OneFlow

类的价值观)。风险在于,有人担心懂得“自我改进”的AI有可能会像科幻说描写的那样,擅自改动代码或修改优化算法。 我深信,真正有利于促进人类和经济的前行的,是一个能够推动科学进步的社会架构。我们能从这样的社会架构中获益很多。 Audience Member:像GPT-3这样的基础模型会如何影响生命科学研究的步伐?生命科学研究中有没有一些技术手段无法克服的限制因素,比如自然规律等? Sam Altman:目前的可用模型还不够好,不足以对生命科学领域产生重大影响——不少生命科学家了解这些模型之后都说,它们只能在部分情况下发挥些许作用。AI在基因组学领域有一些很有前景的应用方向,但目前尚属起步阶段,不过我很看好。我认为这也是市值千亿的巨头准备进军的领域之一。 如果AI未来真的可以让医药公司的研发速...阅读全文

博文 2023-02-04 15:55:11 CSDN博客

利用 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年

万一千元,其中人民币十万元作为违法所得,予以没收;其中人民币一万一千元,折抵罚金。 三、扣押于公安机关的银色苹果牌笔记本电脑一台、TOKEN 密钥一个,发还北京百度网讯科技有限公司;苹果牌 4S 手机一部、苹果牌 6 手机一部、华为手机一部,退还被告人“安某”。 为什么总是运维人员? 这起挖矿事件虽然告一段落了,但对于众多企业来说,这也是一个提醒,因为除去企业自身的风险外,很多情况下,人为因素也为企业安全风险中带来了很多挑战,企业需要正视长期存在的 IT 运维权限风险问题。 相信大家还记得前不久微盟宕机 36 时的事情,事后,微盟拿出了 1.5 亿商家赔付计划,并表示放弃自建数据库,但这场由运维工程师恶意操作引爆的微盟 300 万商家数据删除案也让大家对数据安全有了更多的恐慌。 而百度的这...阅读全文

博文 2020-03-17 20:42:41 debian.cn

在TKE上使用Kubecost进行成本管理

. **Infrastructure health**:集群基础架构状态评分,比较像我们的集群巡检,给出一些优化建议,例如: - Worker nodes 跨可用区部署。 - Master 多副本。 - 检测 CPU 被 throttling 的 Pod。 ### Cost Allocation ![img](https://main.qcloudimg.com/raw/b9469008a0b87974c3796657ff505efd.png) **上述图中数字序号标示处相关说明可参考下文对应说明介绍**: 1. **显示的指标**: - 累积成本:在选定时间窗口的实际/历史支出。 - 费率指标:每时、每天或每月的成本,基于所选时间窗口中的样本,也用于预计成本。 2. **聚合**: Cost Allocation 可以查...阅读全文

聊聊很重要的内核技术eBPF

或bpftrace等项目间接使用eBPF,这些项目在eBPF之上提供了抽象,并且不需要直接编写程序,而是提供了指定基于意图的定义的功能,然后使用eBPF实施。 如果不存在更高级别的抽象,则需要直接编写程序。 Linux内核希望eBPF程序以字节码的形式加载。虽然当然可以直接编写字节码,但更常见的开发实践是利用LLVM之类的编译器套件将伪C代码编译为eBPF字节码。 在编写eBPF程序之前,需要简单了解几个概念。 1)map(映射) :BPF最令人着迷的方面之一是,内核上运行的代码和加载了该代码的程序可以在运行时使用消息传递相互通信。 BPF映射是驻留在内核中的键/值存储。任何BPF程序都可以访问它们。在用户态中运行的程序也可以使用文件描述符访问这些映射。只要事先正确指定数据大,就可以在映射...阅读全文

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

最全的 DevOps 工具集合

。目前业内常用的配置管理工具包括 Terraform、BOSH、Chef、Ansible、Puppet、Google Cloud Deployment Manager。 Terraform Terraform 是由 HashiCorp 创建的开源基础架构即代码(IaC)软件工具。它让用户能够使用 Hashicorp 配置语言或 JSON(可选)这两种高级配置语言来定义和配置数据中心基础架构。 BOSH BOSH 是一个将型和大规模云软件的发布工程、部署和生命周期管理统一在一起的项目。BOSH 可以在数百个 VM 上配置和部署软件。它还能以接近零的停机时间执行监视、故障恢复和软件更新任务。 虽然 BOSH 是为了部署 Cloud Foundry 而开发的,但它也可以用来部署几乎所有软件(例如...阅读全文

博文 2021-05-26 14:35:21 博客园

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

地化工作也是做得非常到位,而凭借着架构简单,开箱即用的特点,CAT 也是我们得物使用的第一个应用监控系统。 二、 0x01 第一阶段 从0~1基于CAT的实时应用监控 在得物五彩石项目交付之前,系统仅有基础设施层面的监控,CAT 的引入,很好地弥补了应用监控盲区。它支持提供各个维度的性能监控报表,健康状况检测,异常统计,对故障问题排查起到了积极推动的作用,同时也提供简单的实时告警的能力。 CAT 拥有指标分钟级别的聚合统计的能力,从 UI 上不难看出,它拥有丰富的报表统计能力和问题排障能力。 但随着公司业务规模逐步扩大,微服务粒度也不可避免地变,我们发现,CAT 已经逐步无法满足我们的使用场景了: 无法直观呈现全链路视图: 问题排障与日常性能分析的场景也越来越复杂,对于一个核心场景,其内部...阅读全文

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

RabbitMQ 高可用实现镜像队列

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

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

“Debian 章程有毒” - OSCHINA

,都可以向技术委员会寻求建议。 在 Russ Allbery 2014年的辞职信中,他说了许多“累觉不爱”的话: 技术委员会的工作和相关话题已经成为我在 Debian 工作的绝大部分。这并不有趣。我太低估这份工作所需要的情感和注意力了,这比时间投入更加糟糕。 几乎技术委员会的每一个决定都充斥着不愉快,在现有的框架下,技术委员会每做一个决定都需要更多的技巧、关心、注意力和心翼翼,这些使我心理压力巨大。 同时,他还认为管理是必须的,他相信一个大团体的机制中需要更多的管理,这个组织才不会因为分歧而陷入瘫痪。 而 Debian 现在最主要的问题,就是管理缺失。当初,Debian 开发者们通过章程最大程度上架空了 DPL 这一角色,但管理的需求仍在,于是技术委员会就不得不发挥一定的管理作用。 因此,职...阅读全文

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

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

了解决一群人的问题而开发的。或者说,也许一开始的确是因此而开发,但是随便谁都能参与改良和开发的这个特点使得这个软件往更大的方向发展,最后的成品可能是连当初的开发者都未曾想到的。所以最后你拿到手的软件功能和应用范围都是非常广泛的。Debian 自然也采取了这个方法。 我们是从一个非常基础的系统开始做起的。当初,系统只有驱动器和最简单的 Unix,以及我们加的编译器和调试器(因为这是用户感兴趣的重点)。然后我们基本就是在任其发展:比如用户喜欢业余无线电,所以他们就开发了相关软件包然后放到系统里。虽说我对业余无线电基本是一无所知,但是懂的人可以参与进来和我们一起搭建系统。Debian 还带了快速运动跟中资源包,因为我们的系统是分散式的,所以一个个任务都会交给不同的人去做最后在拼凑起来。我可以很自...阅读全文

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

UCloud 叶理灯 谈:Docker、K8S 和 Serverless

减轻用户迁移到 K8S 的负担。 目前 UK8S 插件还属于正在整理开源的阶段,还没有正式的发布,但我们已经范围的开放了代码,把我们的插件代码分发给到很多用户,但公开的开源,我们希望做的更加规范一点再进行,因为我们的插件还在不断的迭代中,有一天我们觉得达到一定程度的稳定了,我们就会进行公开开源。 记者:你认为未来 K8S 以及容器的技术方向上比较值得重点关注的技术点是什么? 叶理灯:虚拟化容器。未来的方向我们相信是 Serverless,这个也是云计算应该做的,持续地为了用户提高效率和降低成本。刚才我也说了,现在用户使用 K8S 还是有资源管理的负担的,不是完全的面向应用来运维,所以需要解决这个问题,让计算节点对用户透明。用户通过 Docker 镜像和配置文件就可以把一个应用跑起来,而不用...阅读全文

博文 2019-06-14 08:28:49 debian.cn

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

对于云主机与云主机之间,只有轻微差异(包场景下,pps 会有 3~5% 损耗),而且Pod网络性能各项指标(吞吐量,包量,延迟等)不会随着节点规模增大而削减。而Flannel UDP,VXLan模式和Calico IPIP的模式存在明显的性能消耗。Pod能直通公有云和物理云。对于使用公有云和物理云的用户而言,业务上K8S少了一层障碍,多了一份便利。而Flannel的host gw模式下,容器无法访问公有云和物理云主机。 而CNI的工作流程如下所示。 创建Pod网络过程: 删除Pod网络过程: Pod IP 消失问题的排查与解决 为了测试CNI插件的稳定性,测试同学在UK8S上部署了一个CronJob,每分钟运行一个Job任务,一天要运行1440个任务。该CronJob定义如下...阅读全文

深入理解Golang之context

() { c.cancel(true, DeadlineExceeded) }) } return c, func() { c.cancel(true, Canceled) } } 如果父节点parent有过期时间并且过期时间早于给定时间d,那么新建的子节点context无需设置过期时间,使用WithCancel创建一个可取消的context即可; 否则,就要利用parent和过期时间d创建一个定时取消的timerCtx,并建立新建context与可取消context祖先节点的取消关联关系,接下来判断当前时间距离过期时间d的时长dur: 如果dur于0,即当前已经过了过期时间,则直接取消新建的timerCtx,原因为DeadlineExceeded; 否则,为新建的timerCtx设置定时器,一旦到达过期时间即取...阅读全文

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

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

0:00 nginx: worker process 19 root 0:00 /pause 24 root 0:00 sh 29 root 0:00 ps auxww Init 容器 在Kubernetes中,init容器是在同一Pod中的其他容器之前开始并执行的容器。它旨在为Pod上托管的主应用程序执行初始化逻辑。例如,创建必要的用户帐户,执行数据库迁移,创建数据库结构等。 创建initcontainer时应考虑一些注意事项: 它们总是在Pod中的其他容器之前执行。因此,它们不应包含需要很长时间才能完成的复杂逻辑。启动脚本通常很而简洁。如果发现要向初始化容器添加太多逻辑,则应考虑将其中的一部分移至应用程序容器本身。 初始化容器按顺序启动和执行。除非一个初始化容器被成功执行,否则下一个初...阅读全文

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

Monit:开源服务器监控工具

Monit是一个跨平台的用来监控Unix/linux系统(比如Linux、BSD、OSX、Solaris)的工具。Monit特别易于安装,而且非常轻量级(只有500KB大),并且不依赖任何第三方程序、插件或者库。 Monit可以监控服务器进程状态、HTTP/TCP状态码、服务器资源变化、文件系统变动等等,根据这些变化,可以设定邮件报警、重启进程或服务。易于安装、轻量级的实现以及强大的功能,让Monit成为一个理想的后备监控工具。 官网:https://mmonit.com/monit文档:https://mmonit.com/monit/documentation/monit.html最新版本:https://mmonit.com/monit/dist/monit-5.20.0...阅读全文

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

在 Kubernetes 上扩展 TensorFlow 模型

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

Apache Flink 1.14 新特性预览 - OSCHINA

; 第二个问题是只能针对特定的 StateBackend 来使用,目前在做的 Generalized Incremental Checkpoint 实际上能够保证的是,它与 StateBackend 是无关的,从运行时的机制来保证了一个比较稳定、更的 Checkpoint 间隔。 Unaligned Checkpoint 在 Flink 1.13 就已经发布了,在 1.14 版本主要是针对 bug 的修复和补充,针对 Generalized Incremental Checkpoint,目前社区还在做最后的冲刺,比较有希望在 1.14 中和大家见面。 [2] [2] Generalized Incremental Checkpoint 最终在 1.14 中没有完成。 四、性能与效率 1. 大规...阅读全文

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

深入了解Docker背后的namespace技术

", strerror(errno)); exit(EXIT_FAILURE); } // lets wait on our child process here before we, the parent, exits if (waitpid(pid, NULL, 0) == -1) { fprintf(stderr, "failed to wait pid %d\n", pid); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); } 这是个的C程序,可以让你执行./a.out ip a。它把你通过命令行传入的参数,作为任何你想使用的进程的参数。不用担心具体实施太多,因为我们将要做的事情将要发生有趣的变化。它将会用任何你想要的参数执行你希望的程序。这意味着如果你想执行下面...阅读全文

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

Apollo 配置中心简单介绍

=SomeCluster这里注意apollo.cluster为全写 4.3 自定义Namespace 【本节仅对公共组件配置或需要多个应用共享配置才需要,如没有相关需求,可以跳过本节】 如果应用有公共组件(如hermes-producer,cat-client等)供其它应用使用,就需要通过自定义namespace来实现公共组件的配置。 4.3.1 新建Namespace 以hermes-producer为例,需要先新建一个namespace,新建namespace只有项目的管理员才有权限,管理员可以在页面左侧看到“添加Namespace”按钮。 点击后就进入namespace添加页面,Apollo会把应用所属的部门作为namespace的前缀,如FX。 4.3.2 关联到环境和集群 Namespace创建完,需...阅读全文

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

HTTP状态码详解

值服务中很普遍。同样,410响应也被用于通知客户端在当前服务器站点上,原本属于某个个人的资源已经不再可用。当然,是否需要把所有永久不可用的资源标记为’410 Gone’,以及是否需要保持此标记多长时间,完全取决于服务器拥有者。 411 服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 Content-Length 头之后,客户端可以再次提交该请求。 412 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息(请求头字段数据)中设置先决条件,以此避免该请求方法被应用到其希望的内容以外的资源上。 413 服务器拒绝处理当前请求,因为该请求提交的实体数据大超过了服务器愿意或者...阅读全文

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