InfraPub 为您找到相关结果 276

架构师详解 Nginx 架构

主进程(master process)生成一个子进程(worker process)出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响,如果一个进程发生异常退出时,其它进程正常工作,master 进程则很快启动新的 worker 进程,确保服务部中断,将风险降到最低。缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会致系统性能下降。 异步非阻塞 每个工作进程使用异步非阻塞方式,可以处理多个客户端请求。当某个工作进程接收到客户端的请求以后,调用 IO 进行处理,如果不能...阅读全文

博文 2018-05-01 23:10:47 debian.cn

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

述。 Go 1 和 Go 2 之间的主要区别在于主权的不同。谁将影响设计,又该如何做出决策?我们都知道,Go 1 的诞生是小团队努力的结果,受外部影响不大;而到了 Go 2,尤其是经过将近 10 年的发展后,Go 语言的生态已经十分庞大,因此它也更多地受到社区的驱动和影响。经历了这些,Go 开发团队也了解到了更多一开始不知道的与语言特性和库相关的知识 —— 这些都来自于 Go 社区的反馈。 2015年,Go 开发团队引入了提案流程,以收集特定类型的反馈:针对语言和库变更方面的提案。由 Go 开发团队高级成员组成的委员会定期审查、分类和决定社区提交的提案。这个流程十分有效,但作为该过程的一部分,他们忽略了所有不向后兼容的提案,只是将其标记至 Go 2。到了2017年,Go 开发团队也停止进行...阅读全文

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

起运维人员挖矿致百度损失 2.7 万的事件,同样是运维人员在“涉险”,为什么是运维人员呢? “运维”人员在企业的价值,他们自己的调侃是:当企业没有发生技术故障的时候,大家感觉不到运维人员的存在。当企业发生故障的时候,大家感觉到运维人员确实没有存在的必要。 但调侃归调侃,这反映了技术运维人员在企业中面临的尴尬处境,但实际上,运维人员对于一家企业运营维护的保障,确实是很重要的。他们的职责包括服务器的部署、配置、维护;互联网平台的部署、升级、迁移、数据备份恢复;监控服务器,平台的运行,系统优化等,可以说,他们掌握了企业的后门,一旦运维部门发生危险,公司有可能陷入瘫痪状态,因此,一直以来,运维人员也拥有很多访问权限,而这却变成了运维人员不惜“涉险”的一个原因之一。 于是,如何对运维人员进行权限管理...阅读全文

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

Linux系统诊断-内存基础

swap的方式临时缓解内存不足的问题,但一般不能直接作在线减少swap的操作,很有可能致进程的crash。具体swap配置方式见5.1swap相关配置。OOM=======1.What is OOM?Out Of Memory Killer 是 Linux 的一种系统保护机制,在系统内存紧张时,kill掉某些进程防止系统卡死。系统通过打分机制,来实施对进程的杀死操作。默认机制是通过扫描所有进程的内存占用,cpu占用等因素,然后打分  (badness),分数越高,进程被kill的优先级就越高。2.哪些行为会让系统对进程进行打分?进程使用fork(2)调用,创建众多子进程时,会加分(+)进程已经运行了很长时间,或者和使用了大量的CPU时间,会减分(-)进程的nice值如果比较低,会加分(+)进程如...阅读全文

博文 2021-02-11 14:22:42 SegmentFault 思否

Java Annotations详解

对舍弃的原因加以说明。 @Override @Override被用在方法前,用来说明覆盖了父类中的方法。假如一个方法被@Override修饰,但实际上它并没有覆盖任何方法,则编译器会提示一个错误。 @Override并不是必须的,即覆盖父类方法时,也可以不在子类方法前面添加@Override。但是还是推荐使用@Override,因为这样做是有好处的,至少可以较少一些不必要的错误。如覆盖方法的方法名不对,并没有实现覆盖;或者有人修改了父类中的方法名,致的子类中的覆盖失效,如果有@Override,编译器就会自动提示错误,从而避免了错误。 @SuppressWarnings 使用@SuppressWarnings能够是编译器对指定的方法放弃提示警告。如方法中引用了已经被舍弃...阅读全文

博文 2013-03-02 08:04:55 CSDN博客

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

