自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 什么是FastJson中AutoType反序列化漏洞?

文章目录频繁出现的反序列化漏洞parse()及parseObject()AutoType及安全校验AutoType安全校验AutoType黑名单机制SafeMode安全机制攻击思路反序列化攻击模拟TemplatesImpl攻击调用链路攻击类Translet生成构造攻击JSON串攻击模拟写在最后频繁出现的反序列化漏洞最近公司的小伙伴们收到了一波安全工单,因为FastJson存在高危漏洞,要求将FastJson版本号升级到1.2.69及以上漏洞描述如下在Fastjson<=1.2.68的版本中,

2020-06-30 15:08:23 10871 6

原创 RocketMq架构高性能设计思路

本文主要介绍Mq在性能方面做的相关优化RocketMq架构经常会提到RocketMq,其性能多么多么好,那么各位有没想过,其性能为什么好?先从RocketMq架构层面入手,先上一张架构图RocketMQ 架构上由 Broker、NameServer、Producer 和 Consumer 组成,各个组件功能如下NameServer:注册中心和配置中心,管理集群的元数据,包括 Topi...

2020-04-02 22:10:32 4085 12

原创 分布式事务-RocketMQ消息事务设计思路及Demo

前言在之前的文章中介绍了基于Seata实现的分布式事务的解决方案(AT、TCC模式),有兴趣的看一下https://blog.csdn.net/hosaos/article/details/89136666这两种方案都是偏向于强一致性解决方案。协调器会不断循环各个资源RM来进行事务的同时提交,回滚。而往往很多场景不求事务的强一致性,只需达到事务的最终一致性,这时候,事务消息可以很好的满...

2019-05-10 23:13:00 20836 53

原创 聊聊Dubbo3.0新特性之应用级服务发现

文章目录什么是服务发现信息孤岛问题Http通信微服务与Rpc框架Dubbo2.0中的接口级服务发现应用级服务发现兼容性设计Rpc元数据同步机制性能表现参考资料什么是服务发现信息孤岛问题计算机诞生之初,往往信息系统都是以单机的形式存在,系统与系统交互较少,存在信息孤岛问题,数据的交换得通过硬件设备的拷贝、人工在不同系统之间进行拷贝(硬盘、U盘等)。随着互联网的兴起,任何一个系统都难以在互联网浪潮中“独善其身”,不同服务、系统之间往往存在信息互通的需求,比如浏览淘宝网是用户的电脑请求淘宝网的服务器获得相关

2022-02-11 14:57:52 2293

原创 稳定性保障-如何做好一次核心链路压测

为什么要做压测互联网人做系统多多少少都听说过”全链路压测“一词,之前多是在网上看过,自己不曾实际操作、经历过。2020年底恰逢一次系统故障(流量突增导致系统异常),领导便问到:明年要开城了,系统能不能抗住现在3倍的流量?好家伙,这一问给我问住了,现在系统是跑的好好的,但是假设开城后(或者有大促啥的活动),流量变成现在5-10倍,你敢拍着脑袋说系统没问题?做开发这行的大多讲究眼见为实,告诉我你行,不如证明给我看你行,全链路压测就是证明你的系统调用链路稳定性的关键方法,因此首先要明确一点:压测的目的是在确保

2021-02-24 21:18:07 1242 3

原创 最终一致性之本地消息表、消息事务

互联网大背景下,微服务盛行,平时开发中难免会遇到分布式事务问题。大家经常会听到CAP原理,即一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)三个指标不可能同时满足,而一致性是其中一个最大的难题。本文会从分布式事务产生背景开始,介绍常见分布式事务解决方案,最后会详细介绍基于消息中间件实现最终一致性的两种方案文章目录分布式事务产生背景数据库水平拆分微服务拆分分布式事务解决方案TCCXA事务(2PC)最终一致性(消息事务)错误场景一错误

2020-10-18 23:17:10 2765

原创 并发编程面试知识点总结

