自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 资源 (6)
  • 论坛 (1)
  • 收藏
  • 关注

原创 JAVA Metrics 进阶

文章目录Metrics Pluginsdead lock health check自定义health checkMetrics PluginsMetrics 之所以受欢迎,除了提供了一套度量指标的标准外,其源代码层次分明、可扩展性强也是一个非常重要的因素。再Github上相关的开源项目也很多,介绍两款插件。dead lock health check <dependency> <groupId>io.dropwizard.metrics&lt.

2021-12-03 11:06:02 129

原创 JAVA Metrics 度量工具入门

前言Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控。官方文档:github:https://github.com/dropwizard/metrics官方文档:https://metrics.dropwizard.io/4.2.0/getting-started.html环境搭建 <dependency> <groupId>io.dro.

2021-11-30 22:45:00 113

原创 通过JMH测试公平锁与非公平锁

@BenchmarkMode(Mode.AverageTime)@OutputTimeUnit(TimeUnit.MICROSECONDS)@Measurement(iterations = 10)@Warmup(iterations = 5)@State(Scope.Group)public class FairAndUnfairTest { @Param({"1", "2"}) private int type; private static Lock lock;.

2021-11-30 21:10:39 33

原创 JMH高级用法

前言虽然JMH可以帮我们更好了解我们所编写的代码,但是如果我们所编写的JMH基准测试本身就有问题,那就很难起到指导作用。编写正确的微基准测试用例现代的Java虚拟机越来越智能,它在类的早期编译阶段、加载阶段以及后期的运行时都可以为我们的代码进行相关的优化,比如Dead Code的擦除、常量的折叠、循环的打开,甚至是profile的优化。避免DCE(Dead Code Elimination)所谓dead code 是指JVM为我们擦去了上下文无关的代码,甚至经过计算后不会用到的代码。@Benc.

2021-11-29 22:00:00 150

原创 JMH快速入门

JMH简介JMH是专门用于代码微基准测试的工具集。JMH是由实现Java虚拟机的团队开发的,由于现在JVM已经变得越来越智能,在Java文件的编译阶段、类的加载阶段,以及运行阶段可能进行了不同程度的优化,因此开发者...

2021-11-26 22:30:00 194

原创 Spring 之 @Autowired 的理解

前言在了解@Autowired之前,需要知道先提出几个问题:1、InstantiationAwareBeanPostProcessor 这个接口是干嘛的,字面上理解是感知Bean实例话的处理器,这篇请看Spring之InstantiationAwareBeanPostProcessor 理解2、什么是依赖注入?依赖注入:Dependency Injection,简称DI,说白了就是利用反射机制为类的属性赋值的操作。3、什么是注入,注到哪里?注入就是为某个对象的外部资源赋值,注入某个对象所需要的.

2021-11-23 22:15:00 374

原创 StampLock

在 JDK 1.8 引入 StampedLock,可以理解为对 ReentrantReadWriteLock在某些方面的增强,在原先读写锁的基础上新增了一种叫乐观读(Optimistic Reading)的模式。

2021-11-15 13:52:07 2

原创 SpringBoot属性绑定Environment和Binder

helloWorld: properties: spring: json: trusted: packages: '*' type: mapping: fast.cloud.nacos.fastbootkafka.domain.TopicATest:fast.cloud.nacos.fastbootkafka.dom.

2021-11-15 11:47:48 6

原创 jvisualvm远程监控springboot

添加参数java -Djava.rmi.server.hostname=192.168.56.112 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar fast-common-example-web-0.0.1-SN..

2021-09-29 21:15:00 15

原创 centos7安装kube shell

安装Python3.7安装依赖yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make下载python源码包wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz解压tar -zxvf Python-3.7.0.tgz进入解压后的目录cd Py.

2021-09-29 21:00:00 20

原创 k8s服务发现原理

之前的文章spring-cloud-kubernetes使用spring Cloud LoadBalancer实现负载均衡,在这个基础上,我们来深度看下它是服务发现的。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-kubernetes-client-loadbalancer</artifactId

2021-09-28 19:30:00 41

原创 java k8s-client api操作 kubernetes

API Server简介k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。kubernetes API Server的功能:提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);是资源配额控制的入口;拥有完备的集群安全机.

2021-09-26 20:00:18 74

原创 浅谈零拷贝

零拷贝所谓零拷贝是指将数据直接从磁盘文件复制到网络设备中,而不需要经由应用程序之手,零拷贝大大提高了应用程序的性能,减少了内核和用户模式之间的上下文切换。对于Linux操作系统而言,零拷贝技术以来底层的sendfile方法实现。对于java应用而言,FileChannal.transferTo()方法底层实现就是sendfile()方法你需要将图片展示给用户,这个情形就意味着需要先将静态图片从磁盘复制出来放到一个内存buf中,然后将这个buf通过套接字(Scoket)传给用户,进而用户获取到图片,这看.