的资源。例如,如果您的集群的利用率仅为25%,以资源的最大使用量和 Request 来衡量,则 Allocate idle costs 会按比例增加每个 pod/NS/Deployment 的成本到原来的4倍。 6. **图表选择**: 切换到条形图视图以查看所选窗口的汇总成本,或切换到时间序列视图以查看成本随时间的变化。 7. **附加选项**: 查看其他选项以将成本数据出为 CSV 或查看帮助文档。 ### Assets ![img](https://main.qcloudimg.com/raw/275c22510f157d3b3710aa147eb2f69f.png) Kubecost Assets 视图显示了按集群中单个资源细分的 Kubernetes 集群成本(例如,按节点、磁盘...阅读全文

CCPA vs. GDPR:欧美这两部个人数据保护法有什么差异?

易双方处理的数据类型非常复杂且在不断演进更迭,交易双方仅根据GDPR的定义或监管机构的指引,很难判断特定类型数据是否属于GDPR管辖的“个人数据”,致实践中对于“个人数据”这一概念的解释弹性空间极大。例如:通讯网络和设备中(例如核心网存储设备)存储或传输的IMSI、IMEI、ISDN等识别号码,虽也可与其它信息结合间接地识别到特定个人,但识别的过程复杂,需利用一定技术手段,并投入较多时间和成本。 这些成本及投入何时是“合理的”,何时是“不合理的”?对于广大交易双方而言很难判定,致数据的控制者(譬如电信运营商)经常与数据处理者(如通讯设备和运维供应商)之间时常就上述IMSI、IMEI号等数据是否受GDPR管辖这一问题无法达成一致,进而无法在前述DPA《数据处理协议》、SCC《数据跨境转移协...阅读全文

提问的智慧 – 全文

Google搜索时你遇到的各种提示(记得也搜索一下Google groups),这样很可能直接就找到了解决问题的文档或讨论组的相关线索。即使没有结果,在论坛或讨论小组寻求帮助时提一句「我在Google中搜过下列句子,但没有找到什么有用的东西」也是件好事,至少它表明了搜索引擎暂时还不能提供哪些帮助。另外,将搜索关键词与你的问题及可能的解决方案联系起来,还有助于引其他有类似问题的人。 耐心一点,不要指望Google搜索几秒钟就能解决一个复杂的问题。读一下与产品或项目相关的常见问题解答。在向专家提问之前,先稍微放松一下,再深入地思考一下问题。相信我们,他们能从你的提问之中看得出你做了多少阅读与思考的准备功课,如果你是有备而来,专家们很有可能会为你解答。如果你第一次搜索没有结果(或者结果太多),也不要抛出一...阅读全文

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

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

pipe会打开两个文件描述符,因此,“ulimit -n”自动计算时会根据需要调大此值;默认为maxconn/4,其通常会显得过大; – noepoll:在Linux系统上禁用epoll机制; – nokqueue:在BSE系统上禁用kqueue机制; – nopoll:禁用poll机制; – nosepoll:在Linux禁用启发式epoll机制; – nosplice:禁止在Linux套接字上使用内核tcp重组,这会致更多的recv/send系统调用;不过,在Linux 2.6.25-28系列的内核上,tcp重组功能有bug存在; – spread-checks <0..50, in percent>:在haproxy后端有着众多服务器的场景中,在精确的时间间隔后统一对众服务器进行健康状况检...阅读全文

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

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

。FSF 是 Debian 的赞助者,所以自然对我有所期望;但同时我在要求别人在闲时帮忙开发 Debian,所以那些人对我自然也有期望。有时候这两边的期望会出现分歧,我无法两边都满足。」 就这样,Debian 和 FSF 的正式合作关系画上了句号。不过 Murdock 始终都非常强调 Stallman 为 Debian 做出的贡献: 倘若没有他,没有他过去 15 年内从未动摇的坚定立场,我们也就不会有如今「免费软件」的理念。 不久之后,1996 年 3 月,Murdock 决定辞退 Debian 项目领人的身份。 我最近结婚了,我想花更多的时间陪伴我的家人。我已经为 Debian 埋头苦干了三年,我想我也是时候开始新的生活了。 在我们 1999 年面谈的时候,Murdock 表示他看到...阅读全文

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

21款必不可少的Ubuntu桌面应用程序