文章目录线程的状态?操作系统层面线程实现?线程调度算法有哪些?Java内存模型乐观锁、悲观锁区别Atomic类如何保证原子性(CAS操作)缺点:volatile实现原理?synchronized底层如何实现?锁优化与升级?synchronized和Lock的区别happens-before原则?为什么要使用线程池核心线程池ThreadPoolExecutor的参数ThreadPoolExecuto...

2020-04-29 16:09:25 521

原创 Java中的序列化机制

文章目录序列化的意义市面上的序列化技术序列化接口Serializable、ExternalizableSerializableExternalizableserialVersionUID静态变量是否会被序列化?Transient关键字序列化技术的缺点写在最后先抛出序列化相关几个面试问题,各位看看能否答得上来?Java序列化机制的意义是什么?你知道哪些序列化技术?如何自定义序列化内容?s...

2020-02-05 11:47:56 506

原创 Java中的泛型

文章目录什么是泛型泛型方法泛型类类型通配符泛型原理-类型擦除什么是泛型泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的参数类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(如T,E)。泛型方法泛型方法能够在调用时接收不同的参数类型,根据传递给泛型方法的参数类型,合适的进行方法调用。举个例子,淘宝SDK调用时,请求的处理过程封装如下public...

2020-02-03 14:26:32 1540

原创 JDK、Dubbo中的线程池

如果某个Dubbo请求并发比较高,同时响应上由于数据库原因或者网络原因导致接口内部请求慢,则该Dubbo方法及其容易导致Dubbo里的线程池耗尽,此时消费端会收到如下异常堆栈信息Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServer...

2019-12-26 15:34:06 1322

原创 Dubbo-Router条件路由、脚本路由使用

上篇文章介绍了服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者。Dubbo 目前提供了三种服务路由实现,分别为条件路由 ConditionRouter、脚本路由 ScriptRouter 和标签路由 Ta...

2019-12-25 14:06:39 2392

原创 Dubbo-Directory目录源码解析

还是先从整体架构入手,先看下Dubbo官方的架构设计图,调用方从集群中选择一个提供者时,首先得调用Directory获取Invoker列表,再根据配置的路由规则过滤掉不符合的提供者Directory 的用途是保存 Invoker,可简单类比为 List。其实现类 RegistryDirectory 是一个动态服务目录,可感知注册中心配置的变化,它所持有的 Invoker 列表会随着注册中心内...

2019-12-11 13:57:57 390

原创 Dubbo-集群容错之Cluster

插播面试题看源码我比较喜欢带着目的性,带着问题看,集群dubbo中"读接口"和"写接口"有什么区别?谈谈dubbo中的不同容错机制及特点?集群容错架构设计首先上一张Dubbo官网的集群容错的架构设计图其中有几个关键角色Directory:其用途是保存 Invoker,可简单类比为 List。其实现类 RegistryDirectory 是一个动态服务目录,可感知注册中心配置的...

2019-12-09 15:10:17 540 2

原创 MySQL中的数据库隔离级别

