Luyi's Blog

带着心中的希望前进,永远不会独行

谷歌 Code Review 指南(阅读简化版本)

本文主要参考学习 google 开源的 CR 实践指导。 原文有些地方太冗长,因此做了些精简,但未破坏整体结构,如果您碰巧看到,希望对您也有用; Code Review工作:分为评审人( Code Reviewer )指导和提交者(CL Author); 评审人需要关注(看哪些东西) 1. 看哪些内容 • Design 设计是否合理; • Functionality ...

Prometheus 发现并获取 K8S 相关组件指标源码分析

这篇主要从源码层面分析 Prometheus 如何感知并获取 K8S 相关组件(pod,node…) metrics。 1. Prometheus 的样例配置 首先提供个基本的 Prometheus 的样例配置,该配置是让 prometheus 感知宿主机(node)的集群(部署)分布,并抓取它们各自的 metrics 信息。 scrape_configs: - job_name: '...

Prometheus 如何从外部监控 minikube 部署的K8S

最近研究 Prometheus 是如何感知和监控 k8s 集群组件的。为了方便 debug Prometheus 代码,在本机上安装了 minikube。目前文章讲(prometheus)使用 in-cluster 模式监控 k8s 集群的比较多,但是从外部监控观测怎么做比较少,所以这里记录下,基于 minikube 摸索的方式。 1.启动 minikube 并找到 apiserver 的...

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy的错误分析

笔者使用 springboot, 在启动中遇到过 “Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy” 异常,查看了一些网文都没有看到比较准确的分析。经过自己的排查将问题的原因和排查方法总结于此。导致该问题的原因形式可能多种多样,但原理和分析方法相对有章可...

一个 SpringBoot 项目通过 SOFALookout & Prometheus 进行监控

SOFALookout ,是一个利用多维度的 metrics 对目标系统进行度量和监控的项目。SOFALookout 项目分为客户端部分与服务器端部分,由于服务器端代码暂未开源,本文将讲解如何将 SOFALookout 的客户端采集到的 metrics 上报给 Prometheus 进行监控。 1.创建个简单 SpringBoot 的 demo 项目 创建 demo 工程 可以...

JAX-RS REST 服务结果的自动封装

当使用遵循 JAX-RS 标准的框架开发REST 服务时,我们倾向于定义个(含有JAX-RS)注解接口。 服务器端负责实现该接口,而客户端是该接口的代理进行远程调用,从而简化开发。比如,下面是个具体的 REST API 接口的例子: @Path("/movies") public interface ServicesInterface { @GET @Path("/get...

Ribbon2 核心设计和原理分析

Ribbon, Netflix 公司开源的用于进程通信场景的经过实战检验的客户端项目。它提供了远程调用的负载均衡,网络状态检查和容错等功能。Ribbon 基于软件的负载均衡方式与目标集群中的机器进行通信。这里忽略状态统计部分,健康检查的逻辑部分,重点分析负载均衡部分。 下面是个典型的使用方式开始,先指定一些目标服务器地址, //sample-client.ribbon.listOfSer...

Elasticsearch 5 docker 集群部署--单虚拟机多容器实例

如何在单一虚拟机上部署多个 elasticsearch 5 容器实例和1个 kibana 5 的容器实例呢? 1.准备 镜像的选择 docker.elastic.co/elasticsearch/elasticsearch:5.3.2 ES Docker 镜像选用: (ES 的官方文档中提供的)镜像注册中心 docker.elastic.co...

服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka

这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 ...

Elasticsearch Rollover 高效管理时序数据(上)

大家在使用 Elasticsearch 管理时序数据(比如 日志事件)时经常习惯于将每一天的数据作为一个 Index。根据日志事件的时间戳可以产生最近一天的新索引,新Index的定义可以事先使用 index 模板. 这个是易懂和易于实现的形式,但隐藏了索引管理的一些复杂性,比如: 要实现高的数据获取率,您希望活跃索引的分片应该分布到尽量多的节点上。 为了搜索优化和低的资源消耗,...