InfraPub 为您找到相关结果 282

DevOps 越来越流行,2019 年这八大趋势值得关注

来看,DevOps 的采用率从 2015 年到 2016 年增加了约 8%,预计这一数字将在 2019 年大幅增长。 根据 Statista 的报告,很多商业组织正在采用 DevOps,2018 年增长率高达 17%,而 2017 年则为 10%左右。 你可以在 RightScale 上查看完整的报告。Forrester 的报告中也明确提到了 2018 年将是 DevOps 年。我们看到了将影响来年 DevOps 发展的八个事实。 焦点从 CI 管道转到 DevOps 装配线 管道为应用程序提供了从源码控制到生产环境的一套完整的可视化视图。你可以在某个地方看到所有的内容。现在不仅要做 CI(持续集成),还要做 CD(持续交付)。企业正投入时间和精,以便更多地了解如何自动化完整的软件开发过程...阅读全文

博文 2018-12-10 22:49:57 debian.cn

Apollo 分布式配置中心详解

等方式已经越来越无法满足开发人员对配置管理的需求。Apollo 配置中心应运而生! Apollo 配置中心功能特点 正是基于配置的特殊性, Apollo 在设计之初就立志于成为一个有治理能的配置管理平台。当前提供了以下一些特性, 统一管理不同环境、不同集群的配置 Apollo 提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。同一份代码部署在不同的集群,可以有不同的配置,通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖。 配置修改实时生效(热发布) 用户在 Apollo 修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序...阅读全文

博文 2020-04-12 12:16:26 debian.cn

深入学习golang — channel

) { process(r) // May take a long time. } func Serve(queue chan *Request) { for { req := <-queue go handle(req) // Don't wait for handle to finish. } } 一般来说,server的处理能不是无限的,所以,有必要限制线程(或者goroutine)的数量。在C/C++编程中,我们一般通过信号量来实现,在go中,我们可以通过channel达到同样的效果: var sem = make(chan int, MaxOutstanding) func handle(r *Request) { sem <- 1 // Wait for active queue to drain...阅读全文

博文 2021-01-25 12:39:17 博客园

漫画赏析:Linux 内核到底长啥样

。 pipeline 在图片的中部,有两个小企鹅扛着管道(PipeLine)在行走,一只小企鹅可以把自己手上的东西通过这个管道,传递给后面的小企鹅。不过怎么看起来前面这种(男?)企鹅累得满头大汗,而后面那只(女?)企鹅似乎游刃有余——喂喂,前面那个,裤子快掉了~ Wine 在这一层还有另外的一个小企鹅,它手上拿着一杯红酒,身上写着 411,看起来有点不胜酒。它就是红酒(Wine)小企鹅,它可以干(执行)一些来自 Windows 的任务。 跃层 在一层之上,还有一个跃层,这里有很多不同的屏幕,每个屏幕上写着 TTY(这就是对外的终端)。比如说最左边 tty4 上输入了“fre”——这是想输入“freshmeat...”么 :d ;它旁边的 tty2 和 tty3 就正常多了,看起来是比较正常的命令;tty7...阅读全文

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

互联网协议正在发生变化

。 现在,核心互联网协议的重要改变已经开始了。虽然它们意图与互联网大部分兼容(因为,如果不兼容的话,它们不会被采纳),但是它们可能会破坏那些在协议中没有规定的地方,或者根本就假设那些地方不存在变化。 为什么我们需要去改变互联网 有大量的因素推动这些变化。 首先,核心互联网协议的局限性越来越明显,尤其是考虑到性能的时候。由于在应用和传输协议方面的结构性问题,网络没有得到高效使用,导致终端用户认为性能不能满足要求(特别是,网络延迟)。 这就意味着人们有强烈的动机来演进或者替换这些协议,因为有 大量的经验表明,即便是很小的性能改善也会产生影响。 其次,演进互联网协议的能 —— 无论在任何层面上 —— 会随着时间的推移变得更加困难,这主要是因为上面所讨论的对网络的非预期使用。例如,尝试去压缩响应的...阅读全文

理解 Linux 的虚拟内存

前不久组内又有一次我比较期待的分享:“Linux 的虚拟内存”。是某天晚上加班时,我们讨论虚拟内存的概念时,leader 发现几位同事对虚拟内存认识不清后,特意给这位同学挑选的主题。 我之前了解一些操作系统的概念,主要是毕业后对自己大学四年的荒废比较懊恼,觉得自己有些对不起计算机专业出身,于是在工作之余抽出时间看了哈工大在网易云课堂的操作系统公开课,自己也读了一本讲操作系统比较浅的书 《Linux内核设计与实现》,而且去年自己用 C 写简单的服务器时,也追根究底了解了更多的系统底层知识。多亏了这些知识,让我对应用层的知识更有掌控感,也在上次排查问题时(从应用到内核查接口超时)助了我一臂之。 前几天另一位同事来问另一个虚拟内存相关的问题,我才发现对于虚拟内存,我的理解还不够深刻,一些概念还...阅读全文

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

协议介绍之深入了解 gRPC

streams 在上面发送 frame,那么在一些场景下面,我们还是希望 stream 有优先级,方便对端为不同的请求分配不同的资源。譬如对于一个 Web 站点来说,优先加载重要的资源,而对于一些不那么重要的图片啥的,则使用低的优先级。 我们还可以设置 Stream Dependencies,形成一棵 streams priority tree。假设 Stream A 是 parent,Stream B 和 C 都是它的孩子,B 的 weight 是 4,C 的 weight 是 12,假设现在 A 能分配到所有的资源,那么后面 B 能分配到的资源只有 C 的 1/3。 Flow Control HTTP/2 也支持流控,如果 sender 端发送数据太快,receiver 端可能因为太忙,或者压太大...阅读全文

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

Hadoop 核心 - HDFS 分布式文件系统详解

> 6.1 抽象为block块的好处 1) 一个文件有可能大于集群中任意一个磁盘 10T*3/128 = xxx块 2T,2T,2T 文件方式存—–>多个block块,这些block块属于一个文件 2) 使用块抽象而不是文件可以简化存储子系统 3) 块非常适合用于数据备份进而提供数据容错能和可用性 6.2 块缓存 通常 DataNode 从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在 DataNode 的内存中,以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个DataNode的内存中,当然可以针对每个文件配置DataNode的数量。作业调度器通过在缓存块的DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。 例如: 连接(join)操作中使用的一个小的查询表...阅读全文