文章目录插播面试题事务隔离级别读未提交(read uncommitted)读已提交(read committed)可重复读(repeatable read)串行化(serializable)网上的错误理解MVCC版本链ReadView插播面试题MySQL中事务隔离级别有哪几种?事务隔离级别的底层实现原理是什么?问题一可能大家都有所了解,事务隔离级别嘛,不就是读未提交(read unco...

2019-11-22 17:46:03 353 1

原创 Dubbo-服务导出、暴露实现原理

文章目录入口之Spring与Dubbo集成XML配置XML配置解析ServiceBean与Spring的整合服务暴露配置检查多协议服务暴露注册中心地址获取URL信息组装本地导出Filter责任链多注册中心远程导出NettyServer 创建ExchangeServerTransporterNettyServer入口之Spring与Dubbo集成XML配置先看一段XML下的Dubbo服务配置...

2019-11-13 10:35:43 1098 1

原创 Java字节码技术(二)字节码增强之ASM、JavaAssist、Agent、Instrumentation

文章目录前言从AOP说起静态代理动态代理JavaProxyCGLIB字节码增强实现AOPASMJavaAssist运行时类加载Instrumentation接口JavaAgentPremainClass随JVM进程启动AgentClass以Attach方法注入Agent总结前言在上篇文章Java字节码技术(一)中已经介绍了Java中字节码相关的基础概念。我们知道,Java代码转换后的JVM指令...

2019-11-06 19:03:43 11248 6

原创 "程序包com.sun.tools.attach不存在"最简单粗暴的解决方案

最近在测试JavaAgent的Attach相关API,代码中有如下实现import com.sun.tools.attach.VirtualMachine;public String attachAgentTest(String pid) throws Exception { if (StringUtils.isEmpty(pid)) { return "pid ca...

2019-11-06 10:44:17 13915 4

原创 Dubbo-自适应扩展机制之Adaptive注解原理

文章目录什么是自适应机制@Adaptive注解ExtensionLoader#getAdaptiveExtension自适应代码生成自适应代码编译什么是自适应机制上篇讲解Dubbo SPI机制的文章中提到,Dubbo里可以通过ExtensionLoader.getExtensionLoader(XXXClass).getExtension(key)的形式来获取接口的某个实现类。但这种形式本质...

2019-10-28 17:54:20 2199 1

原创 Dubbo-Java SPI与Dubbo SPI

文章目录什么是SPI使用场景Java SPIDemo缺点Dubbo SPIDemoDubbo SPI优点ExtensionLoader.getExtensionIOCAOP什么是SPISPI全称Service Provider Interface,在面向的对象的设计里,不同模块之间推崇面向接口编程,不建议在模块中对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换...

2019-10-26 15:02:51 424

原创 ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal解析

文章目录使用场景ThreadLocalDemoThreadLocal存储结构关键APIset方法实现get方法实现缺点内存泄露父子线程传值问题InheritableThreadLocal线程上下文复制Demo缺点TransmittableThreadLocalDemo原理TransmittableThreadLocal#holderTransmittableThreadLocal#set捕获与重放...

2019-10-24 00:18:32 1687 1

原创 RocketMQ-消息存储基本架构及存储流程

文章目录整体架构存储文件介绍设计思路存储流程消息存储是RocketMQ中最为复杂和最为重要的一部分,本文会简单介绍下RocketMQ的消息存储整体架构、以及发送一条消息时的基本存储流程整体架构存储文件介绍消息存储的架构设计中,有3个重要的存储文件,分别是CommitLog、ConsumeQueue、IndexFile分别展开说明下CommitLog: CommitLog是存储消息内容...

2019-10-16 19:14:07 2412

原创 Sentinel-基于Curator、Apollo实现高可用独立模式TokenServer部署下的集群限流

文章目录嵌入式集群限流的不足之处实现独立部署TokenServer的关键Apollo规则存储客户端设计与实现TokenServer端设计与实现Sentinel控制台设计与实现效果展示TokenServer源码地址设计不足之处嵌入式集群限流的不足之处在之前一篇嵌入式模式实现Sentinel集群限流的方案中已经介绍过Sentinel集群限流的大致实现思路文章路径如下Sentinel-集成Apo...

2019-10-10 11:54:43 4148 2

原创 RocketMQ高级特性总结(事务消息、顺序消息、延迟消息)

文章目录事务消息场景分析基本思路及问题所在基本概念RocketMQ-事务消息设计思路两阶段提交事务状态定时回查延迟消息场景分析延迟消息Producer DemoRocketMQ延迟级别实现原理顺序消息全局顺序分区顺序Producer DemoConsumer Demo实现思路及原理事务消息场景分析假设有两个用户,其银行账户不在一个银行中,服务不同,数据库也不同。现在要实现一个功能:用户A给B...

2019-09-27 11:33:27 4006 1

原创 Java字节码技术(一)static、final、volatile、synchronized关键字的字节码体现

文章目录基本概念什么是字节码Javap命令查看字节码文件字节码文件解读static、final、volatile在字节码中的体现基本概念static:static修饰的变量被所有类实例共享,静态变量在其所在类被加载时进行初始化final:final修饰的变量不可修改(基本类型值不能修改,引用类型引用不可修改),final修饰的方法,不可重写、不可继承volatile:volatile修饰的...

2019-09-23 19:25:16 3376 3

原创 Sentinel-集成Apollo配置中心实现嵌入式集群流控

文章目录Sentinel中的集群流控基本概念介绍基本思路及流程Dashboard修改客户端初始化代码缺点及不足Sentinel中的集群流控Sentinel 1.4.0 开始引入了集群流控模块,Sentinel的集群流控中,应用分为两个角色Token Client:集群流控客户端,用于向所属 Token Server 通信请求 token。集群限流服务端会返回给客户端结果,决定是否限流。T...

2019-08-21 16:11:04 2837 7

原创 RocketMQ-消息发送源码分析(三)消息重试及Broker故障延迟机制

文章目录问题点消息重试消息队列选择默认机制Broker故障转移机制问题点上篇文章已经介绍了消息发送时,topic的路由信息是如何获取的,最终路由结果是一个TopicPublishInfo对象,其中messageQueueList就是本次消息发送的topic对应的消息队列,再看下TopicPublishInfo属性图加深印象问题又来了,拿到了消息队列后,就进入到了具体消息队列选择、发送的流程...

2019-08-15 15:08:18 2170 2

原创 RocketMQ-消息发送源码分析(二)消息发送基本流程及Topic路由信息获取

文章目录问题点消息发送方式消息发送基本流程路由信息获取问题点同样,在介绍消息发送流程之前,先抛出几个问题消息发送有哪几种方式?producer是如何查找、维护topic对应的路由信息的?消息发送的实现类为DefaultMQProducer消息发送方式先看下DefaultMQProducer中有哪些发送方法大体可分为三种send(Message)为同步发送send(Mes...

2019-08-11 11:54:32 823

原创 RocketMQ-消息发送源码分析(一)生产者启动流程

在介绍Mq生产者启动流程之前,先抛出几个个问题,带着问题去分析源码1、消息生产者启动时具体做了什么?2、消息生产者启动时和NameServer,Broker之间建立了什么关系?先从启动入库着手,消息生产者启动入库方法在org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl#start(boolean)中,直接看代码启动...

2019-08-10 16:12:34 620

原创 Sentinel-客户端集成Apollo配置中心

文章目录JDK SPI机制Sentinel中的InitFunc对于Java主流框架SpringBoot,客户端可以通过spring-cloud-starter-alibaba-sentinel来快速接入Sentinel控制台,具体接入方法见下面链接,本文不做具体介绍https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel继...

2019-08-02 17:45:46 2072 4

原创 Sentinel-开源版本Dashboard集成Apollo配置中心

文章目录相关配置规则推送规则拉取Controller修改小结Sentinel由于之前接的云上版本的控制台,在集群限流及功能上有限制,现打算新接入开源版本Sentinel,做一些定制化的修改针对开源版本Sentinel,整体来说要做的就是两步第一步要做的就是搭建Sentinel Dashboard第二步要做的就是客户端接入Sentinel官方版本Sentinel Dashboard,有...

2019-07-17 16:45:25 5430

原创 RocketMQ-NameServer路由机制源码分析

文章目录RouteInfoManager路由注册(Broker注册)Broker发起注册请求NameServer接收注册请求路由查询(QueueData、BrokerData信息查询)路由信息删除上篇文章里提到,NameServer在Mq架构中充当一个路由中心的角色,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能Broker管理,NameSer...

2019-07-06 18:17:06 848 4

原创 RocketMQ-NameServer配置加载、启动源码分析

文章目录NameServer作用NameServer启动NameServer配置加载NameServerController初始化kvConfig加载初始化NettyRemotingServer注册默认事件处理线程池定时器scanNotActiveBroker定时器printAllPeriodicallyJVM钩子函数注册NameServerController启动NameServer作用在介...

2019-07-01 17:48:30 3923

原创 Sentinel-集成阿里云AHAS控制台实现集群流控

集群限流场景场景一假设我们要调用阿里的某个API,但是该API每秒QPS限制为50次,假设集群中存在多台机器同时调用该API的情况,如何控制整个集群中该API调用次数在50以内,避免接口报错场景二假设开发的系统需要提供http接口给第三方调用,为了防止第三方恶意调用接口爬取数据,我们需要限制http接口请求QPS为50场景三假设开发的系统需要提供dubbo接口给同一个公司其他部门调用,...

2019-06-19 11:49:37 2837 1

原创 RocketMQ-顺序消息Demo及实现原理分析

文章目录场景分析全局顺序消费局部顺序消费DemoProducer DemoNormal Consumer DemoOrder Consumer Demo源码分析锁定MessageQueue客户端实现broker端实现锁定ProcessQueue场景分析顺序消费是指消息的产生顺序和消费顺序相同假设有个下单场景,每个阶段需要发邮件通知用户订单状态变化。用户付款完成时系统给用户发送订单已付款邮件,...

2019-05-31 19:30:30 13062 21

原创 RocketMQ-延时消息Demo及实现原理分析

文章目录延时消息Producer Demo源码分析延时消息持久化内部变量含义初始化load方法start方法延时消息调度总结假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做?最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订单创建时间)>30分钟,则关闭订单。这种方案优点是实现简单,缺点呢?定时扫描意味着隔个几...

2019-05-26 19:34:18 14739 9

原创 分布式事务-RocketMQ事务消息源码分析

前言上篇文章介绍了RocketMQ事务消息的基本原理,对大致的流程及设计思路有个大致的了解分布式事务-RocketMQ消息事务设计思路及Demo文章最后,也提出了几个问题为什么prepare消息在发送后不会被消费?事务消息又是如何提交、回滚的?定时回查本地事务状态的机制又是怎么样?废话不多说,直接盘源码,从源码中找问题答案,源码中都加了todo注释,方便大家查看发送流程先从事...

2019-05-16 11:27:05 2171 7

原创 Seata实战-TCC模式分布式事务原理、源码分析

文章目录原理简介Demo回顾源码分析TCC资源注册开启TCC全局事务TCC拦截器-注册分支事务全局事务提交全局事务回滚原理简介TCC相关原理以及Seata中TCC例子demo的使用,在之前文章中已经说明,有兴趣的可以看看https://blog.csdn.net/hosaos/article/details/89136666本文会介绍下Seata中TCC模式设计思路及原理,源码版本0....

2019-05-05 20:04:13 17368 13

原创 Curator应用场景(三)-分布式锁InterProcessMutex使用及原理分析

API说明InterProcessMutex有两个构造方法 public InterProcessMutex(CuratorFramework client, String path) { this(client, path, new StandardLockInternalsDriver()); } public InterProcessMut...

2019-04-25 19:22:08 13886 8

原创 Seata实战-AT模式分布式事务原理、源码分析

文章目录前言第一阶段第二阶段源码分析入口之Seata集成SpringTmClient.init()RmClient.init()第一阶段拦截器中开启事务业务逻辑执行与sql解析第二阶段前言上回文章里简单介绍了分布式事务相关概念,并测试跑通了Seata中AT模式Demo和TCC模式Demo,对Seata不了解的可以先看下https://blog.csdn.net/hosaos/article...

2019-04-23 20:56:51 15698 9

原创 Seata实战-分布式事务简介及demo上手

文章目录Seata简介分布式事务产生背景数据库的水平分割微服务化分布式事务理论基础两阶段提交(2pc)TCCSeata解决方案第一阶段第二阶段Demo上手-Dubbo集成Seata配置修改启动测试Seata简介Seata(Simple Extensible Autonomous Transaction Architecture) 是 阿里巴巴开源的分布式事务中间件,以高效并且对业务 0 侵入的...

2019-04-09 16:43:11 124614 56

空空如也

空空如也

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

TA关注的人

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