InfraPub 为您找到相关结果 21

GitLab 11.10 正式发布,进一步简化协作功能

GitLab 11.10 已正式发布 ,更新亮点包括将功能(pipeline)集成到操作面板、将用于合并结果以及针对多行合并请求的建议。 轻松查看跨项目的健康状况 此版本通过强大的功能增强了 Operations Dashboard,该功能让用户能直接查看状态。 即使在查看单个项目的状态时,这也很方便,不过在使用 多项目 时尤其有用 —— 当拥有微服务架构并且需要运行来测试和部署位于多个不同项目仓库中的代码时,这种情况很常见。现在,我们可以方便看到操作面板上所有的运行状况 。 针对合并结果运行 现在可以在合并之前 针对合并结果运行 。这样可以快速捕获只有经常重新定位时才会出现的错误,从而更快地解决故障并更有效地使用 GitLab Runner...阅读全文

Gitlab 12.2 发布:改进团队协作

Gitlab 12.2 已经发布,此版本将帮助团队优化他们的,改进协作,并管理项目之间的相互依赖。更新内容如下: 更快、更灵活的 CI 的目标是自动化手工构建和测试任务,加速软件交付,同时减少错误。然而,对于某些用例,GitLab CI/CD 并没有那样高效。GitLab 12.2 现在支持 Directed Acyclic Graphs (DAG) 作为创建和管理详细作业依赖关系的方法,而不是依赖于顺序阶段。使您的 CI 变得更快和更有效率。 设计管理 软件开发是一项团队协作工作,在 12.2 版本中,提供了新的能力,包括在 GitLab 上的设计管理。设计管理将使设计内容的共享、版本和协作变得容易,从而帮助团队更有效地使用单一来源。 跨项目合并请求依赖 复杂系统通常...阅读全文

博文 2019-08-23 15:59:42 debian.cn

Golang channel 通道常见使用场景

(intChan) //写完后关闭 } func ReadData(intChan chan int,exitChan chan bool) { for{ v,ok:=<-intChan if !ok{ fmt.Println("读取完毕") break } fmt.Println("读:",v) } //设置全局标志 告诉main 读取完毕了 main主线程可以关闭了 exitChan<-true close(exitChan) } func main() { intChan :=make(chan int,50) exitChan:=make(chan bool,1) go WriteData(intChan) go ReadData(intChan,exitChan) //阻塞主线程 for...阅读全文

博文 2021-01-24 21:22:22 debian.cn

Bash Shell 中的 PROMPT_COMMAND