说透IO多路复用模型_京东云开发者的博客

文件这块的原理描述的文章已经非常多了,所以这里我不再做过多的赘述,感兴趣的同学可以从Wikipedia翻阅一下。由于这块内容比较复杂,不属于本文普及的内容,建议读者另行自研,这里我非常推荐马兵老师将linux文件系统这块,讲解的真的非常好。 select模型 此模型是IO多路复用的最早期使用的模型之一,距今已经几十年了,但是现在依旧有不少应用还在采用此种方式,可见其长生不老。首先来看下其具体的定义(来源于man二类文档): int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout); 这里解释下其具体参数: 参数一:nfds,也即maxfd,最大的文件描...阅读全文

博文 2023-01-01 15:13:50 CSDN博客

Intel 为啥要给 ARM 代工

,这不仅为 ARM 阵营 IC 设计公司多了一个技术实极强的流片渠道,也使 ARM 芯片可以在采用更好的制造工艺下获得更好的性能。 然而,目前 Intel 对外开放代工的时机却略显晚了一些,虽然在制造工艺上 Intel 依然领先,但至少在命名上,三星和台积电已经超越了 Intel。对于原本不大规模对外开放代工业务的 Intel 来说,三星和台积电在制造工艺上注水压根就无所谓。 但是对于准备对外开放代工业务,和台积电、三星抢生意的 Intel 来说,如果坐视台积电和三星在制造工艺命名上耍花招,就很可能会使自己失去一些订单,蒙受利益损失。特别是在当前制造工艺命名比较乱的情况下,继台积电推出 12nm 制造工艺后,三星推出 6nm、8nm 制造工艺。 因此,Intel 推出新的衡量半导体工艺水平的...阅读全文

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

