程序印象

程序印象

知行合一 业精于勤

为 Kubernetes 选择合适的 container runtime(译)
原文地址:https://joejulian.name/post/kubernetes-container-engine-comparison作者:Joe Julian翻译:狄卫华发表时间: 2018/3/23 Kubelet 可通过配置项 container-runtime,container-runtime-endpoint 和 image-service-endpoint 来选择使用 docker,rkt(不建议使用)或任何 CRI API 兼容的 container-runtime 。 意见虽然基于虚拟机的机制提供了额外的安全隔离,但资源限制太多,需要较多的开销才能将软件在生产环...
xDS REST 和 gRPC 协议(译)
原文地址: https://github.com/envoyproxy/data-plane-api/blob/master/XDS_PROTOCOL.md翻译:狄卫华校对:宋净超 Envoy 通过查询文件或管理服务器来动态发现资源。概括地讲,对应的发现服务及其相应的 API 被称作 xDS。Envoy 通过订阅(subscription)方式来获取资源,如监控指定路径下的文件、启动 gRPC 流或轮询 REST-JSON URL。后两种方式会发送 DiscoveryRequest 请求消息,发现的对应资源则包含在响应消息 DiscoveryResponse 中。下面,我们将具体讨论每种...
Prometheus Discovery 之 K8S 代码分析
Service Discovery interfaceService Discovery 必须实现 Discovery 接口,定义如下: 123type Discoverer interface { Run(ctx context.Context, ch chan<- []*targetgroup.Group)} Prometheus 支持了众多的 SD 发现机制,代码位于 discovery 目录下。 Group 的结构定义如下: 1234567891011// Group is a set of targets with a common label ...
gRPC 之 LoadBalancer
基于 Etcd 实现的服务注册和发现的 grpclb 参见: grpclb 前提gRPC 负载均衡是针对每次请求,而不是连接,这样可以保证服务端负载的均衡性。负载均衡器按照实现侧不同一般分为两种: 1. Proxy 2. Client Side Thick Client所有负载均衡算法实现都在客户端。 Lookaside Load Balancing也称单臂路由。 Etcd Loadbanlacer 实现gPRC 当前最新版本为 Release 1.14.0,由于 Etcd 不同版本的 Banlancer 实现方式不仅相同,可以参考:client-architecture/ Et...
gRPC 之 Interceptors
gRPC 环境安装 Mac由于仓库已经转到 github,命令 go get -u google.golang.org/grpc 已经不能正常工作。 12345678910111213141516171819202122232425262728293031$ brew install libtool$ brew install automake# install proto3$ mkdir tmp$ cd tmp$ git clone https://github.com/google/protobuf$ cd protobuf$ ./autogen.sh$ ./configure$ m...
gRPC 之 Gateway
调研对象: Kong Traefix Envoy Kong CE 版本官网 和 GitHub Repo。 Kong 版本: Community Edition (CE) Enterprise Edition (EE) CE 当前版本 0.14.1。Kong 底层采用 OpenRestry 开发。 Kong is a cloud-native, fast, scalable, and distributed Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some...
Serverless 之 OpenFaaS
介绍OpenFaaS - Serverless Functions Made Simple for Docker & Kubernetes https://docs.openfaas.com/,当前支持以下语言:csharp、go、python、node、java、ruby等。 在 OpenFaaS 的UI 中可以通过指定 Docker Image等相关信息添加一个新的 Function,具体界面如下: 从原来上来讲,在我们部署的 Docker Image 中,在编译中会自动加入 Function Watchdog 的程序,该程序是基于 Go 开发的 Http Server,...
Goroutine 泄露 (译)
作者:Michał Łowicki 原文地址: https://medium.com/golangspec/goroutine-leak-400063aef468 Go 中的并发以 goroutines(独立活动)和 channels(用于通信)的方式实现。然而处理 goroutines 程序员仍然需要小心避免泄漏。 如果最终在 I/O上像 channel 通信那样永久阻塞或者陷入无限循环,则会产生泄漏。 即使是阻塞的 goroutine 也会消耗资源,因此程序可能会使用比实际需要更多的内存,可能最终耗尽内存并导致崩溃。 让我们看看它可能发生的几个例子。 然后我们将专注于如何检测程序是...
走进 Go 的垃圾回收之旅(译)
原文地址:Getting to Go: The Journey of Go’s Garbage Collector 12 July 2018作者:Richard L. Hudson翻译:狄卫华Blog: https://www.do1618.com 这是我在 2018 年 6 月 18 日内存管理国际研讨会(ISMM)上发表的主题演讲稿。过去 25 年来,ISMM 一直是内存管理和垃圾回收论文发表的首选,我很荣幸被邀请发表主题演讲。 翻译备注: Runtime 运行时,一般不翻译Latency 延时The Tail at Scale 规模的长尾效应Read Barrier 读屏...
Davad.Di
编程业余爱好者