在 bash 显示 prompt 之前。 这个好理解,就是说每执行一个命令前,PROMPT_COMMAND 里面先执行,然后是 prompt。 但里面的 msg=$(history 1 | { read x y; echo $y; }); 让我迷惑了,现在我来把它拆解, 先来理解 history 1 命令,它的输出总是 $COMMAND_Number history 1, 也就是理解成它的输出总是最后一次执行的命令? bash 会最先记录下这个命令:history 1 | { read x y; echo $y; }? 接着 history 1 加处理后就变成它本身,而不带 $COMMAND_Number,于是输出就是命令它本身:history 1 | { read x y...阅读全文

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

最全 MongoDB 基础教程

源文档的排序获取第一个文档数据 db.ruochen.aggregate([{$group: {_id: "$by", url: {$first: "$url"}}}]) $last 根据资源文档的排序获取最后一个文档数据 db.ruochen.aggregate([{$group: {_id: "$by", url: {$last: "$url"}}}]) 在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数 MongoDB的聚合将MongoDB文档在一个处理完毕后将结果传递给下一个处理 操作是可以重复的 表达式:处理文档并输出 表达式是无状态的,只能用于计算当前聚合的文档,不能处理其它的文档 常用操作 $project:修改输入文档的结构...阅读全文

博文 2021-02-22 07:45:45 OSChina

架构师详解 Nginx 架构

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

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

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

有一个“填充因子(padding factor)”,为文档增长提供空间。 你也许会想,你可以通过不建立数组索引来绕开这个问题。遗憾的是,没有索引,你会遇到其他问题。因为文档会从头到尾扫描,找到一个接近数组尾部的元素需要花更多的时间, 大部分处理这个文档的操作都会变慢 。 忘记聚合情况下的阶段排序 在有查询优化器的数据库系统中,你编写的查询是说明你想要什么而不是如何获取它。这就像在餐馆中点餐;你通常只需要点菜,而不必对厨师发出详细的指令。 在 MongoDB 中,你是对厨师发指令。例如,你需要通过$match 和$project 确保中的数据尽早减少,排序只在数据减少时发生一次,查找按照你希望的顺序执行。查询优化器省去了不必要的工作,优化阶段顺序,选择连接类型,这会把你宠坏。MongoDB...阅读全文

GitLab 12.5 稳定版发布:支持EKS集群、多云托管和环境面板等

以使用开源的 Crossplane 项目以声明方式提供云服务,该项目扩展了 Kubernetes API 以提供托管服务,包括 PostgreSQL、MySQL、Redis 和对象存储。 Crossplane 现在可以作为 GitLab 托管应用程序使用,可以安装到由 GitLab 管理的 Kubernetes 集群中,可以在标准的 GitLab 中或通过 Auto DevOps 使用 kubectl 声明性地设置和使用 GCP、AWS 和 Azure 的托管服务。 通过环境面板一目了然地查看环境状态 面对在生产环境中应用程序的频繁更改,在变更流程中各种开发、暂存和生产环境时,对环境变化的跟踪是个问题。GitLab 为此新增了环境面板可显示该信息,从而提供对所有组和项目中环境状态的单点访...阅读全文

MongoDB 4.2 正式发布 引入分布式事务

findAndModify 命令可以引用现有字段,并加入聚合,以获得更强的表现力可还原读写,降低了编写处理临时集群故障的代码的复杂性 客户端字段级加密 (FLE,Client-side Field Level Encryption) 现已是 MongoDB 4.2 的一部分,可以在 beta 版中使用。使用 FLE,可以选择性地保护文档中的敏感字段,每个字段都使用自己的密钥加密,并在客户端上无缝解密。 MongoDB 是现代应用程序的通用数据库,它汇集了文档模型、智能分布式系统以及在任何地方运行它的能力,从笔记本电脑到大型机,在公共和私有云中运行。如果以 MongoDB 4.2 为例,最快和最简单的方法是在 MongoDB Atlas 上启动一个集群,在 AWS、Azure 和 GCP 上的 60 多个区域都可...阅读全文

博文 2019-08-16 07:54:08 debian.cn

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

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

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

OpenJDK 14 性能提升,但 OpenJDK 8 仍是王者

工作负载。 测试环境以及测试机器配置: 首先通过使用 Java 2D 基准测试对 Java 图形的性能进行压测,可以看到文本渲染性能一直稳步提升,直到第 12 版达到最高点,然后逐渐下降为目前 13 和 14 的水平,与 OpenJDK 8 比较相似。 而在 Java 2D 的图像渲染性能方面,它们的水平基本保持一致,但是 OpenJDK 14 以微弱的的性能优势成为了最好性能的那个。 这里还测试了使用矢量图形的渲染效果,水平基本保持一致。 通过进行非常基本的 Java SciMark 微基准测试,可以看到 OpenJDK 8 目前为止是最快的,并且自 OpenJDK 9 至 14 以来,性能基本上持平。OpenJDK 的运行速度约为 OpenJDK 8 的 88%。 通过使用 Java...阅读全文

博文 2020-03-22 08:46:01 debian.cn

如何重启 Kubernetes 中的 Pods

} -n {namespace} -o yaml | kubectl replace --force -f - 在这个命令中,由于没有 yaml 文件,且启动的是 Pod 对象,我们先 get 当前运行的 pod 的 yaml 声明定义,通过重定向输出到 kubectl replace 命令的标准输入,来达到上一条命令同样的效果。 总结,我们可以通过多种方式来重启对象,最通用的方式是使用 replace 命令,强制替换 Pod 的这个: kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f - 这种方式,也适用于多种其他对象。值得一提的是,重启 Pod 并不会修复运行程序的 bug,想要解决程...阅读全文

博文 2020-07-13 21:23:30 debian.cn

Harbor 1.9 发布:新增多项企业级功能