架构师详解 Nginx 架构

,主进程和工作进程需要进程交互。交互依赖于 Socket 实现的管道来实现。 Master-Worker 交互 这条管道与普通的管道不同,它是由主进程指向工作进程的单向管道,包含主进程向工作进程发出的指令,工作进程 ID 等;同时主进程与外界通过信号通信;每个子进程具备接收信号,并处理相应的事件的能。 worker-worker 交互 这种交互是和 Master-Worker 交互是基本一致的,但是会通过主进程。工作进程之间是相互隔离的,所以当工作进程 W1 需要向工作进程 W2 发指令时,首先找到 W2 的进程 ID,然后将正确的指令写入指向 W2 的通道。W2 收到信号采取相应的措施。 五. 总结 通过这篇文章,我们对 Nginx 服务器的整体架构有了一个整体的认识。包括其模块化的设计...阅读全文

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

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

资源,从而获取虚拟货币的一种程序,需要较高的硬件配置及用电量。 而单凭一个矿工的量是挖不到比特币的。于是“安某”便想到可以利用自己的职务之便利用百度的服务器来开启自己的发家致富之路,只是他可能没想到的是事情会败露的这么快。 那么,他具体是怎么做的呢? 首先,他用自己的工作账户上传了一个压缩文件 miner.tar.gz ,其中包含一个名为 java_4u3 的脚本, 而这个脚本可以自动执行解压缩、创建目录、删除目录、自动连接代理进行网络交换,达到控制服务器的目的。 然后,编译了一个挖矿程序,并将上述程序部署非法控制了百度的 155 台服务器上,利用公司为其配备的苹果电脑上的 iterm 软件控制所有服务器的中控机,通过中控机上传挖矿脚本,并通过 iterm 软件发出批量下载指令,让 200...阅读全文

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

Linux下多线程程序为什么消耗大量虚拟内存

,使用了很多叫做arena的memory pool,缺省配置在64bit下面是每一个arena为64M,一个进程可以最多有 cores * 8个arena。假设你的机器是4核的,那么最多可以有4 * 8 = 32个arena,也就是使用32 * 64 = 2048M内存。 当然你也可以通过设置环境变量来改变arena的数量.例如 export MALLOC_ARENA_MAX=1 hadoop推荐把这个值设置为4。当然了,既然是多核的机器,而arena的引进是为了解决多线程内存分配竞争的问题,那么设置为cpu核的数量估计也是一个不错的选择。设置这个值以后最好能对你的程序做一下压测试,用以看看改变arena的数量是否会对程序的性能有影响。 mallopt(M_ARENA_MAX, xxx)如果...阅读全文

博文 2015-01-28 10:35:39 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 开发团队也停止进行...阅读全文

SVN切换分支用法汇总

,以避免出现代码丢失等问题。在切换分支的时候,我们需要确保其他人都知道这个操作,并且保证他们的代码状态是干净的。六、SVN切换分支的优缺点在软件开发中,我们需要经常进行分支管理,因此,SVN的分支管理功能就显得尤为重要了。下面我们来看一下,SVN切换分支的优缺点。1. 优点SVN切换分支的最大优点就是方便快捷。通过SVN我们可以很方便地将工作副本切换到不同的分支,这样可以让我们更加高效地进行代码管理和开发工作。此外,SVN还提供了完善的分支合并机制,可以帮助我们更好地保持代码的稳定性。2. 缺点SVN的缺点主要体现在以下几个方面:(1)SVN对源代码有一定的限制;(2)SVN操作过程较为繁琐;(3)SVN的并发处理能相对较差。七、总结综上所述,SVN切换分支是一项非常重要的基础操作,在软件开...阅读全文

博文 2023-06-09 14:22:35 infras

谷歌公开了内部管理Infra层的两个工具的Paper

