自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 问答 (5)
  • 收藏
  • 关注

原创 Springboot集成Kafka完成消息回调,错误处理,消息拦截,批量处理

这篇文章主要是分享我做消息回调,错误处理,消息拦截,批量处理的一些代码,希望大家给我指出不足之处。消息回调这个简单,你只需要实现一个接口:ProducerListener@Componentpublic class KafkaSendResultHandler implements ProducerListener { @Override public void onSuc...

2019-08-12 17:03:11 6697 5

原创 CAS无锁算法

锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问...

2018-12-18 21:30:38 349

原创 Java NIO:NIO概述

Java NIO:NIO概述在上一篇文章中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。以下是本文的目录大纲:  一.NIO中的几个基础概念  二.Channel  三.Buffer  四.Selector  若有不正之处,请多多谅解并欢迎批评指正。一.NIO中的几个基础概念在NIO中有几个比较关键的概念:Channel(通道),Bu

2021-02-25 09:44:35 300

原创 Java NIO:浅析I/O模型

Java NIO:浅析I/O模型问题:一.什么是同步?什么是异步?二.什么是阻塞?什么是非阻塞?三.什么是阻塞IO?什么是非阻塞IO?四.什么是同步IO?什么是异步IO?五.五种IO模型六.两种高性能IO设计模式一、什么是同步?什么是异步?同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行

2021-02-25 09:41:27 188

原创 一、并发编程的挑战

并发编程的挑战一、上下文切换1.1 代码实现多线程与单线程的差异public class ConcurrencyTest { private static final long count = 10000l; public static void main(String[] args) throws InterruptedException { concurrency(); serial();

2020-12-29 17:51:04 204 1

原创 Quartz学习第一步

一、什么是QuartzQuartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。不过相比较于Timer,功能更完善一些:持久性作业 - 就是保持调度定时的状态;作业管理 - 对调度作业进行有效的管理;二、场景举例拿火车票购票来说,当你下单后,后台就会插入一条待支付的task(job),一般是30分钟,超过30min后就会执行这个job,去判断你是否支付,未支付就会取消此次订单;

2020-12-03 16:41:18 123

原创 SSO单点登录

单点登录(Single Sign On)简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。实现方法server端SSO-Token方式因为共享session的方式不安全,所以我们不再以session-id作为身份的标识。我们另外生成一种标识,把它取名SSO-Token(或Ticket),这种标识是整个server群唯一的,并且所有server群都能验证这个token,同时能拿到token背后代表的用户的信息。我

2020-12-03 16:27:04 343

原创 pac4j初认识

1、什么是pac4jpac4j是一个java的安全 引擎在一套标准的interface下, 1、提供多种认证机制,表单登录,JWS,cas,OAuth等等 2、多种授权和权限检查机制:role/permission,CORS,CSRF,HTTP Security headers 3、多种框架集成方式:springboot, shiro,play,spring security多种认证方式可插拔,可同时使用一种或多种常见的是springboot+cas+role/...

2020-11-09 14:52:53 2422 1

原创 认证初认识

1.认证模块CAS认证处理器主要由一个认证管理器控制,该管理器负责协调认证处理器的工作。要了解该模块,必须知道下面几个核心名词(组件):credentials 凭证,证明用户身份的object,比如我们用用户名密码登录的时候,对应一个UsernamePasswordCredential,使用CAS的委托登录时,对应ClientCredential。principal 主体,及经过认证后,用来保存用户信息的object,见:org.apereo.cas.authentication.pri

2020-11-09 14:49:10 233

原创 CAS开始看源码了

源码熟悉从AbstractPreAndPostProcessingAuthenticationHandler.authenticate开始:先看一下Credential接口,我们再看下实现类:这么多实现类,选一个用户名密码的看吧:有点像http请求里的request,姑且先当成request看吧再回过来看AbstractPreAndPostProcessingAuthenticationHandlerif()里形同虚置重点在doAuthentication(Credential)里

2020-06-11 14:59:11 349

原创 spring工厂的自动注入

spring工厂的自动注入一、仅一个实现类这种情况最简单,只需要直接使用@Autowired按类型注入,安全快捷,当然你也可以用@Resource @Qualifier注入,也可以final修饰,写构造方法注入。如:@RequiredArgsConstructorpublic class TestMain { private final InterfaceThree three;...

2020-05-07 16:44:19 595 1

原创 Redis的分片方案

EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key mi...

2020-01-10 17:57:47 279

原创 redis实现数据的增删查改

redis实现数据的增删查改一、springboot集成redis实现数据的增删查改1、添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis&l...

2020-01-10 17:50:11 1553

原创 解决缓冲区泄漏

解决缓冲区泄漏引用计数的缺点是容易泄漏引用计数的对象。因为JVM不了解Netty实现的引用计数,所以一旦它们无法访问,即使它们的引用计数不为零,它也会自动对它们进行GC。一旦回收了垃圾,就无法将其复活,因此不能将其返回到它来自的池中,从而会导致内存泄漏。幸运的是,尽管难以发现泄漏,但Netty默认情况下会抽样大约1%的缓冲区分配,以检查应用程序中是否存在泄漏。如果发生泄漏,您将发现以下日志消息...

2019-12-15 00:54:28 881

原创 安装Docker

1、安装Docker要求Centos内核版本高于3.10:通过uname -r查看当前系统的内核版本uname -r2、使用root登陆系统,确保yum包保持更新到最新:sudo yum update3、如果系统已经安装过Docker,请卸载旧版本:sudo yum remove docker docker-common docker-selinux docker-engi...

2019-12-04 17:49:50 372

原创 Redis5.0.7的部署与集群搭建

Redis5.0.7的部署与集群搭建一、单机版部署第一步:下载最新稳定版wget http://download.redis.io/releases/redis-5.0.7.tar.gz第二步:解压tar -zxvf redis-5.0.7.tar.gz第三步:进入解压后文件夹并编译$ cd redis-5.0.7$ make第四步:运行$ src/redis-serve...

2019-11-22 16:12:50 1451

原创 Redis Cluster与Codis的选择

Redis Cluster与Codis的选择一、Codis1.1 Codis是什么Codis 是 Wandoujia Infrastructure Team 开发的一个分布式 Redis 服务, 用户可以看成是一个无限内存的 Redis 服务, 有动态扩/缩容的能力. 对偏存储型的业务更实用, 如果你需要 SUBPUB 之类的指令, Codis 是不支持的. 时刻记住 Codis 是一个分布...

2019-11-20 10:54:13 2525

原创 项目启动异常(已解决解决)

项目为canal adapter。jdk版本为:1.8.0_144报错日志:2019-11-15 16:49:26.126 [main] INFO o.s.c.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigAp...

2019-11-15 17:02:12 5148

原创 数据库归档的实现方案调研(二)

之前的文章里已经写了使用TokuDB进行数据压缩,准确的说,但 TokuDB并非是归档,而是对数据进行压缩,使得数据库在保存大量数据时有更好的表现,这节就是描述一个数据库归档方案。经过调研,发现一个比较好的工具: pt-archiver。1、原理通过给定的–where条件,查询出表中需要删除或者归档记录的主键信息,然后通过强制主键索引的方式,小批量(最小可以做到1行)的方式删除或者归档,最大...

2019-11-14 11:09:44 638

原创 数据库归档的实现方案调研(一)

公司最近说是数据库中数据量比较大,好多是15/16年的数据,基本不用,但是堆在数据库又严重影响性能,想找个方法解决掉它。所以,这个任务就这么放到了我的头上。一、 目前问题业务系统的业务表的数据量很大,严重影响性能,需要进行优化。二、 问题解决方案按照目前问题,对症下药,我们需要对数据进行归档。目前市面上有几个解决该问题的方案,可选用一种或多种进行优化三、 方案一3.1 TokuDBR...

2019-11-13 10:57:40 954 4

原创 利用LogStash同步ORACLE数据至ES

1、LogStash1.1下载LogstashWget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.tar.gz1.2项目结构解压缩后项目结构为:其中我们需要手动添加oracle的jar包作为logstash的驱动。1.3修改配置文件作用是:每秒增量更新,每分钟进行一次全量更新删除的话,目前logs...

2019-11-13 10:46:13 6763 1

原创 利用Canal全量/增量同步mysql数据至ES

Canal同步mysql数据至ES1、更改Mysql配置1.1 开启 Binlog 写入功能配置 binlog-format 为 ROW 模式,配置my.cnf[mysqld]log-bin=mysql-bin # 开启 binlogbinlog-format=ROW # 选择 ROW 模式server_id=1 # 配置 MySQL replaction 需要定义,不要和 cana...

2019-11-05 17:01:20 12653 22

原创 ES学习第二篇

ES学习第二篇一、与elastic search的交互我是Java工程师,相应的我就说我们是怎么交互的。1.1 Java API在代码中你可以使用 Elasticsearch 内置的两个客户端:1.1.1 节点客户端节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。1.1.2 传输客户端...

2019-10-28 10:49:08 106

原创 ES学习第一篇

一、ES的产生1.1 大批量数据如何检索问题:当系统数据量上了10亿条的时候,我们通常会从以下角度去考虑问题:用什么数据库好?(mysql、oracle、mongodb、hbase…)如何解决单点故障;(zk、mq)如何保证数据安全性;(热备、冷备)如何解决检索难题;(数据库代理中间件:mysql-proxy、Cobar、MaxScale等;)如何解决统计分析问题;(离线、近实时)...

2019-10-28 10:48:16 309

原创 ElasticSearch和solr的区别

最近接了一个新需求,做一个搜索引擎。先看一下技术选型吧。ElasticSearch和solr的区别Elasticsearch简介Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:如维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyo...

2019-10-14 16:50:07 290

原创 Kafka的条件接收

有时候,我们需要有针对性的接收一些消息,在之前的文章里我已经写过基于kafkaTemplate的消息组件。Springboot集成Kafka完成消息回调,错误处理,消息拦截,批量处理。关于cloud stream又有了新的拦截方式。或者更形象的说是,按条件接收消息。发送者:public interface TestTopic { String OUTPUT2 = "example-...

2019-09-25 11:53:49 339

原创 Spring Cloud Stream消费失败后的处理策略(四):使用DLQ队列(Kafka版)

Spring Cloud Stream消费失败后的处理策略(四):使用DLQ队列(Kafka版)之前写了一个一个DLQ的rabbit版本,接下来说一下kafka版本的。因为kafka的管理监控界面没有那么详细(我太菜,没找到)。动手试一下:准备一个会消费失败的例子,可以直接沿用前文的工程。也可以新建一个,然后创建如下代码的逻辑:public class TestController { ...

2019-09-18 16:39:50 1455

原创 Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列

Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列应用场景前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略:自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成功率。自定义错误处理逻辑:如果业务上,消息处理失败之后有明确的降级逻辑可以弥补的,可以采用这种方式,但是2.0.x...

2019-09-18 16:14:20 446 1

原创 Spring Cloud Stream 消费失败

首先我们新建一个注定会消费失败的案例:@RestControllerpublic class TestController { @Autowired private TestTopic testTopic; @RequestMapping("test") public void TestError(@RequestParam String message){ ...

2019-09-16 10:38:58 629

原创 Spring Cloud Stream(二)

Spring Cloud Stream(二)前面那一节就是讲一下各种概念,接下来就是如何使用咯。一:编程模型介绍Spring Cloud Stream的编程模型。Spring Cloud Stream提供了许多预定义的注释,用于声明绑定的输入和输出通道,以及如何收听频道。1.1 声明和绑定频道1.1.1 触发绑定@EnableBinding可以将Spring应用程序转换为Spring ...

2019-09-16 10:14:11 213

原创 Spring Cloud Stream(一)

Spring Cloud Stream一:介绍Spring Cloud Stream是构建消息驱动的微服务应用程序的框架。Spring Cloud Stream基于Spring Boot建立独立的生产级Spring应用程序,并使用Spring Integration提供与消息代理的连接。它提供了来自几家供应商的中间件的意见配置,介绍了持久发布订阅语义,消费者组和分区的概念。将@EnableB...

2019-09-12 09:57:25 126

原创 反射生成的类无法进行自动注入的解决方案

造成问题的原因:之前我有一个设计,需要设置一个灵活的过滤规则,但考虑到各部门之间的过滤规则过于繁复,依靠个人能力完全无法在短时间内完成,因此我写了一个接口,让使用者通过实现接口来实现他们自己的过滤规则。问题:设计就是让使用者通过实现该接口,并在我的配置文件里写他们的类路径,我通过反射生成这个类,并加载进我的方法。然后,问题发生了:在这个类中,无法进行Spring工厂注入。问题发生的原理:...

2019-09-06 20:06:14 1828

原创 linux不小心修改了/etc/profile下的path,该怎么办

刚才在配置kafka环境时,原本按照我想象的:export KAFKA_HOME=/data/kafka/kafka_2.11-1.1.0PATH=$PATH:$KAFKA_HOME/bin/export PATH结果一不小心,就变成了:export KAFKA_HOME=/data/kafka/kafka_2.11-1.1.0PATH=$PAT$KAFKA_HOME/bin/H:...

2019-09-05 18:50:58 1855

原创 Kafka安装时遇到的错误-防火墙

错误一:问题描述:controller服务器不能连接到另外两台kafka服务器,但是telnet却可以通。 WARN [RequestSendThread controllerId=137] Controller 137's connection to broker 192.168.154.138:9092 (id: 138 rack: null) was unsuccessful (kaf...

2019-09-03 15:09:05 2195

原创 理解2PC,3PC与TCC

理解TCC、2PC和3PC2PC2PC,是Two-Phase Commit的缩写,二阶段提交。过程如下:阶段一:提交事务请求事务询问协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应。执行事务参与者节点执行询问发起为止的所有事务操作,并将Undo信息和Redo信息写入日志。(注意:若成功这里其实每个参与者已经执行了事务操作)各参与者向...

2019-08-29 15:53:32 2972

原创 Canal进阶(二)

我们公司的业务流程是通过canal模拟MySQL slave的交互协议,获取MySQL的binary log,从而解析MySQL的日志。将解析后的数据通过kafka发送至其他系统从而达到数据同步的目的。所以canal与kafka的集成也就是我的下一步工作。老规矩,先看官方给的example。canal与kafka的安装集成配置请看另一个文章:https://blog.csdn.net/h_bi...

2019-08-28 15:54:08 540

原创 canal进阶(一)

客户端代码分析首先我是从官方实例example项目开始。项目结构其中,assembly文件夹中都是一些xml配置,我们将其忽略就可以了。bin目录里面是一些可执行文件,如果我们将变量配置好,是可以直接通过可执行文件来执行,实现自己的功能。conf文件夹里是日志的配置文件,忽略过去就好,毕竟重点在代码那块。resource文件夹里就是一些配置了,就是通过更改这些配置文件来使可执行文件有...

2019-08-26 09:49:54 852

原创 Canal入门(四)

Canal入门(四)实际上,在实际应用开发中,单体架构的很少存在,我们要为其做一个HA高可用的架构,保障其中一台宕机后,不影响正常使用。Canal的HA模式配置1、机器准备a. 运行canal的机器: 10.20.144.22 , 10.20.144.51.b. zookeeper地址为10.20.144.51:2181c. mysql地址:10.20.144.15:33062...

2019-08-23 09:42:51 271

原创 Kafka安装配置

Kafka安装配置环境版本操作系统:CentOS release 6.6 (Final)java版本: jdk1.8kafka 版本: kafka_2.11-1.1.1.tgz一、安装Kafka1.1 下载压缩包,复制到固定目录并解压到官网下载压缩包wget https://www.apache.org/dyn/closer.cgi?path=/kafka/1.1.1/kafk...

2019-08-22 16:50:02 132

原创 Zookeeper安装配置

Zookeeper安装配置环境版本:操作系统:CentOS release 6.6 (Final)java版本: jdk1.8zookeeper版本: zookeeper-3.4.11一、安装jdk此处省略,自己百度安装二、安装zookeeper2.1 下载源码包,并解压官网下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper...

2019-08-22 16:49:34 159

空空如也

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

TA关注的人

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