(Tag Retention) 除了项目配额之外,1.9 版还提供了一项增强功能,用于更好地管理镜像生命周期并优化存储分配,此项功能称为“Tag保留”。Harbor 的存储中可能会迅速累积起大量镜像的文件,特别是在 Harbor 与 CI 系统挂钩在一起以自动生成内部版本时,许多 tag 会在一定时间之后或被下一个内部版本取代后过时。要释放这些已过期的镜像所占用的空间,并满足监管与合规要求,项目管理员可以选择性地定义镜像 tag 的保留策略,以留存具有特定匹配镜像 tag 的镜像,同时删除其他 tag 及其关联的 blob。无论是手动生成还是从 CI/CD 自动生成,镜像 tag 通常包含环境和镜像使用情况的大量元数据信息,足以用作定义保留策略的条件。 CVE 例外策略 (Exception...阅读全文

博文 2019-10-09 12:12:04 debian.cn

最全的 DevOps 工具集合

GitLab 是基于 Web 的 DevOps 生命周期工具。它提供了一个 Git 存储库管理器,使用由 GitLab Inc. 开发的开源许可证来提供 Wiki、问题跟踪和 CI/CD 功能。 GitLab 提供了一些工具用来在实践中规划事务,还可以用来查看工作的范围。 Tasktop Tasktop 可以将所有这些工具添加到 Tasktop 支持的全套敏捷和应用程序生命周期管理(ALM)、PPM 和 ITSM 工具中,从而在整个生命周期中提供前所未有的可视化特性。 CollabNet VersionOne VersionOne 支持 Scrum、看板、XP、SAFe 和混合开发方法,简化了跨所有团队、程序、软件产品组合和企业的计划、跟踪和报告工作。 Pivotal Tracker 全球各地开发...阅读全文

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

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

。 仪表板的发布在进行中,工程团队将Bugsnag的后端功能分解成称之为(pipeline)的微服务体系。将扩展到支持发布,意味着增加新的服务,并修改现有服务,也可预见到许多新的服务器和客户端的交互。为了处理上述架构的变化,需要采用一致性的方式来设计,实施和集成企业的服务。Bugsnag是一家多语言的公司,服务是用Java,Ruby,Go和Node.js等多语言编写,因此企业需要一种与平台无关的方法。 本文将介绍为什么我们最终选择了gRPC作为Pipeline的默认通信框架。 达到REST API设计的极限 现有系统传统上使用具有JSON有效载荷的REST API进行同步通信。这种选择是基于占压倒性比例的成熟度、熟悉度和工具的可用性做出的,但是随着跨洲际工程团队的增长,企业需要设计一致的...阅读全文

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

深入学习golang — channel

Channel 1. 概述 “网络,并发”是Go语言的两大feature。Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单。写一个Server除了网络,另外就是并发,相对python等其它语言,Go对并发支持使得它有更好的性能。 Goroutine和channel是Go在“并发”方面两个核心feature。 Channel是goroutine之间进行通信的一种方式,它与Unix中的类似。 Channel声明: ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType . 例如: var ch chan int var ch1 chan<- int //ch1只能写...阅读全文

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

2017 年会是 Serverless 爆发之年吗

、API 应用相同的上下文中运行程序或脚本。可以上传并运行可执行文件,例如 cmd、bat、exe、psl 等等。WebJobs 提供 SDK 用于简化针对 Web 作业可以执行的常见任务,例如图像处理、队列处理、RSS 聚合、文件维护,以及发送电子邮件等等。 Serverless 架构原则 按需使用计算服务执行代码 Serverless 架构是 SOA 概念的自然延伸。在 Serverless 架构中,所有自定义代码作为孤立的、独立的、细粒度的函数来编写和执行,这些函数在 AWS Lambda 之类的无状态计算服务中运行。开发人员可以编写函数,执行常见的任务。在比较复杂的情况下,开发人员可以构建更复杂的,编排多个函数调用。 编写单一用途的无状态函数单单负责处理某一项任务的函数很容易测试,并稳...阅读全文

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

在 Kubernetes 上扩展 TensorFlow 模型

Kubernetes 的机器学习框架,最初由谷歌开发。它建立在 Kubernetes 资源和编排服务之上,实现复杂的自动化机器学习,用于[训练和服务机器学习模型](https://iamondemand.com/blog/the-never-ending-story-of-model-training-a-new-chapter-for-machine-learning/)。 可以结合使用 Kubernetes 和 Kubeflow 来有效地扩展 TensorFlow 模型。为使 TensorFlow 模型具有可扩展性,主要的资源和特性如下: - 使用 kubectl[手动扩展 Kubernetes 部署和 StatefulSets](https://kubernetes.io/docs/concepts...阅读全文

译:Kubernetes 最佳实践

。Azure Monitor 等日志聚合工具可用于将日志从 AKS 发送到日志分析工作区,以便将来使用 Kusto 查询进行审讯。在 AWS Cloudwatch 上可以使用。第三方工具还提供更深入的监控功能,例如 Dynatrace 和 Datadog。最后,应该为日志设置一个保留期,通常为 30-45 天左右。使用版本控制系统K8s 配置文件应该在版本控制系统 (VCS) 中进行管理。这带来了很多好处,包括提高安全性、启用更改的审计跟踪,并将提高集群的稳定性。应为所做的任何更改设置审批,以便团队可以在将更改提交到主分支之前对其进行评审。使用基于Git的工作流程(GitOps)K8s 的成功部署需要考虑团队使用的工作流程。使用基于 git 的工作流可以通过使用 CI/CD(持续集成 / 持续交付)...阅读全文

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

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

)中设置本地 Linux 网桥,以便为该主机上的所有容器提供网络服务。然后它会将一个网络接口(veth 设备对的一端)插入到 pause 容器的网络命名空间中,并将另一端连接到网桥上。你可以这样来理解 veth 设备对:它就像一根很长的,一端连接到容器,一端连接到根网络命名空间中,数据包就在中进行传播。 接下来 json 文件中指定的 IPAM Plugin 会为 pause 容器的网络接口分配一个 IP 并设置相应的路由,现在 Pod 就有了自己的 IP。 IPAM Plugin 的工作方式和 CNI Plugin 类似:通过二进制文件调用并具有标准化的接口,每一个 IPAM Plugin 都必须要确定容器网络接口的 IP、子网以及网关和路由,并将信息返回给 CNI 插件。最常见的...阅读全文

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