解决这个问题之前,我们依赖于传统的工作流引擎。比如,一个工作流列出部署新二进制文件的步骤:在集群X上做金丝雀测试,然后将N部署到集群Y和Z上,运行测试等等。 创建工作流本身就需要大量工作,因此我们只为经常需要做的事情创建工作流,比如二进制文件的版本更新。我们通常手动处理不那么常见的情况,比如重启。已有的脚本经常会过期而不再适用。 对于运维人员来说,这些工作流很容易实现:做X,然后Y。想要添加压测试?只需要添加一个步骤。但是随着工作流使用规模的扩大,它的问题也显露出来。 首先,扩展工作流会造成很多重复。每个服务都有很好的理由要求一些特殊逻辑,这意味着需要定制化的实现。尝试了几次整合工作流的实现,但是只有适用于某个特定模型的服务才能使用。这样导致的重复让服务变得不一致。最佳实践,比如跨集群的有...阅读全文

博文 2023-01-08 11:23:20 CSDN博客

Web前端知识体系精简

Ajax做了限制,不允许Ajax跨域请求服务器,就是只能访问当前域名下的url。 当然,如果确信你的站点不存在跨域的风险,可以在服务端主动开启跨域请求。 也可以直接通过CORS或JSONP来实现。 JSONP是利用脚本(script)跨域能来模拟Ajax请求。 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 关于CORS的介绍请参考:跨域资源共享 CORS 详解 8、DOM对象 document document对象里保存着整个web页面dom结构,在页面上所有的元素最终都会映射为一个dom对象。 document也提供了很多...阅读全文

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

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

望的唯一方式是把它直接和另一种类型的数据库如 RDBMS 比较,或者对它有特别的期待。这就像把桔子和叉子比较。数据库系统有它们的用途。最好是理解并领会这些差别。强迫 MongoDB 开发人员按照 RDBMS 的方式做事就太遗憾了,我希望继续看到解决旧问题的有趣的新方法,如确保数据完整性、使数据系统具有从故障和恶意破坏中恢复的能。 在 4.0 版本中,MongoDB 引入了 ACID 事务处理,这是以创新方式引入重大改善的一个很好的例子。多文档、多语句事务现在是原子的了,它允许开发人员调整用于获取锁的时间,过期挂起事务以及修改隔离级别。 关于作者 Phil Factor(为保护作者隐去真名),又称数据库摩尔,他有将近四十年的数据库密集型应用程序经验。在 20 世纪 80 年代初的一次展览会上...阅读全文

Gitlab CI 配置文件 .gitlab

: rspec: script: test cache: untracked: true 缓存binaries下没有被git跟踪的文件: rspec: script: test cache: untracked: true paths: - binaries/ job中优先级高于全局的。下面这个rspecjob中将只会缓存binaries/下的文件: cache: paths: - my/files rspec: script: test cache: key: rspec paths: - binaries/ 注意,缓存是在jobs之前进行共享的。如果你不同的jobs缓存不同的文件路径,必须设置不同的cache:key,否则缓存内容将被重写。 缓存只是尽而为之,所以别期望缓存会一直存在。查看更多详细...阅读全文

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

RabbitMQ 高可用实现镜像队列

列中某个节点宕掉的后果: 当slave宕掉了,除了与slave相连的客户端连接全部断开之外,没有其他影响。 当master宕掉时,会有以下连锁反应: 与master相连的客户端连接全部断开;选举最老的slave节点为master。若此时所有slave处于未同步状态,则未同步部分消息丢失;新的master节点requeue所有unack消息,在此我向大家推荐一个架构学习交流圈:830478757 帮助突破瓶颈 提升思维能,因为这个新节点无法区分这些unack消息是否已经到达客户端,亦或是ack消息丢失在老的master的链路上,亦或者是丢在master组播ack消息到所有slave的链路上。所以处于消息可靠性的考虑,requeue所有unack的消息。此时客户端可能有重复消息;如果客户端连着...阅读全文

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

Docker 核心原理

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

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

2017 年会是 Serverless 爆发之年吗

