- 博客(10)
- 收藏
- 关注
原创 Spring Cloud Eureka 全解 (7) - 生产配置最佳实践
本文基于SpringCloud-Dalston.SR5可以实现比较快的服务上下线:EurekaServer配置:#eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上#默认30seureka.server.respons
2018-01-24 17:47:46 63081 9
原创 Spring Cloud Eureka 全解 (6) - 一些热门QA
本文基于SpringCloud-Dalston.SR5Eureka服务实例启动时,是否会立刻向EurekaServer注册?是的,立刻会。EurekaClient在每次实例状态发生改变时,有一个Listener:statusChangeListener = new ApplicationInfoManager.StatusChangeListener() { @Ov
2018-01-24 17:44:02 16080 2
原创 Spring Cloud Eureka 全解 (5) - 自我保护机制
本文基于SpringCloud-Dalston.SR5自我保护机制 关闭自我保护机制(默认是打开的):eureka.server.enable-self-preservation=false自我保护机制:默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务
2018-01-24 17:07:36 62509 6
原创 Spring Cloud Eureka 全解 (4) - 核心流程-服务与实例列表获取详解
本文基于SpringCloud-Dalston.SR5关于服务与实例列表获取EurekaClient端我们从Ribbon说起:EurekaClient也存在缓存,应用服务实例列表信息在每个EurekaClient服务消费端都有缓存。一般的,Ribbon的LoadBalancer会读取这个缓存,来知道当前有哪些实例可以调用,从而进行负载均衡。这个loadbalancer同样也有缓
2018-01-24 16:29:58 34398
原创 一次由于YoungGC引起的性能问题分析
问题现象应用用druid连接池,设置慢SQL时间为500ms。在线上应用报了一些但是不多的慢查询日志,并且这个慢查询日志居然是单条插入的语句。后台数据库是MySQL,有查询统计日志监控,并没有发现很慢的插入语句。觉得很奇怪,需要仔细定位下问题定位为了确认问题,搭建压测环境,并在应用和MySQL所在的机器上进行抓包分析。压测开始后,又发现了很多是单条插入语句的慢查询日
2018-01-19 12:26:26 12674
原创 Log4j2一些tips与最佳实践
Log4j2相对于log4j来说扩展了多种接口,并重新定义了日志记录流程,并且引入了一些框架例如Disruptor来加速。Log4j2无论在日志记录上,还有效率速率上都相对于log4j有很大的进步,下面我们来看一些比较有意思的使用和配置的最佳实践。使用Tip1.方法参数使用Java8 lambda表达式:在java8之前,有时候log日志的参数是某个方法,可能很耗时,为了提高性
2018-01-15 18:23:33 14139
原创 Tomcat容器下Zuul网关加解密后的第一次请求出现400错误的问题
问题现象某些前端发来的请求会在前端加密发送到网关,并在网关解密之后发到真正的微服务,并将结果加密返回给前端。 实现网关加密后,发现一次加密请求后,紧接着的非加密GET请求,就会出现400的错误。再发一次相同的GET请求,就会正常,观察后端微服务的收到网关请求的accessLog,发现接收到的请求解析有问题:## 400的请求- - - [04/Jan/2018:19:48:30 +
2018-01-05 17:37:32 16554 1
原创 Lambda表达式最佳实践(1)入门与介绍
Java8引入了Lambda表达式特性,这些是通过java.util.function这个包实现的。所有的Lambda表达式都是这个包下的其中一类。我们来看下这个包java.util.function:可以看到很多有@FunctionalInterFace的接口,@FunctionalInterFace代表这个接口只有一个抽象方法。从命名,我们可以猜测出一些接口的作用。比如,Pre
2018-01-16 16:31:30 4198
原创 异常堆栈转为String以及运行时获取调用栈
纯Java实现public class ExceptionUtils { public static String getStackTrace(Exception e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printSta
2018-01-02 20:40:10 6610 3
原创 Java NIO2包WatchService解析与运用
背景我们在用IDE写代码,或者某些文本编辑器的时候,在外部如果修改了这个文件,通常这些编辑器都能感知到,有些还会提示你是否要重新加载,例如notepad++: 这些特性都是基于文件系统的文件变化通知实现的。我们可以通过一些方式监控某些文件或者文件夹的变化,但是很难做到ScalableJava7之后的NIO2包的WatchService提供了一种Scalable的方式监控文件与文件夹变化代码解析pu
2018-01-02 16:54:38 5744
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人