2021-09-08 17:51:51 19

原创 基于Nacos服务地址动态感知原理实现ribbon远程调用平滑上下线

背景远程调用一般都会用ribbon,尽管使用feign,还是用的ribbon做的负载均衡,远程调用。但是ribbon会每隔30s刷新注册表信息,这样就会导致如果服务下线了,由于注册表没有及时更新,那远程调用就会报错。我们看下默认ribbon实现。com.netflix.loadbalancer.PollingServerListUpdater 这个类是ribbon更新注册表的核心类。nacos 动态更新地址原理Nacos客户端中有一个HostReactor类,它的功能是实现服务的动态更新.

2021-08-30 12:53:53 231

原创 docker 启动初始化sql

记录容器启动时,初始化sql,如上图所示,即可。

2021-08-29 16:13:08 27

原创 Apollo更新远程配置源码分析

前言响应发布大致流程如下图,下面将从客户端响应ConfigServer配置发布和client启动Apollo监听两个模块讲解Apollo热发布原理。源码追踪源码maven坐标: <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> .

2021-08-27 17:47:37 69

原创 ElasticSearch 基本概念

ElasticSearch 基本概念ElasticSearch 中有几个比较核心的概念,为了方便你理解,我将其与数据库中的概念进行映射,如下图所示:注意:在老版本的 ElasticSearch 中,Index 和 Document 之间还有个 Type 的概念,每个 Index 下可以建立多个 Type,Document 存储时需要指定 Index 和 Type。从 ES 6.0 版本开始单个 Index 中只能有一个 Type,ES 7.0 版本以后将不建议使用 Type,ES 8.0 以后完全不.

2021-08-26 10:49:00 43

原创 JDK SPI 机制

前言SPI(Service Provider Interface)主要是被框架开发人员使用的一种技术。例如,使用 Java 语言访问数据库时我们会使用到 java.sql.Driver 接口,每个数据库厂商使用的协议不同,提供的 java.sql.Driver 实现也不同,在开发 java.sql.Driver 接口时,开发人员并不清楚用户最终会使用哪个数据库,在这种情况下就可以使用 Java SPI 机制为 java.sql.Driver 接口寻找具体的实现。当服务的提供者提供了一种接口的实现之后,.

2021-08-25 15:32:00 55

原创 OpenTracing入门

前言自从 Google Dapper 的论文发布之后,各大互联网公司和开源社区开发的分布式链路追踪产品百花齐放,同时也给使用者带来了一个问题,各个分布式链路追踪产品的 API 并不兼容,如果用户在各个产品之间进行切换,成本非常高。而 OpenTracing 就完美的解决了这个问题,OpenTracing 通过提供平台无关、厂商无关的 API,帮助开发人员能够方便地添加(或更换)追踪系统。Trace 简介一个 Trace 代表一个事务、请求或是流程在分布式系统中的执行过程。OpenTracing 中.

2021-08-25 13:53:29 32

原创 入门 Byte Buddy

为什么需要运行时代码生成我们知道,Java 是一种强类型的编程语言,即要求所有变量和对象都有一个确定的类型,如果在赋值操作中出现类型不兼容的情况,就会抛出异常。强类型检查在大多数情况下是可行的,然而在某些特殊场景下,强类型检查则成了巨大的障碍。例如,在对外提供一个通用 jar 包时,我们通常不能引用用户应用中定义的任何类型,因为当这个通用 jar 包被编译时,我们还不知道这些用户的自定义类型。为了调用用户自定义的类,访问其属性或方法,Java 类库提供了一套反射 API 帮助我们查找未知类型,以及调用.

2021-08-25 09:58:08 93

原创 基于Spring扩展点服务调用预热

背景Spring Cloud 服务默认在web server(如tomcat embedded sever)启动后立即进行服务注册,接入流量。启动后初始的服务请求执行较慢,体现在Cat Url监控上,可达到数秒,造成服务消费者超时出错或其它问题。造成服务启动慢请求的原因多样,常见有FeignClient初始化,缓存加载等,逐个点优化不具备普遍性。并且Spring Cloud大量使用第3方开源组件,在不改变源码的情况下,优化启动性能比较困难。如:FeignClient/RibbonClient:测试

2021-08-20 16:04:54 41

原创 Spring中event事件执行顺序

