程序印象

程序印象

知行合一 业精于勤

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 读屏...
分布式跟踪:Istio与应用程序(译)
原文链接:https://thenewstack.io/distributed-tracing-istio-and-your-applications/ 作者:Neeraj Poddar 译者:狄卫华 校对: 在微服务领域,分布式跟踪正逐渐成为调试和跟踪应用程序最重要的依赖工具。 通过最近的聚会和会议,我发现人们对分布式跟踪工作原理很感兴趣,但同时对于分布式跟踪如何与Istio和Aspen Mesh等服务网格进行配合使用存在较大的困惑。特别地,我经常被问及以下问题: 跟踪如何与Istio一起使用?在Span中收集和报告哪些信息? 是否必须更改应用程序才能从Istio的分布式跟踪受益...
no Elasticsearch node available
现象现场的 ORG 服务使用了 ES 搜索,但是现场的搜索一直不能够正常工作。 现场情况如下: ES 版本为 5.5.1, 部署在机器 B 上,采用 Docker 方式部署。 ORG 服务采用 go 语言开发,驱动是采用的 “gopkg.in/olivere/elastic.v5” 部署在机器A上,搜索数据一直返回空,在 ES 机器上用命令行直接搜索有结果数据。 TES 服务采用 node.js 开发,也连接 ES ,能够正常工作。 机器 A 上 使用 curl es_addr 能够正常显示 ES 集群相关信息。 ORG 服务于 ES 服务部署在同一台机器上时,可以正常工作。 简单...
Hello Envoy EDS
Arch See alos: https://github.com/DavadDi/envoy_discovery Start SDS/EDS server12345678910$ cd eds_server/$ virtualenv env --python=python2.7$ source env/bin/activate$ pip install -r requirements.txt# ImportError: No module named enum# $ pip install enum34$ python main.py Start upstream serverStar...
Davad.Di
编程业余爱好者