自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冯立彬的博客

关注性能、效率、大型网站架构、分布式应用、大数据计算等

原创 基于Sentinel的高可用限流系统设计及实现

一、背景说明 1、为什么要限流 拿旅游景点举个示例,每个旅游景点通常都会有最大的接待量,不可能无限制的放游客进入,比如故宫每天只卖八万张票,超过八万的游客,无法买票进入,因为如果超过八万人,景点的工作人员可能就忙不过来,过于拥挤的景点也会影响游客的体验和心情,并且还会有安全隐患;只卖N张票,这...

2020-01-02 19:17:51 245 0

原创 基于Sentinel的高可用限流系统的Grafana报表展示

2020-07-02 14:31:48 43 0

原创 基本Spring Cloud的微服务架构搭建及应用(一)

1、Spring Cloud介绍 Spring Cloud家族有许多成员: Spring Cloud Config - 配置管理工具包,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion; Spring Cloud Bus - 事件、消息总线,用于在集群(例如,配置变化...

2020-06-19 22:47:46 100 0

原创 阿波罗使用注意事项

1.引入客户端依赖 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> ...

2020-03-13 14:24:28 243 0

原创 Elasticsearch索引的基本操作(9)-索引的强制合并

强制合并的功能为强制合并一个或多个索引,目的是通过索引合并达到减少段的数量,通过POST方法执行_forcemerge API。 强制合并请求在没有执行完成之前,请求会一直被阻塞,直到执行完成才会返回,如果期间该HTTP请求由于网络或者其它原因被断开,合并请求将继续在后台执行,直到完成或发生异常...

2019-12-25 06:38:15 505 0

原创 Async-profiler介绍

1、介绍 Async-profiler是一个对系统性能影响很少的Java采样分析器,它的实现是基于HotSpot特有的API,通过这些特有的API收集堆栈跟踪和跟踪内存分配,因而其可以和OpenJDK、Oracle JDK和其他基于HotSpot JVM的Java应用在运行时协同工作。 Git...

2019-12-15 16:34:59 933 0

原创 DynamicDatabaseSource,在应用端支持数据库的主从

说明 通过AOP的方式,根据当前操作的读写类型,自动切换数据源为主库还是从库,配置和使用都很简单,减少支持读写分离中间的引入,避免性能损失。 项目地址:https://gitee.com/laofeng/DynamicDatabaseSource 一、介绍 生产环境下,单个MySQL在小业...

2019-12-05 11:03:20 127 0

原创 Redis中的Multi事务

一、概述 Redis中的Multi和Pipleline都可以一次性执行多个命令,但是Pipeline只是把多个redis指令一起发出去,redis并没有保证这些指令执行的顺序,且减少了多次网络传递的开销,因而其执行效率很高;Multi相当于一个redis的transaction,保证整个操作的有...

2019-12-02 22:51:49 292 0

原创 Linux中Python应用CPU占用高问题排查

公司购买了一套由外部供应商提供的呼叫中心系统,在使用的过程中发现其LOAD和CPU占用偏高,由于没有源代码也不太清楚其内部的实现逻辑,只能够通过观察系统资源的消耗来排除其问题,以下记录的是问题排查的过程。 1、通过top命令查看其CPU占用 可以看到其load占用为“20.14, 16.4...

2019-11-20 16:21:03 3578 0

原创 Elasticsearch索引的基本操作(8)-索引缓存、refresh、flush等操作

1、缓存清理 通过缓存清理的API _cache/clear,需要使用POST方法执行,可以清理指定索引或整个集群的缓存。 清除单个索引的缓存,操作如下: POST /new_index/_cache/clear {} 清除多个索引的缓存,操作如下: ...

2019-06-22 09:53:00 1925 0

原创 Elasticsearch索引的基本操作(7)-索引模板

1、说明 创建索引模板使用PUT方法,索引模板用于定义在创建新的索引时自动应用的模板,可以创建普通索引模板,也可以创建别名索引模板等,索引模板中的信息主要包括以下部份: 可套用该索引模板的索引名称格式,名称支持通配符,也可以配置多个名称格式匹配格式; 索引的基本设置(settings); ...

2019-06-21 08:15:09 1974 0

原创 Elasticsearch索引的基本操作(6)-索引设置

1、索引设置的查看 查看索引的设置通过_settings API,使用GET方法操作。 1.1、查看单个索引的设置 查看索引new_index的设置,操作如下: GET /new_index/_settings 响应如下: { "new_in...

2019-06-20 15:32:32 1646 0

原创 Elasticsearch索引的基本操作(5)-别名设置

1、别名 Elasticsearch中的别名,可以分为索引别名、过滤器别名、路由别名等,不同的别名适用于不同的应用场景: 索引别名就是给一个或几个索引重新定义一个名字,操作索引别名时会转化为对真实索引的操作,定义索引别名时不可以与真实的索引同名; 过滤器别名提供了一种创建同一索引的不同“视图...

2019-06-19 20:22:40 1598 0

原创 Spring中使用atomikos+druid实现经典分布式事务

经典分布式事务,是相对互联网中的柔性分布式事务而言,其特性为ACID原则,包括原子性(Atomictiy)、一致性(Consistency)、隔离性(Isolation)、持久性(Durabilit): 原子性:事务是一个包含一系列操作的原子操作。事务的原子性确保这些操作全部完成或者全部失败。 ...

2019-06-18 21:13:08 863 0

原创 分布式事务中使用RocketMQ的事务消息机制优化事务的处理逻辑

1、事务消费介绍 我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录...

2019-06-16 22:29:26 1175 3

原创 Docker中RocketMQ的安装与使用

搜索RocketMQ的镜像,可以通过docker的hub.docker.com上进行搜索,也可以在Linux下通过docker的search命令进行搜索,不过最近防火墙升级后,导致国外的网站打开都很慢,通过命令搜索反而会更加方便,操作Docker命令一定要是root用户或者具有root权限的用户。...

2019-06-16 11:34:32 16011 8

原创 Elasticsearch索引的基本操作(4)-Mapping设置

1、Mapping设置 Mapping设置API _mapping ,允许增加新的字段到指定索引中,或在满足一定的条件下修改已经存在的字段,需要使用PUT方法。 1.1增加新的字段到索引中 增加一个new_name到已经存在的索引new_index中,操作如下: PUT /new_...

2019-06-16 09:53:10 1241 0

原创 Ubuntu Linux下修改docker镜像源

在国内访问国外的Docker镜像源通常都是非常慢的,特别是最近GFW升级后,就变得更加慢了,因为要使用Docker中的镜像,这个时候最好就是将镜像指向国内的资源。 国内亲测可用的几个镜像源: Docker 官方中国区:https://registry.docker-cn.com 网易:htt...

2019-06-15 15:51:29 8803 1

原创 Elasticsearch索引的基本操作(3)-索引的滚动操作

1、说明 笔者的工作场景中,每天需要使用Elasticsearch处理数亿的日志记录,这些数据之间不会有直接的关系,只是用于记录以及用作后续的分析处理以及报表输出。如果都将这些数据所有的数据都放到相同的索引中,那随着时间的堆积,这无疑将会是非常庞大的数据,并且随着索引数量的增加,后续数据的插入和...

2019-06-15 10:49:04 1076 0

原创 Java中的SPI(Service Provider Interface)介绍及示例

一个服务(service)通常指的是已知的接口或者抽象类,服务提供方就是对这个接口或者抽象类的实现,然后按spi标准存放到资源路径META-INF/services目录下,文件的命名为该服务接口的全限定名。如有一个服务接口com.test.Service,其服务实现类为com.test.Child...

2019-06-15 00:27:48 41575 5

原创 交易系统高并发下的幂等性设计原则

一、介绍 幂等性就是针对同一个请求,不管该请求被提交了多少次,该请求都将被视为同一个请求,服务端不应该将同一个请求进行多次处理,以确认处理逻辑的正确性,针对交易性系统幂等性的设计尤为重要,否则由于网络或服务器处理超时等问题,就会造成交易混乱,最严重的后果就是乱扣用户的钱,造成投诉満天飞。 ...

2019-06-15 00:20:52 476 0

原创 集群环境中使用Zookeeper实现分布式幂等控制

一、什么是Zookeeper? Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且要达到高吞吐、低延迟同时还要保持一致性和可用性,实际上非常困难。因此zookeeper提供...

2019-06-14 14:49:12 527 0

原创 Elasticsearch 入门到高手的成长阶梯-索引的基本操作(2)-索引的收缩和拆分

一、收缩索引 1、介绍 在大型的集群中,索引的分片也往往比较多,但是随着时间的推移,有一些索引慢慢的就会由“热”变“冷”,到最终基本上不再使用;还有一些索引,它本身的索引文档的数据量并不多,但是却还是使用了不少的分片。如果不对这些索引进行管理,这些索引的分片信息就会一直被集群所维护着,集群主节...

2019-06-14 08:06:52 338 0

原创 集群环境中使用Redis实现分布式锁两种方式

一、介绍 互联网的应用场景中,为了支持高并发的请求,服务都是执行的分布式部署,相同的任务可以在集群中不同的服务器上执行,并且现在的服务容器都是支持多线程,相同的任务也可能会被同一个容器多次执行,都要求执行结果都满足幂等性的设计原则。 分布式锁,就是为了确保在分布式的环境下,相同任务只会执行成功...

2019-06-13 23:35:51 3314 3

原创 Elasticsearch 入门到高手的成长阶梯-索引的基本操作(1)

1. 创建索引 Elasticsearch中索引的名称,必须符合以下要求: 字母只能够是小写字母 不能够包含特殊字符,如\, /, *, ?, ", <, >, |, ` ` , ,, #等 名称不能够以英文的中划线“-”、下划线“_”以及加号“+”开头 名称不可以...

2019-06-13 08:11:26 179 0

原创 HashMap实现原理解读

HashMap是Java开发当中使用得非常多的一种数据结构,因为其可以快速的定位到需要查找到数据,其最快的速度可以达到O(1),最差的时候也可以达到O(n)。本文以Java8中的HashMap做为分析原型,因为不同的JDK版本中的HashMap,可能存在着底层实现上的不一样。 HashMap是通...

2019-06-12 23:13:29 406 0

原创 Elasticsearch 入门到高手的成长阶梯-Elasticsearch集成中文分词IK

​​​​​​1、IK的介绍 Elasticsearch IK分析器插件是国内非常著名的开源中文分析器插件,它是基于国人所开发的另一款基于Luence 的IK分词器做的扩展,以达到对Elasticsearch的支持。Elasticsearch IK分词器是Java语言编写的,在Elasticsea...

2019-06-12 08:31:16 348 0

原创 《Elasticsearch的进阶之路》第二章视频教程已经发布

《Elasticsearch的进阶之路》第二章 - Elasticsearch单节点和集群环境的搭建,目录结构及核心配置文件介绍 的视频教程已经发布了,观看地址:https://edu.csdn.net/course/play/24146/282415,课件下载地址:https://edu.csd...

2019-05-29 17:06:22 143 0

原创 《Elasticsearch的进阶之路》第一章视频教程已经发布

《Elasticsearch的进阶之路》第一章 - 介绍Elasticsearch是什么、有什么特点、应用场景及架构 的视频教程已经发布了,观看地址:https://edu.csdn.net/course/detail/24146/271124,课件下载地址:https://edu.csdn.ne...

2019-05-27 20:46:47 195 0

原创 Elasticsearch的进阶之路 - 第二章之Elasticsearch目录结构及核心配置文件介绍

Elasticsearch集群环境搭建 下载 Elasticsearch的官方下载网址为https://www.elastic.co/cn/downloads/elasticsearch,可以看到有适合Windows、Linux和MacOS等不同操作系统的版本,如下图示: ...

2019-04-26 14:32:22 1506 0

原创 Elasticsearch的进阶之路 - 第一章 - Elasticsearch介绍

Elasticsearch介绍 本章将介绍以下内容 --------------------------------------------------------------------------------------------------- Elasticsearch的前世今生 El...

2019-04-22 10:47:57 568 2

原创 工作回顾

从毕业到工作,已经有13年了,大大小小的公司都有待过,如长亮科技、阿里巴巴和华为等,感受过不同企业的文化,从最初的开发工程师,一步步从高级开发工程师、架构师、高级架构师、技术经理,再到技术总监,也让自己从懵懂的少年,成长为了独当一面的将军,再到互联网企业研发的核心。 CSDN上写过的文档和知识...

2019-04-21 05:12:10 960 4

原创 Spark2中操作HBase的异常:java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily

    为了完善HBase的管理功能,且利用Spark的数据处理优异性能的特性,就准备在Spark中集成HBase的管理功能。但是集成的过程中出现了一个比较奇怪的问题,异常信息如下: Exception in thread "main" java.lang.NoSuchMe...

2019-02-22 14:52:27 3447 0

原创 基于MybatisGenerator扩展的 Model & Mapper & Service & Controller代码生成器

新鲜出炉的基于数据库表 自动生成Mybatis的 Model &amp; Mapper &amp; Service &amp; Controller 等的代码的代码生成器,基于Mybatis Generator扩展其JavaMapper和XmlMapper的实现,一个普通业...

2018-10-25 18:45:31 4888 4

原创 HBase中的SplitRegionPolicy实现原理及其源码解读

我的HBase是使用的是CDH5.15中的版本,其版本对应的是HBase的版本为1.2,后续的分析都是基于该版本的源码做的分析。 一、SplitRegionPolicy及其子类介绍 在HBase的1.2版本中,RegionSplitPolicy的实现子类共有6个,如下类图: 以下针对这几...

2018-09-18 13:48:06 1526 0

原创 线上故障排查(2) - Java应用故障之堆溢出OOM问题及排查方案

以下是用于测试OOM的测试代码: public class HeapMemUseTest { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); ...

2018-09-13 18:25:02 5388 0

原创 线上故障排查(1) - Java应用故障之高CPU占用的问题及排查方案

做为应用负责人,谁都希望自己负责的应用能够在线上跑得顺顺当当,不出任何错误,也不产生任何告警,当然这是最理想的结果,也是做为技术人员希望达到的最终效果。可是实事上应用就像小孩一样,总会在不经意间,不按你期望的结果运行,如CPU偏高、内存占用偏高、应用没有响应、应用自动挂掉等,搞得我们技术人员不是一...

2018-09-13 17:16:32 656 0

原创 HDFS中将普通用户增加到超级用户组supergroup以及其应用场景

Hadoop平台会集成不同的组件,如hdfs、yarn、hive等,不同用户的操作权限不同,除了hdfs是超级用户以外,其它用户都默认是普通用户权限,但是有些场景之下,我们希望普通具有具有hdfs的超级权限,如我oozie中调试shell任务,其中shell调用sqoop从数据中导入数据到hive...

2018-08-31 20:22:31 12855 2

原创 处理Sprint Boot与Storm1.2.2日志实现的冲突,使用logback记录日志

通过mvn dependency:tree可以看到Sprint Boot Starter和Storm引入的日志记录框架不相同的,如下: Spring Boot Starter引入的日志组件是log4j-to-slf4j: +- org.springframework.boot:spring-...

2018-08-31 19:58:02 1616 0

原创 Spring Kafka中关于Kafka的配置参数

SpringKafka文档地址:https://docs.spring.io/spring-kafka/reference/htmlsingle kafka文档地址:http://kafka.apache.org/documentation SpringKafka中配置的Java配置实现类:htt...

2018-08-27 18:27:16 34265 0

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