当线上Java程序性能逐渐下降,通过一系列优化手段也提升有限时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。从性能来说,GC调优主要关注以下三个评分指标:内存占用、延迟、吞吐量。影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度,本文介绍了线上GC调优需要学习的一些知识点。
Spring Boot(七)之基于Dubbo和Seata的分布式事务解决方案
1. 分布式事务初探
一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以很容易的实现事务的操作。但是目前,基于SOA的思想,大部分项目都采用微服务架构后,就会出现了跨服务间的事务需求,这就称为分布式事务。本文假设你已经了解了事务的运行机制,如果你不了解事务,那么我建议先去看下事务相关的文章,再来阅读本文。
Spring Cloud之容错组件Hystrix
1. Hystrix介绍
1.1 初识Hystrix
Hystrix是Netflix开源的容错框架,这是Netflix对其的简短介绍:
Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.
Spring Cloud之应用程序多维度监控解决方案
使用微服务框架开发应用程序,其特点是分模块、跨进程、分布式部署。这就增加了对整个服务的监控难度,由于分布式服务的“雪崩式效应”,当一个微服务发生故障时,会连带着对整个服务造成不可估量的影响。因此如何快速定位问题,以及查询系统健康程度等就显得尤为必要。系统内及系统间的监控,也是微服务治理的重要组成部分。本文从系统级别和系统间的级别角度,通过笔者在实际生产环境中的应用经验,总结了对Spring Boot应用程序的监控整体多维度解决方案。本文适合Spring Boot开发人员阅读,也适合运维相关的同学阅读,如果你对程序本身的监控感兴趣,也可以尝试去阅读。
Spring Boot(六)之基于Redis实现MyBatis查询缓存解决方案
1. 前言
MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis。本文主要介绍了MyBatis的缓存策略、以及基于SpringBoot和Redis实现MyBatis的二级缓存的过程。实现本文的demo,主要依赖以下软件版本信息,但是由于数据层面的实现,并不依赖具体的版本,你可以以自己主机当前的环境创建。
软件环境 | 版本 |
---|---|
SpringBoot | 1.5.18 |
Redis | 通用 |
MyBatis | 3.4.+ |
Spring Cloud之基于Zipkin的链路数据持久化
在前文《Spring Cloud之分布式链路跟踪服务Sleuth》中我们介绍了如何对微服务做分布式链路数据的跟踪。但是目前仍存在一个问题:Zipkin-Server默认是把链路数据保存的内存中,当积累的数据过多后,会存在内存溢出的风险。因此本文着重解决这个问题,介绍了一种基于Spring Cloud Sleuth + RabbitMQ + ElasticSearch的数据持久化存储解决方案。