Luyi's Blog

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

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 模板. 这个是易懂和易于实现的形式,但隐藏了索引管理的一些复杂性,比如: 要实现高的数据获取率,您希望活跃索引的分片应该分布到尽量多的节点上。 为了搜索优化和低的资源消耗,...

命令行快速打开 idea 项目

首先找到并打开(如果你是用的mac os,你可以在 alfred 中快速启动) intellij idea程序,然后在最近打开过的项目历史中找到目标项目,或者 点”open”后,去文件系统目录中去选择。上述过程中打开项目有点麻烦。 这里介绍了一种在命令行里快速打开 idea 项目的方法?比如: //启动idea 应用 idea //项目根目录 idea $project.dir ...

ClientAbortException 问题分析

话题: 基于WEB层面来讨论分析问题,引出tcp层面的问题本质; 背景: 笔者常被问到 ClientAbortException 问题,正好就一种场景的分析来简单分析下(其他场景地分析也较为类似)。下面讨论的是使用 nginx 反向代理 tomcat java项目时,有时java应用会发现频繁打印 ClientAbortException 错误日志问题。 1、什么情况下会出现...

Reactor Reactive编程介绍(2)-背压故事

backpressure 故事 RS 规范和 Reactor 本身的主要焦点之一是背压(backpressure)。在生产者(生成)比消费者(消费)更快的 push 场景前提下,背压原理是,让消费者以信号反馈到生产者说:“喂!慢一点,我处理不过来了。” 这使得生产者有机会控制其速度,而不必丢弃数据(采取抽样)或致更糟的失败。 此时,你可能会想到 Mono:单一事件发出对消费者处理而言是没...