自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时无英雄、使竖子成名

CleverApe的技术博客,主要包括Java、性能调优、JVM、架构、开源框架源码分析

  • 博客(25)
  • 收藏
  • 关注

原创 RocketMQ调优心得总结

一、问题线上RocketMQ 集群,使用方偶尔报错如下:(1)[REJECTREQUEST]system busy, start flow control for a while(2)[TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 206ms, size of queue: 5二、调优历程谷歌查找资料在stackoverflow 上找到该问题:htt...

2020-05-09 12:20:54 8353 3

原创 性能压测与调优

性能压测是当服务上线前,或者之后重要需求发布流程中,需要做的必要测试;以模拟真实流量的方式,获取当前系统的性能指标、是否存着高并发隐患、瓶颈等信息的手段。性能压测处于什么位置?或者说什么时候去做呢?如何做?如何做好线上环境的性能压测、全链路压测,如何做到压测结果准确无误,不影响外部环境、不污染数据,需要深入思考。一、测试分类按照上线流程:单元测试 集成测试 ...

2020-01-15 16:52:25 3177

原创 Redis 迁移 Codis 集群方案

Redis集群主要有五种方案:官方cluster方案、twemproxy代理方案、哨兵模式、Codis、客户端分片。其中以豌豆荚的Codis使用最多,本文主要介绍Codis。一、Codis 安装1. 安装最新版 3.21) java 环境yum -y install java-1.8.02)go环境tar zxvf /root/go1.8.3.linux-a...

2019-06-04 16:50:47 573

原创 Netty 基本原理

之前在看rocketmq源码时,发现底层用了Netty,顺便学习了一下,网上不少博客讲的有错误之处,而且大部分一模一样,估计大部分都是复制别人的。为了不被误导,我专门买了本《Netty权威指南》,仔细阅读了一遍,而且微信请教了锋哥(李林锋),遂整理出这篇分享。本人一直秉承原则:宁愿不写、少写,也尽量不写错的知识!以免误人子弟!希望转载的同学,标出原文链接。谢谢!同时非常欢迎指出错误,本人及...

2019-01-18 17:54:52 3719 1

原创 RocketMQ底层原理和源码解析

本文的内容主要包括:MQ的对比和选型、RocketMQ原理、RocketMQ源码解析、事务消息。如发现本文中所写有错误或者不准确之处,非常欢迎指出,我会及时调研修正!ps:转载的同学请标出原文链接,尊重别人的劳动成果,谢谢

2019-01-18 16:34:13 20342 11

原创 Mac系统home目录无法创建文件最全解决方法

问题mac 10.15及以上,默认开启了SIP系统保护,开发中普通用户是无法创建文件。我们开发中有时会把一些文件目录设置为/hemo,比如日志:/home/logs/此时启动服务会报错,无法创建日志目录。解决方法如下:方法一打开终端sudo vim /etc/auto_master去掉/home前的#cd /sudo automount这种方法本人遇到的情况是:暂时解决了问题,一旦mac重启,/home目录就消失了,需要每次重启后做如下操作:sudo vim

2021-01-13 17:35:06 3654

原创 Spring boot项目打包war部署外部tomcat无法注册到Nacos