。 1. Geary电子邮件客户软件 Geary是一款开源桌面电子邮件客户软件,拥有一系列广泛的功能、一个方便的安装向程序,并与Unity桌面整合起来。如果相比其他邮件客户软件(比如Outlook)你更熟悉Gmail,那么会觉得Geary用起来比默认的Ubuntu电子邮件应用软件Thunderbird更容易。 其他替代方案:WMail(Electron)、Evolution和Claws Mail。 2. 谷歌Chrome浏览器 Mozilla火狐Web浏览器已经安装在你的Ubuntu系统上;就大多数任务而言,它的表现不俗。但是如果你更多时候是个谷歌用户,或者在Windows上用过Chrome,就会很高兴可以在Ubuntu上继续使用它。 除了内置和最新的Linux版Flash播放器外,你还可以用...阅读全文

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

一位五年工作经验架构师的感悟

,生存不易,这些经历同样丰富了我,内心也变得越来越强大。这些年影响我最大的一些思想有: 1、不要给自己设限:不在把自己禁锢在舒适区,不要怕前面有挡着你的人 2、缩小自己的反馈环: 3、不断以小的正能量,不断积累成就感。 4、不要怕做决定:错误的决定,比没有决定好。 渐渐地,我从不说的人,变成了比较能说的人,能说可能还不是会说。会说更考验技巧,情商。 渐渐地,周围的人又说我是段子手。 渐渐地,变成了一个经常黑人的人。哈哈。 不断去思考,总结,提炼做事模式,思考方式,这些方式可以指你持续成功。 视野,越大,收获越多,站在全局去看问题,这也是一个架构师需要的。 所以,保持开放心态,视野决定格局,格局改变命运。 写在最后 如果大家能看到最后,首先谢谢。 有的人要骂:标题就是唬人的,一点都没有讲技术...阅读全文

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

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

? $ docker exec -ti 9d8e97e307d7 sh / # 成功了!现在可以 attach 到正在运行的容器中了。看起来很有希望,但还有一个问题。 Alpine 基础镜像是基于 muslc 的 —— C 语言的一个替代标准库,而大多数 Linux 发行版如 Ubuntu、Debian 和 CentOS 都是基于 glibc 的。这两个库应该实现相同的内核接口。但它们的目的是不一样的: glibc 更常见,速度也更快; muslc 使用较少的空间,并侧重于安全性。 在编译应用程序时,大部分都是针对特定的 libc 进行编译的。如果你要将它们与另一个 libc 一起使用,则必须重新编译它们。 换句话说,基于 Alpine 基础镜像构建容器可能会致非预期的行为,因为标准 C 库是不一样的。你可...阅读全文

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

理解 Linux 的虚拟内存

。 在 Linux 中,内存设置被映射为 /dev/mem,root 用户通过对这个文件读写,可以直接操作内存。 JVM 进程占用虚拟内存过多 使用 TOP 查看系统性能时,我们会发现在 VIRT 这一列,Java 进程会占用大量的虚拟内存。 致这种问题的原因是 Java 使用 Glibc 的 Arena 内存池分配了大量的虚拟内存并没有使用。此外,Java 读取的文件也会被映射为虚拟内存,在虚拟机默认配置下 Java 每个线程栈会占用 1M 的虚拟内存。具体可以查看 为什么linux下多线程程序如此消耗虚拟内存。 而真实占用的物理内存要看 RES (resident) 列,这一列的值才是真正被映射到物理内存的大小。 常用管理命令 我们也可以自己来管理 Linux 的虚拟内存。 查看系统内存状...阅读全文

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

在 Kubernetes 上扩展 TensorFlow 模型

。诸如 KFServing 这样的工具可以让你根据需要定制扩展逻辑,包括 RPS 和请求并行目标。 你也可以使用 Kubernetes-native 工具,比如 HPA,根据用户定义的指标对模型进行扩展。你可以研究一下其他很棒的服务工具,比如 Seldon Core 和 BentoML。它们都支持自动扩展,并为自动化服务模型版本、金丝雀发布、更新和生命周期管理提供了许多有用的功能。 #### 作者介绍: Kirill Goltsman,技术博客写手、研究员,专攻研究人工智能 / 机器学习及容器化技术。在过去的几年里,他领了专注于数据分析、Kubernetes 以及游戏和安全领域的人工智能的初创公司的内容创作策略。在他的技术写作中,Kirill 利用了他的编程语言(Javascript...阅读全文

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