前言我们自定义监听spring event通常有两种方式,先说下这两种方式,然后从两种方式的差异说明event的顺序。@Component 实现使用@Component方式实现如下:@Component@Slf4jpublic class ApplicationListenerImpl implements ApplicationListener<ApplicationEvent> { public ApplicationListenerImpl() { .

2021-08-19 11:33:44 127

原创 Springboot @ConditionOnXXX是如何实现的

前言问题主要是发现了一个问题,在看springboot 源码的时候。这种飘红的代码就没有这个类,但项目依然可以启动起来。为什么?先看下@ConditionalOnClass@ConditionalOnClass这个注解有一个基础注解@Conditional,还可以看到一个OnClassCondition.class,这个属性是一个数组。Conditional这个接口,SpringBootCondition就实现了这个接口来对Contional注解进行处理下面是这几个核心类的关系.

2021-08-18 14:05:56 28

原创 Spring Bean 生命周期整理

主要流程各种接口方法分类Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:Bean自身的方法这个包括了Bean本身调用的方法和通过配置文件中<bean>的init-method和destroy-method指定的方法Bean级生命周期接口方法:这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法容器级生命周期接口方法:这个包括了InstantiationA.

2021-08-17 10:20:38 40

原创 Prometheus 使用 Victoria Metrics远程存储

前言VictoriaMetrics 是一个支持水平扩展的时序数据库,可以作为 Prometheus的远端存储,并且实现了 PromSQL,可以直接通过 VictoriaMetrics 查询时序数据,避开 Prometheus 查询时的单点瓶颈。部署Victoria Metrics 集群VictoriaMetrics 集群版本的架构如下:vminsert 和 vmselect 是无状态的写入、查询节点,vmstorage 是有状态的存储节点。数据平均分配到 vmstorage 节点,每个 vmst.

2021-08-10 19:46:24 303 1

原创 prometheus 使用consul服务发现

前言使用 Prometheus监控 SpringBoot 应用,当应用很多,且上下线频繁时,需要不断的更改 Prometheus 的配置文件,不能灵活的使用,可以通过为 Prometheus配置注册中心,从注册中心拉取应用数据获取监控数据。安装consul这里使用docker安装,方便快捷。docker-compose.yml文件version: '3.1'services: consul: image: consul:1.9.4 container_name: "c.

2021-08-05 16:53:06 89 1

原创 Prometheus使用AlertManager webhook、邮件告警

Alertmanager 内部架构先看官方文档中的架构图:负责处理接受client(例如prometheus)发送的告警消息,包括重复告警的发送、聚合、发给相关人员,并且支持多种方式例如email或者pagerduty这种第三方通知告警平台,同时他还提供了静音以及告警抑制的功能。实现一个完整的监控体系需要以下几个功能:数据采集(xxx_export)数据抓取(prometheus)数据存储(prometheus/cortex)规则检测并生成告警(prometheus/cotex.ru.

2021-08-04 10:49:48 138 1

原创 Docker 安装 Cat 记录

下载下载代码 git clone https://github.com/dianping/cat.git配置 cd cat/docker/vim client.xml修改dockerfile文件,改为国内的镜像mv Dockerfile-e Dockerfilevim docker-compose.yml

2021-04-26 18:08:28 86

原创 Docker Compose 搭建 Redis Cluster 集群

2021-04-21 15:18:42 28

原创 浅谈分布式事务解决方案之2PC之分析seata

文章目录什么是2PC解决方案XA方案Seata方案Seata执行流程什么是2PC2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。举例:张三和李四好久不见,老友约起聚餐,饭店老板要求先买单,才能出票。这时张三和李四分别抱怨近况不如意,囊中羞涩,都不愿意请客,这时只能AA。只有张三和李四都付款,老板才能出票安排就餐。但由于张三和李四都是铁公鸡,形成了尴尬的一幕:准备阶段:.

2021-03-07 11:18:58 687 1

原创 浅谈分布式事务理论

文章目录基础概念什么是事务本地事务分布式事务分布式事务产生的场景分布式事务基础理论CAP理论CAP组合方式总结BASE理论基础概念什么是事务什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必 须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。明白上述例子,再来看事务的定义: 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是.

2021-03-06 14:11:08 853

原创 springcloud feign 整合 nacos、seata分布式事务(AT模式)

前言最近再看下分布式的解决方案,看了下比较火的seata,就实践了以下,记下笔记,方便查阅。安装步骤环境centos7 2c4Gmysql 5.7nacos 单机模式seata 1.4.1安装nacoscustom.propertiesmanagement.endpoints.web.exposure.include=*docker-compose.ymlversion: "3.3"services: nacos: image: nacos/.

2021-03-05 10:54:58 6068 11

原创 docker-compose部署Prometheus监控springboot

前言之前写过一遍博客,使用docker命令直接安装的,不方便以后学习,操作比较繁琐,最近抽空看了下把他抽成docker-compose文件,方便以后快速使用,方便以后的学习。步骤部署Prometheus + Grafana首先还是先给出docker-compose.yml脚本文件version: '3.2'networks: monitor: driver: bridgeservices: prometheus: image: prom.

2021-02-28 14:35:11 892

原创 一把过springboot kafka 整合ELK

前言直接存放到文件中,不方便查找,我们可以借用ELK快速查询。环境centos7logstashkibanaelasticsearchkafka步骤安装 ELK安装elk,这里使用docker-compose.ymlversion: "3.2"services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2 environment:.

2021-02-25 12:50:54 1003

原创 logstash kafka 同步日志

文章目录前言环境步骤安装及配置logstash安装kafka搭建java服务测试前言微服务情况下,通常会有一台日志服务器,专门存放日志,我们在查看日志的时候,通过指定的目录加上项目名称为路径,就可以找到我们想找的目录。环境centos7kafaklogstashdemo项目步骤安装及配置logstash从官网上下载logstash,https://artifacts.elastic.co/downloads/logstash/logstash-7.5.2.tar.gz解压,使用.

2021-02-25 12:49:58 2110 5

原创 spring cloud stream kafka rabbit 实现死信队列

文章目录前言RabbitMQ实现环境搭建代码演示测试代码Kafka实现环境搭建代码演示测试代码前言之前写过一篇,spring kafka 死信队列,这个文章是写的spring kafka的,该篇记录下基于spring cloud stream实现死信队列,方便以后用到的时候翻阅,有不对的地方或者需要改进的地方,还请各位提出。RabbitMQ实现环境搭建还是老规矩使用docker-compose启动,下面先给出脚本,这是搭建了一个集群的方式。version: "2"services: .

2021-02-08 17:04:42 961 1

原创 prometheus + grafana 监控k8s

文章目录下载安装文件启动脚本配置grafana数据源导入Dashboard效果图下载安装文件地址为: https://github.com/fafeidou/fast-cloud-nacos/tree/master/fast-common-examples/fast-commmon-prometheus-example/k8s/prometheusgrafana启动脚本 kubectl apply -f namespace.yaml kubectl apply -f node.

2021-02-04 17:04:53 790

原创 spring kafka 死信队列

文章目录前言环境搭建代码演示前言Spring-kafka内部封装了可重试消费消息的语义,也就是可以设置为当消费数据出现异常时,重试这个消息。而且可以设置重试达到多少次后,让消息进入预定好的Topic。也就是死信队列里。环境搭建搭建单机版kafka,docker-compose.yml文件如下:version: '2'services: zookeeper: image: wurstmeister/zookeeper ## 镜像 ports: - "2181:.

2021-02-04 17:01:30 2176 4

原创 五种IO网络模型

文章目录前言阻塞式IO模型非阻塞I/O模型多路复用I/O模型信号驱动I/O模型异步非阻塞 IO (asynchronous IO)容易混淆前言网络 IO 的本质是 socket 的读取,socket 在 linux 系统被抽象为流,IO 可以理解为对流的操作。刚才说了,对于一次 IO 访问 (以 read 举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个 read 操作发生时,它会经历两个阶段:第一阶段:等待数据准备 (Wait.

2021-01-17 13:05:08 802

原创 Docker网络

文章目录前言网络模式bridge模式抓包演示Host模式Conatiner模式实用技巧前言docker容器是一块具有隔离性的虚拟系统,容器内可以有自己独立的网络空间,多个容器之间是如何实现通信的呢?容器和宿主机之间又是如何实现的通信呢?使用-p参数是怎么实现的端口映射?带着我们就这些问题,我们来学习一下docker的网络模型,最后我会通过抓包的方式,给大家演示一下数据包在容器和宿主机之间的转换过程。网络模式我们在使用docker run创建Docker容器时,可以用–net选项指定容器.

2021-01-17 10:07:13 768

lombok-plugin-0.28-2019.3.zip

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok

2020-01-27

apache-skywalking-apm-6.5.0.tar.gz

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。

2020-04-03

Xshell.zip

Xshell [1] 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,其还有丰富的外观配色方案以及样式选择。

2020-01-05

Navicat.for.MongoDB.12.1.7.rar

Navicat for MongoDB 的高效图形用户界面,用于管理和开发 MongoDB 数据库。它能连接本地或远程的 MongoDB 服务器,以及与 MongoDB Atlas、阿里云、腾讯云和华为云兼容。为管理、监控、查询和可视化数据提供了卓越的功能,轻松提高日常 MongoDB 操作的效率。

2020-01-06

redis集群搭建所需要文件

搭建redis少走弯路,就来这里吧。搭建redis少走弯路,就来这里吧。

2017-11-29

Navicat for MySQL v12.0.29.zip

1.Navicat for MySQL支持创建工具或编辑器数据模型工具 2.支持数据传输/导入/导出、数据或结构同步等 3.Navicat for MySQL支持查询参数 4.Navicat for MySQL支持SSH密钥等 5.界面设计直观简洁,兼容性强 6.专业:适合专业人士,也非常适合入门新手使用

2020-01-05

空空如也

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

TA关注的人 TA的粉丝

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