一、现象:Spring boot 或者 Spring cloud 项目,如果用默认的打包jar, 使用内嵌的tomcat 启动,可以正常注册到Nacos 注册中心。如果打包为war,部署到外部tomcat, 调用正常,消费者可以调用到 生产者服务,但是Nacos 后台的服务列表里没有显示。很诡异。。。二、解决方法:使用ApplicationRunner在服务启动完成后,加载注册。/** * @Description 项目打包war情况下部署外部tomcat,需该方式注册...

2020-11-12 18:27:32 961

原创 Spring mvc项目改造为Spring boot 问题

1. 打包方式jar warjar的方式比较简单,是springboot 默认的。如果打包war, 部署到外部的tomcat, 需要做以下调整:启动类@SpringBootApplicationpublic class WebApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplication

2020-11-09 15:25:56 1065 3

原创 服务架构的核心点归纳

1. 概述架构分两种,一种是技术架构,也就是我们常说的基础架构;一种是业务架构。技术架构是与业务逻辑无关的,技术架构的前期是设计的,业务架构是演进的;当然随着业务的多样化和扩大,业务架构也会反向推动技术架构的提升和改进。无论是什么架构,最终都是服务于业务,伴随着业务的发展,都会有演进,只不过技术架构要求初始就要设计的合理、可扩展,否则后期根本无法演进或者很难演进,毕竟大型系统的重构,都是一本血泪史!!!有过大型系统重构经历的同学都知道,简直要骂人~~~架构的改变,往往是因为业务规模的扩张。

2020-07-21 17:05:55 552

原创 FeignClient引起ApplicationListener.onApplicationEvent()多次执行

场景Spring cloud 或者 Spring boot项目中,使用FeignClient 实现客户端调用。项目中有通过ApplicationListener初始化的方法。@Component@Slf4jpublic class TestApplicationListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEve

2020-06-12 14:33:35 1669 4

原创 Spring Cloud集成Nacos生产环境使用

Nacos 是阿里开源的 RCP 服务注册发现、配置中心等功能的一个框架。使用Nacos可以作为spring cloud 服务注册中心和配置中心,如果在生成环境使用,需要搭建集群,实现高可用,并且通过域名实现负载均衡。集群架构图官方参考文档:集群部署Nginx配置upstream nacos { server 127.0.0.1:8848; server 127.0.0.1:8849; server 127.0.0.1:8850;}server { lis..

2020-06-03 11:08:39 601

原创 Redis性能压测和影响性能的指标分析

线上故障最近,公司线上某个虚拟机Redis节点因突发异常,导致 CPU 100%, 无法处理请求。场景:因历史原因,这个Redis 是单点主从结构,一直没有迁移到集群现象:Redis master(以下称 A) 突然CPU100%,平时30%左右,当时 telnet 端口不通,部署Redis master 的虚拟机都无法连接登录,但是 telnet 该虚拟机上 其他服务端口是通的。...

2020-04-28 12:13:04 1413

原创 Codis高可用客户端连接及使用封装

Codis 是 redis高可用集群的一种实现方式,是豌豆荚开源的。相对其他方式,更容易实现水平扩展、扩容、分片等操作。项目连接codis,常用的方式是使用 Jedis.一、配置文件#codiscodis.zkAddr=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181codis.zk.proxy.dir=/jodis/ap...

2020-03-21 17:15:21 699 5

转载 RocketMQ高并发调优

前言 阿里消息团队一直致力于RocketMQ的性能优化,双十一前进行了低延时(毛刺)优化,保障了双十一万亿消息的流转如丝般顺滑,在2016年双十一中,MetaQ以接近万亿的消息总量支撑着全集团数千个应用,在系统解耦、削峰填谷、数据库同步、位点回滚消费等多种业务场景中,MetaQ都有精彩、稳定的表现。高可用低延迟,高并发抗堆积,2016双11的MetaQ真正做到了如丝般顺滑。...

2020-03-09 16:09:08 2187

原创 Mac下安装Thrift及降版本

1. 使用 brew 安装brew install thrift如果没有 Homebrew,先安装Homebrew./usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"使用brew安装比较方便,他会把thrift需要的依赖都一块下载安装,省...

2020-01-20 10:56:31 1173

原创 我的日常阅读社区和网址

分享以下本人日常翻看的社区和网址,也是平时处理问题时的必要参考资料。1.Github:https://github.com/2.stackoverflow:https://stackoverflow.com/ (Java 开发必看)3.InfoQ:https://www.infoq.cn/(中文技术第一站)4.开源中国:https://www.oschina.net/proje...

2019-12-11 20:25:10 2430

原创 Sentinel控制台不显示应用之maven打包SPI丢失问题

背景 最近准备使用阿里的容灾组件Sentinel在项目中,做一些接口的监控和限流降级功能。 本地改进Sentinel控制台,使用ZK做了持久化,调试没有问题后,准备测试并上线到生产环境。此时出现一个比较怪的问题。问题现象 本地启动客户端项目,Sentinel控制台可以正常显示监控信息,发布到Linux测试环境和 线上环境,控制台不显示应用。...

2019-11-22 11:32:53 3424 7

原创 VisualVM远程连接失败踩坑之JMX最全配置

史上最全JMX远程连接失败问题踩坑和总结,涉及多种环境:本地、局域网测试环境、线上生产环境。这里不介绍VisualVM的基本教程,那些随便搜一下都有,主要介绍一下博主在不同环境使用,自己遇到的坑。想要查看和监控JVM运行情况,VisualVM是一种不错的选择。显示如下:VisualVM远程连接JVM,最方便的方法是通过jmx,即在jvm启动参数增加jmx配置。网上...

2019-11-05 17:20:25 4472 6

原创 IDEA注视模版

一、类注释模版IDEA 设置:使用时,请将以下@Author 后填写自己的姓名或者 git 帐号设置后,每次新建class 都会自动增加类、接口等注释。以下模版 eclipse 也适用Class: #if(${PACKAGE_NAME} && ${PACKAGE_NAME} !="")package${PACKAGE_NAME};#e...

2019-08-09 20:03:49 573 1

原创 RPC服务熔断、限流、降级等容灾技术

本篇博客主要包括:限流方式、微服务容灾技术选型、Sentinel的使用、Sentinel动态规则持久化Zookeeper 等。Sentinel动态规则持久化到Zookeeper的代码实现我已经共享到本人的github,有需要的可以下载使用。github地址:https://github.com/Force-King/sentinel-dashboard-zk持久化zk的sentinel...

2019-07-09 11:38:46 4973

原创 RPC-Thrift 协议

简介 Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。一、序列化协议 Thrift可以让你选择客...

2019-07-03 15:02:45 471

原创 NIO

本文针对不了解NIO的同学,主要对IO模型、NIO的概念以及基本原理做简述,没有深入源码解析。 1. NIO基本概念NIO官方叫法为 New I/O,原因在于它相对之前的I/O类库是新增的。但是,由于之前老的I/O类库是阻塞I/O,New I/O的目标就是让Java支持非阻塞I/O,所以,更多的人喜欢称之为非阻塞I/O(Non-block I/O)。Java NIO 主要由以下三个...

2019-01-18 17:00:47 251

原创 JVM 调优命令大全

Sun JDK监控和故障处理命令有jps、 jstat、 jmap、 jhat、 jstack 、jinfo。具体请点击链接,跳转到本人的云笔记。链接:http://note.youdao.com/noteshare?id=96eaec791f7831ab70430659fdb14a8d...

2019-01-17 20:27:06 251

原创 性能测试Jmeter

一、Jmeter安装(Mac环境)1.java 环境:jdk1.8 及以上。如果想用jdk1.8以下版本,则Jmeter 选3.0以下版本,建议使用高版本,功能全。2.下载地址:http://jmeter.apache.org/download_jmeter.cgihttp://mirror.bit.edu.cn/apache/jmeter/binaries/下载

2017-07-28 11:26:20 300

原创 Java中的各种数据类型在内存中存储的方式

1.Java是如何管理内存的java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控

2017-05-27 13:00:51 516

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除