拖再拖。我举一个典型的例子:rsync,其维护者完全出于个人的喜好拒绝我的补丁包使用debhelper。 赋予个人维护者如此大的自由,致我们无法开展提高构建Debian软件包抽象级别的项目,这反过来又让工具更加困难。 更好的方式是什么? 作为一个项目,我们应该努力实现更多的统一。统一性并不能完全去除实验,它只是改变了两者的平衡,从简单的实验和难度较高的自动化变成了难度较高的实验和简单的自动化。我们的文化需要从“这个包归我管,你不能碰”转变为共同的所有权意识,项目中的任何人都可以很容易地贡献(经过审查的)变更,而不必凡事都要通过个人维护者。 支离破碎的工作流程和基础设施 Debian似乎更倾向于采用分散式的方法,而不是集中式的方法。例如,每个包都保存在单独的代码库中(而不是在一个统一的代码库...阅读全文

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

Golang 操作 Kafka 样例

,可能是先从RSS数据源中抓取文章的内 容,然后将其丢入一个叫做“文章”的topic中;后续操作可能是需要对这个内容进行清理,比如回复正常数据或者删除重复数据,最后再将内容匹配的结果返 还给用户。这就在一个独立的topic之外,产生了一系列的实时数据处理的流程。 日志聚合:使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。然而Kafka忽略掉 文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的 系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制致的更高的耐用性保证...阅读全文

博文 2023-01-10 13:46:09 掘金

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

婆/女朋友的电脑!!! 7.您对自己的孩子在开源或者计算机领域有什么期许?或者他有没有因为你对Linux的热爱影响他去关注、喜欢Linux? 答:对于孩子来说,顺其自然吧,不会刻意去引他。 8.作为一名老师更是一名家长,您觉得“Linux要从孩子抓起”有必要吗,特别是在中国? 答:这些年喊的口号不少了,有用么?现在的教育制度问题,作为教育工作者更加无奈,其他教育方面的问题更多,计算机教育、Linux教育。。。不乐观! 9.您觉得中国有必要在教育行业推广Linux吗? 答:答案是肯定的,只是限于体制、师资、观念等方面原因,很有可能沦为形象工程或某些人赢利的工具而已。但,该做的还要去做,不去做,永远不会有改观。 10.小编知道您有一个自己的网站(http://phpcj.org/),上面更新的...阅读全文

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

协议介绍之深入了解 gRPC

及它的相关属性。在 HTTP/1.x 时代,我们采用纯文本协议,并且使用 \r\n 来分隔,如果我们要传输的元数据很多,就会致 header 非常的庞大。另外,多数时候,在一条连接上面的多数请求,其实 header 差不了多少,譬如我们第一个请求可能 GET /a.txt,后面紧接着是 GET /b.txt,两个请求唯一的区别就是 URL path 不一样,但我们仍然要将其他所有的 fields 完全发一遍。 HTTP/2 为了结果这个问题,使用了 HPACK。虽然 HPACK 的 RFC 文档 看起来比较恐怖,但其实原理非常的简单易懂。 HPACK 提供了一个静态和动态的 table,静态 table 定义了通用的 HTTP header fields,譬如 method,path 等...阅读全文

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

2017 年会是 Serverless 爆发之年吗

站)。一般来说包含客户端、服务端程序、数据库,服务端用 Java 开发完成,客户端用 JavaScript。 采用这种架构,服务端需要实现诸多系统逻辑,例如认证、页面航、搜索、交易等都需要在服务端完成。如果采用 Serverless 架构来对该应用进行改造,则架构如图所示: Serverless 架构相比于传统面向客户端的三层应用架构,有以下几方面的差异: 删除认证逻辑,用第三方 BaaS 服务替代; 使用另外一个 BaaS,允许客户端直接访问架构与第三方(例如 AWS Dynamo)上面的数句子库。通过这种方式提供给客户更安全的访问数据库模式; 前两点中包含着很重要的第三点,也就是以前运行在服务端的逻辑转移到客户端中,例如跟踪用户访问。客户端则慢慢转化为单页面应用。 计算敏感或者需要访问...阅读全文

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

UCloud 叶理灯 谈:Docker、K8S 和 Serverless

体系下,客户需要将软件做容器化打包和微服务改造,这个是有成本的。K8S 的特点决定它是运维和研发之间的桥梁,这样就要求公司的研发过程需要跟着改造。我们看到很多公司的运维人员有动力去推动,而研发人员则没有动力,因为它改变了研发的习惯和流程,增加了负担;当然也有的公司是研发希望用 K8S 管理应用,而需要运维跟着变。这样致迁移到 K8S 的工作较重,但一旦这个阶段过去了,迁移后的效率和成本优势就体现出来了。 因此,这是个新技术落地的问题,涉及到用户教育和习惯的改变,这个需要社区和商业公司一起完成。而且每家公司的技术路线和文化不一样,上 K8S 的路径也不一样,所以没有一个放之四海皆准的最佳实践,但随着容器和微服务逐渐落地,K8S 作为事实标准,会逐步普及。 除了改造业务的成本,另外一方面是...阅读全文

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

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

deployments,而背后的复杂性被隐藏在简单的抽象中。但为了充分理解它为我们提供的价值,我们需要理解它的内部原理。 本指南将引您理解从 client 到 Kubelet 的请求的完整生命周期,必要时会通过源代码来说明背后发生了什么。 这是一份可以在线修改的文档,如果你发现有什么可以改进或重写的,欢迎提供帮助! 1. kubectl 验证和生成器 当敲下回车键以后,kubectl 首先会执行一些客户端验证操作,以确保不合法的请求(例如,创建不支持的资源或使用格式错误的镜像名称)将会快速失败,也不会发送给 kube-apiserver。通过减少不必要的负载来提高系统性能。 验证通过之后, kubectl 开始将发送给 kube-apiserver 的 HTTP 请求进行封装。kube-apiserver 与...阅读全文

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

7大维度看国外企业为啥选择gRPC打造高性能微服务

,基于RESTful API的工具。 不幸的是,这感觉就像试图将简单的方法调用变成一个数据驱动的RESTful界面。这满足了RESTful接口的verb,header,URL标识符,资源的URL和有效载荷的神奇组合,并做了一个清洁,简单,看起来几乎不可能实现的功能界面。RESTful有很多规则和解释,在大多数情况下会致REST ish接口,这需要花费额外的时间和精力来保持其纯度。 最终,考虑到RESTAPI的复杂性,我们找到了替代方案。希望微服务尽可能相互隔离,减少交互和解耦服务。它可以让企业在很短的时间内创造出一个可行的服务,并防止跳过hoops。 评估REST的替代方案 不要轻易选择通信框架。大型组织(如Netflix)可以拥有超过500+个微服务的后端系统。迁移这些服务以取代不充分的服...阅读全文

博文 2018-03-19 17:51:32 debian.cn

Apollo 配置中心简单介绍

我们应用自身的容器中启动,也就是说我们的应用启动完之后,既充当了Eureka的角色,同时也是服务的提供者。这样就极大的提高了服务的可用性。这一点是我们选择Eureka而不是zk、etcd等的主要原因,为了提高配置中心的可用性和降低部署复杂度,我们需要尽可能地减少外部依赖。Open Source 最后一点是开源,由于代码是开源的,所以非常便于我们了解它的实现原理和排查问题。 4.6 客户端设计 上图简要描述了Apollo客户端的实现原理: 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。 这是一个fallback机制,为了防止推送机制失效致配置不更新客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作...阅读全文

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

最全的 DevOps 工具集合

动化软件领域的领者、应用程序自动化领域的创新者,也是 DevOps 运动的创始人之一。Chef 与全球 1000 多家最具创新力的公司合作,以实现他们数字化转型的愿景,并提供可快速交付软件的实践和平台。 Ansible Ansible 是一种开源的软件预备、配置管理和应用程序部署工具。它可以在许多类 Unix 系统上运行,既可以配置类 Unix 系统也可以配置微软 Windows。它自带声明式语言来描述系统配置。 Puppet Puppet 提供的能力可以定义系统所需的软件和配置,然后在初始设置后保持指定状态。 用户使用与 Ruby 类似的声明式领域特定语言(DSL)来定义指定环境或基础架构的配置参数。Puppet 使用称为 Facter 的一个实用程序获取系统信息,该程序跟随...阅读全文

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

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

)确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来出本阶段的状态。所以如果确定了决策,状态转移方程也就可写出。但事实上常常是反过来做,根据相邻两个阶段的状态之间的关系来确定决策方法和状态转移方程。 (4)寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。 一般,只要解决问题的阶段、状态和状态转移决策确定了,就可以写出状态转移方程(包括边界条件)。 实际应用中可以按以下几个简化的步骤进行设计: (1)分析最优解的性质,并刻画其结构特征。 (2)递归的定义最优解。 (3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值 (4)根据计算最优值时得到的信息,构造问题的最优解 算法实现的说明 动态规划的主要难点在...阅读全文

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