中小型公司,尤其是互联网行业的创业公司,本身并没有太多的技术人员,如果设计系统时需要考虑诸多的技术问题,例如 Web 应用服务器如何配置、数据库如何配置、消息服务中间件如何搭建等等,那对于他们来说人员成本、系统成本会很高,Serverless 架构的出现,让这种情况可能可以大幅度改善。 初识 Serverless? 在目前主流云计算 IaaS(Infrastructure-as-a-Service,基础设施即服务)和 PaaS(Platform-as-a-Service,平台即服务)中,开发人员进行业务开发时,仍然需要关心很多和服务器相关的服务端开发工作,比如缓存、消息服务、Web 应用服务器、数据库,以及对服务器进行性能优化,还需要考虑存储和计算资源,考虑负载均衡和横向扩展能,考虑服务...阅读全文

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

译:Kubernetes 最佳实践

如,一组开发人员可能只能访问名为 dev 的命名空间,并且无法访问 production 命名空间。 将不同团队限制在不同命名空间的能对于避免重复工作或资源冲突可能很有价值。还可以针对命名空间配置 LimitRange 对象,以定义部署在命名空间中的容器的标准大小。ResourceQuotas 还可用于限制命名空间内所有容器的总资源消耗。可以对命名空间使用网络策略来限制 pod 之间的流量。使用就绪和存活探针Readiness(就绪)和 Liveness(存活)探针本质上都是健康检查的类型。这些是在 K8s 中使用的另一个非常重要的概念。就绪探针确保仅当 pod 准备好为请求提供服务时,才会将对 pod 的请求定向到它。如果它还没有准备好,那么请求将被定向到其他地方。为每个容器定义就绪探针...阅读全文

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

Apache Kafka发布 3.0 正式版

OffsetFetch 请求以接受多个组 ID请求 Kafka 消费者组的当前偏移量已经有一段时间了。但是获取多个消费者组的偏移量需要对每个组进行单独的请求。在 3.0 和KIP-709 中,fetch 和 AdminClient API 被扩展为支持在单个请求/响应中同时读取多个消费者组的偏移量。KIP-699:更新 FindCoordinator 以一次解析多个 Coordinator支持可以以有效方式同时应用于多个消费者组的操作在很大程度上取决于客户端有效发现这些组的协调者的能。这通过KIP-699成为可能,它增加了对通过一个请求发现多个组的协调器的支持。Kafka 客户端已更新为在与支持此请求的新 Kafka 代理交谈时使用此优化。KIP-724:删除对消息格式 v0 和 v1 的支持自 2017 年...阅读全文

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

译:零信任对 Kubernetes 意味着什么

“sidecar”概念,其中平台容器(译者注:此处指 sidecar 代理容器)可以在部署时以后期绑定操作功能的形式,与应用程序容器动态注入到一起,。服务网格使用这种 sidecar 方法在运行时将代理添加到应用程序 pod 中,并连接这些代理以处理所有传入和传出流量。这允许服务网格以与应用程序代码解耦的方式交付功能。应用程序和平台之间的关注点分离是服务网格主张的核心价值:当然,这些功能可以直接在应用程序中实现,但是通过解耦,我们允许安全团队和开发人员相互独立地迭代,同时仍然努实现安全但功能齐全的应用程序的共同目标。由于服务网格处理进出应用程序之间的默认网络,因此它可以很好地处理零信任问题:工作负载身份可以从 Kubernetes 中的 pod 身份而不是其 IP 地址中获取。可以通过在双向 TLS 中...阅读全文

WebAssembly:无需容器的 Docker (下)

-wasm:wordpress 可以访问 http://localhost:8087 并使用由 PHP Wasm 解释器服务的 WordPress,它由 Apache HTTPD 中的 mod_wasm 加载。直接在浏览器中服务 WordPress访问 https://wordpress.wasmlabs.dev 获得示例。 你将看到一个框架,其中 PHP Wasm 解释器会现场渲染 WordPress。结论感谢阅读本文。 需要消化的内容很多,但我们希望本文有助于理解 WebAssembly 的能以及它如何与你现有的代码库和工具(包括 Docker)结合运行。 期待看到你使用 Wasm 编程!如果你觉得 WasmEdge 不错,不要忘了给我们点个赞!...阅读全文

博文 2023-01-03 06:39:46 spider

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

服务化项目服务不可用几十分钟,造成订单数减少几十万笔,损失百万资金。 原因分析 当时是没有定位到具体的原因的,但是下面的原因也是一部分可能引起宕机的情况。 某服务化项目的业务增速非常快,在高峰期,数据库QPS突破35000,系统处于高负荷状态。 在高峰期如果同时执行几个全表扫描的SQL,会造成数据库压急剧上升,应用超时增多,前端应用超时,用户重试,流量飙升,形成了雪崩效应。 主要原因在与一些老项目的SQL查询性能较差,并且使用的主库,对数据库影响较大。数据库QPS太高,但是缓存方案因为人手原因一直没有落地,慢SQL的问题处理优先级应该提升。 改进方案 针对每个应用建一个数据库账号,严格按照规范使用 缓存优化方案即时落地,慢SQL问题优先处理,集中处理目前已经发现的慢SQL(查询时间超过1S...阅读全文

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

HTTP状态码详解

可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测无限循环重定向(例如:A->A,或者A->B->C->A),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过5次的重定向。 300 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。 除非这是一个 HEAD 请求,否则该响应应当包括一个资源特性及地址的列表的实体,以便用户或浏览器从中选择最合适的重定向地址。这个实体的格式由 Content-Type 定义的格式所决定。浏览器可能根据响应的格式以及浏览器自身能,自动作出最合适的选择。当然,RFC 2616规范并没有规定这样的自动选...阅读全文

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

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

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

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

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

的节点。分区带来了负载均衡和横向扩展的能。发送消息时可以根据分区的数量落在不同的Kafka服务器节点上,提升了并发写消息的性能,消费消息的时候又和消费者绑定了关系,可以从不同节点的不同分区消费消息,提高了读消息的能。另外一个就是分区又引入了副本,冗余的副本保证了Kafka的高可用和高持久性。(五)详细说说消费者组和消费者重平衡?Kafka中的消费者组订阅topic主题的消息,一般来说消费者的数量最好要和所有主题分区的数量保持一致最好(举例子用一个主题,实际上当然是可以订阅多个主题)。当消费者数量小于分区数量的时候,那么必然会有一个消费者消费多个分区的消息。而消费者数量超过分区的数量的时候,那么必然会有消费者没有分区可以消费。所以,消费者组的好处一方面在上面说到过,可以支持多种消息模型,另...阅读全文

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

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

认证凭证与本地的状态匹配。 如果认证失败,则请求失败并返回相应的错误信息;如果验证成功,则将请求中的 Authorization 请求头删除,并将用户信息添加到其上下文中。这给后续的授权和准入控制器提供了访问之前建立的用户身份的能。 授权 OK,现在请求已经发送,并且 kube-apiserver 已经成功验证我们是谁,终于解脱了! 然而事情并没有结束,虽然我们已经证明了我们是合法的,但我们有权执行此操作吗?毕竟身份和权限不是一回事。为了进行后续的操作,kube-apiserver 还要对用户进行授权。 kube-apiserver 处理授权的方式与处理身份验证的方式相似:通过 kube-apiserver 的启动参数 --authorization_mode 参数设置。它将组合一系列授权...阅读全文

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

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

查可能会带来意外问题;此选项用于将其检查的时间间隔长度上增加或减小一定的随机时长; – tune.bufsize :设定buffer的大小,同样的内存条件小,较小的值可以让haproxy有能接受更多的并发连接,较大的值可以让某些应用程序使用较大的cookie信息;默认为16384,其可以在编译时修改,不过强烈建议使用默认值; – tune.chksize :设定检查缓冲区的大小,单位为字节;更大的值有助于在较大的页面中完成基于字符串或模式的文本查找,但也会占用更多的系统资源;不建议修改; – tune.maxaccept :设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100...阅读全文

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