自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 ES版本升级后出现Trying to create too many scroll contexts. Must be less than or equal to: [500]异常

从一个异常说起:[I/O dispatcher 79] WARN RestClient - request [POST http://xx.xx.xxx.xxx:8080/index/_search?scroll=600s] returned 1 warnings: [299 Elasticsearch-6.8.5-78990e9 "Trying to create more than 500 scroll contexts will not be allowed in the next major v

2020-10-30 21:00:09 256

原创 ES中结果震荡问题分析

CASE:场景:查询时出现“同一个DSL语句执行多次结果不一致”,如查询时返回的结果时而出现total=16,时而出现18...配置:refresh_interval = -1; 3节点;2 primary 1 replica;分析:主要的原因是因为有副本(replica)的存在,主分片和副本分片可能不一致,导致最终在主分片和副本分片上计算得到的得分不同,而导致最终的查询结果不一致。不同的查询请求落到不同的分片上,获取到的文档集就可能不一致,最终才会出现hits.to..

2020-10-30 20:11:59 28

原创 mybatis设计大接口的坑以及做法

先说一些注意事项:1.注:mybatis一个mapper.java文件只能对应一个mapper.xml文件,所以不能一个mapper.java对应两个xml(一个默认的,一个自己拓展的)2.注:如果表中有字段是text,selectByExample是不能返回该字段的,最终结果该字段为null;如需返回,则使用selectByExampleWithBLOBs方法3.注:updateByExampleWithBLOBs使用的时候需要注意,需要传入全部的字段进行替换,否则会覆盖成null4.注:

2020-10-30 14:25:28 70

原创 ES查询效率-Query、Filter&term

目的:Google上博客众说纷纭大同小异,逻辑正确但略为混乱,再此梳理出容易混淆的点1.是否算分只与查询方式有关(与是否term查询、match查询无关)(Query查询)查询上下文:查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;(Filter查询)过滤器上下文:查询操作仅判断是否满足查询条件,不会计算得分,查询的结果可以被缓存;1、Query查询:在使用query进行查询时的执行环境,比如使用search的时候。ES中索引的数据都会存储一个_score分值,分值越高就代表越.

2020-10-14 22:34:00 39

原创 Mybatis异常:Invalid bound statement (not found): com.xxx.mapper.xxxMapper.selectByExample

出现该异常的原因主要是两块:1. 没有找到mapper.xml文件2. mapper.xml中内容有问题(比如nameSpace不对,比如mapper.java中的方法名在xml中不存在)第二点比较容易排查...仔细看看mapper文件即可;第一点主要是查看启动文件application.java,当mapper.xml文件没有加载的时候,依然是Invalid bound statement (not found),而不是文件加载失败等指向性更强的异常文案...例如:@Ma.

2020-10-10 19:13:22 364

转载 ElasticSearch的Update By Query的坑(使用注意事项及其方案)

ES的Update By Query对应的就是关系型数据库的update set ... where...语句;ES的Update By Query可能存在的坑:比如批量更新时非事务模式执行(允许部分成功部分失败)、大批量操作会超时、频繁更新会报错(版本冲突)、脚本执行太频繁时又会触发断路器等。1. 非事务模式执行所有更新和查询失败都会导致update_by_query中止,并在响应失败时返回。已执行的更新仍然存在。(该过程不会回滚,只会中止)使用时候不建议太大数据的修改;建议增加.

2020-10-09 20:41:55 461

原创 ES 的 unassigned shards 核心处理方案

背景:管理过数百个集群,使用方式千变万化,出现过各种各样的shards分配不了的情况,趁此假期做一些unassigned处理方案的总结;先总结一下:所有的unassigned都可以通过explain API查到原因和处理方案GET /_cluster/allocation/explain{ "index":"index_name", "shard":0, "primary":false}先找到所有的unassigned分片:curl -XGET localho..

2020-10-03 11:01:56 94

原创 IDEA打包失败(多个module之间依赖不能识别)

背景:开发过程中总会遇到一些不那么合理的架构...一个服务多个module,前后端不分离...于是需要自己打镜像,然后发到docker hub...再起服务;于是就有了第一步,本地打包的过程idea提供了很方便的打包功能:然后出现异常:异常原因:web的module需要其他module的包,不能直接打包;需要先有其他包...解决方案:利用idea的root打包(直接将所有的包都打了,然后再找出需要的那个包)然后就可以去目标文件夹找到相应的包:...

2020-10-03 09:34:35 67

原创 ES写入性能的提升方案

从社区上看到一个问题,回答了一下:总结了下提高写入性能的方案:服务端:1. refresh : refresh_interval(1s) / indices.memory.index_buffer_size(10%)2. translog :Index.translog.durability(request,每个请求都落盘)--->async(异步写入) Index.translog.sync_interval---...

2020-09-30 17:07:20 33 1

原创 sudo pip install -i https://pypi.douban.com/simple --user MySQL-python报错‘my_config.h‘ file not found

异常:Google了无数次,都没用后面无意之间看到了一篇博客https://www.codenong.com/cs107125972/按照他的方式改了,但是没有用仔细检查异常报错后:到了client的目录,copy了一个文件之后可以了...

2020-09-22 14:58:32 20

原创 High-level-rest-client客户端连接使用与底层逻辑(Java)

1.与其他client的特性对比transport连接方式: tcp连接方式,长连接 作为一个node节点的形式访问服务端(9300端口) 性能最佳 拓展性较差,无法向下兼容 经常出现长连接断开的问题 ES7.x不支持RestLowLevelClient连接方式: http连接,通过keepalive实现长连接 内置连接池 性能较transport略差一些 拓展性好,兼容性高 封装的不够完善 E...

2020-09-16 23:07:08 141

原创 IDEA导入jar包异常:exception during working with external system: java.lang.AssertionError

IDEA导入jar包异常:exception during working with external system: java.lang.AssertionError场景:idea通过gradle导入jar包的时候出现异常原因大概是:无法下载jar包(offline模式不支持下载)处理:关掉该限制...

2020-09-11 20:34:51 238

原创 ES集群掉出节点后恢复时出现red

这里写自定义目录标题ES集群掉出节点后恢复时出现red集群red/yellow排查一个比较难处理的caseES集群掉出节点后恢复时出现red集群red/yellow排查基本思路:1.分片设置不合理,单组分片:primary数 + replica数 > node数,则yellow2.total_shards_per_node参数的限制导致分片不能完全分配3.节点掉出导致red4.各种元数据修改、恢复等操作导致rebalance(暂时的init)5…除了上述经验的思路,可以直接使用exp

2020-09-08 22:53:24 104

原创 raft算法如何实现强一致性

2020-06-23 19:09:14 132

原创 记一次zk集群引发的线上问题-排查策略

故障描述(What happened):10:20 发布estate.realtor.ap.fdd服务(上线)10:25 发现服务发布失败,看了日志,发现一直在初始化dubbo,时间过长,关掉了健康检查(该服务较重,重启时间较长,健康检查最长120s超时)10:26 重新发布服务,发布系统发布成功10:28 业务方发现二手房业务不可用10:30 回滚到上一个版本(estate.realtor.ap.fdd#6134)10:35 发现二手房服务仍不可用10:40 回滚到(e...

2020-06-17 19:53:06 96

原创 synchronized锁的到底是什么?

1.起源于一个问题场景一:线程安全吗?static String lock1 = new String("aaa");static String lock2 = new String("bbb");public static void test3(){ synchronized (lock1) { // 业务代码会被锁住吗? lock1 = lock1 + "x"; i++; }}

2020-06-16 17:26:28 83

原创 Logstash将日志产生时间替换@timestamp,并保留日志收集时间到其他字段

1.需求EFK日志系统采集日志时,采集时间和日志真正生成的时间会有差异,开发一般需要根据日志真正的生成时间在kibana中进行查询2.解决方案将收集到的日志的时间抽取出来,替换默认的@timestamp字段(将@timestamp字段赋值给其他字段用来记录)logstash的配置(测试环境):filter { grok { match => { "message" => "(\s*%{TIMESTAMP_ISO8601:timestamp}\s*.

2020-06-15 12:56:39 532

原创 权衡问题---学习了微服务各大常用组件的一点思考

1.没有什么技术可以完全通用,只要深度使用一定需要从业务出发对技术进行权衡从几个例子出发:1.ES的分片机制天生支持分布式,同时也带来了分布式了弊端:排序和算分问题;搜索的场景需要严格的定制化,通过对mapping的修改可以支持算分的调整,影响查询的结果-----代价是大大增加开发和mapping的维护成本想要精确的算分和排序--->需要大量的计算和内存如果数据量不大---->默认使用一个分片---->不需要对排序和算法另外处理/同时牺牲了分布式的特性(建议一个业务场景

2020-06-11 16:01:16 78

原创 ES查询流程图解与思考

1.ES有那些搜索方式?Elasticsearch的搜索类型(SearchType类型)1、 query and fetch  向索引的所有分片 ( shard)都发出查询请求, 各分片返回的时候把元素文档 ( document)和计算后的排名信息一起返回。  这种搜索方式是最快的。 因为相比下面的几种搜索方式, 这种查询方法只需要去 shard查询一次。 但是各个 shard 返回的结果的数量之和可能是用户要求的 size 的 n 倍。  优点:这种搜索方式是最快的。因为相比后面的几种es的

2020-06-02 11:40:35 138

原创 ThreadLocal和ThreadLocalMap

1.ThreadLocal是什么?是用来存放我们需要能够线程隔离的变量的,那就是线程本地变量。也就是说,当我们把变量保存在ThreadLocal当中时,就能够实现这个变量的线程隔离了。...

2020-06-01 11:37:19 69

原创 hashmap底层原理-核心要点

1.基本原理?jdk1.8 : 数组+ 链表/红黑树hashmap的初始默认容量:16,如果new Hashmap的时候指定了,也必须是2的幂次方hash冲突时:先使用链表解决冲突--->链表的长度到8,则使用红黑树hash算法:先高16位异或低16位再取模运算 why?参考:https://blog.csdn.net/weixin_34288121/article/details/93446872先高16位异或低16位再取模运算的目的:减少hash冲突默认扩容阈值/负载因子.

2020-05-31 17:46:01 85

原创 二叉查找树/红黑树/B+树

二叉查找树1.为什么会出现二叉查找树? 二分法可以很好的对有序数组进行查找,但增删比较低效 链表可以很好的增删元素,查找低效,且使用二分法也低效 ------> 出现了普通二叉查找树的数据结构 特征:左子树所有节点 < 根节点 < 右子树所有节点 中序遍历是有序的 查找的时间复杂度:O(logN)2.普通二叉查找树缺点?...

2020-05-31 14:58:43 62

转载 一致性hash算法

1.为什么需要一致性hash算法?如下场景:redis集群按槽分配数据(类似于数据库的分库分表)打进redis的数据可能分配到任何一个redis的节点上,如果没有一个固定的策略,那么需要遍历这个redis集群才能命中想要的数据-------->所以需要有一个策略来避免(分库分表规则:按照Hash值、取模、按照类别、按照某一个字段值等规则),这里按照hash来说明。按照hash:一个资源通过hash算法可以路由到某个节点,如果hash(资源1) % 4 = 2,那么查询资源1的时候.

2020-05-30 17:57:07 60

原创 ES集群角色理解&&ES文档写入流程-深入学习ES

ES集群角色理解1.角色:master:负责维护整个集群,以及维护元数据(索引的创建删除,mapping Template)data节点:针对具体数据(消耗IO、最好使用性能高的节点,如SSD),负责索引文档的写入、查询coordinate节点:协调节点,主要负责调度,实现负载均衡注:kibana连接master节点,logstash连接coordinate节点2.文档的写入流程注:此处的缓存不是JVM缓存,机器的 filesystem cache...

2020-05-12 19:44:35 141

原创 微信支付策略(Android端-使用H5支付方式实现微信支付)

1.android端支付

2020-05-08 10:13:21 118

原创 Mysql迁移数据(大表迁移)策略

数据迁移两种方式1.停服---不在考虑范围2.不停服sql语句直接迁移可能的问题:锁表例如:insert into A where * from B where create_time<"xxxx";mysql加锁规则是:A表锁,B逐步锁(扫描一个锁一个),如果没有createTime没有索引,会全表扫描,也就意味着慢慢的会越锁越多数据,最终导致锁表,B表被锁住不能...

2020-05-06 19:34:00 118

原创 ES词典热加载-通过修改ik分词器源码实现热加载自定义词典

逻辑:自定义词典的数据从mysql加载,只需要重启一次ES即可,后续热加载实现:在自定义词典的init方法中实现每隔一定时间读取mysql并写入自定义词典的逻辑...

2020-05-06 18:25:32 145 1

原创 EFK相关监控:filebeat、logstash、ES监控,Kafka-manager监控

Filebeat的监控:利用kibana方法一:直接配置kibana的域名# filebeat配置文件filebeat.inputs:- type: log enabled: true paths: - /data0/logs/*/*/*.log ignore_older: 168hsetup.kibana: # Kibana Host host: "...

2020-05-06 18:16:43 105

原创 一致性算法(paxos、raft)

背景:分布式一致性模型1.弱一致性:(最终一致性) 1.1 DNS 1.1 Gossip2.强一致性: 2.1 同步 2.1 paxos 2.1 raft(multi-paxos) 2.1 ZAB(multi-paxos)----与raft相似,心跳发起者相反(raft由master发起心跳,zab由slave发起)...

2020-05-02 19:18:16 621

原创 集群架构总结(Kafka、redis,zk,es)

ZK集群1.zk集群节点可见通过配置文件达到节点间相互可见2.为什么集群设置奇数个节点1.奇数节省资源:zk容错,zk节点剩下的个数必须要大于挂掉的节点(大于n/2),整个集群才可用。5节点容错2个,6节点容错2个2.奇数节点集群可用性更高,2n,2n+1容错都是n-1,奇数个挂掉n-1个节点的概率小一点3.可用性高,网络通信导致失联,裂出的节点使集群可用的概率...

2020-04-24 14:27:09 261

原创 微信卡券之众多坑总结(Java)---优惠券

1.建议一个字一个字读微信文档,从头到尾,不要只看卡券那一栏https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Redeeming_a_coupon_voucher_or_card.html#52.公众号、小程序、开发平台(拿到unionId)记得绑定起来3.公众号:开发-基本配置 3....

2020-04-15 12:52:59 433

原创 idea Cannot find declaration to go to问题的解决,ctrl+左键无法进入代码/如何导入源码包

1.idea Cannot find declaration to go to问题的解决,ctrl+左键无法进入代码解决方案1:file--->project structure--->设置main下java文件夹为source(选中src文件,右键--->选择sources)解决方案2:原因:导入项目的时候使用的是Open而不是Import Project。...

2020-03-17 17:45:10 3320

原创 EFK+Kafka日志系统(PB级)-测试环境demo可用

EFK+Kafka日志系统:filebeat ---> kafka(ZK) ---> logstash ---> ES ---> kibana----------------------------------------------------------------------------基础定义-------------------------------...

2019-11-29 13:38:17 728

原创 两种通过aop设置重试机制的方式

注意:1.不要在同一个类中调用自定义的注解,如果controller调用,注解要放在service层(其他类)2.如果有配置aop扫描的包,不能只设置扫描control下的文件方式一:/*** controller层*/@RequestMapping(value = "/feedback/test", method = RequestMethod.POST) ...

2019-08-19 17:19:25 280

原创 Mac终端下出现bogon的解决方案

现象:mac终端的hostname变成了bogon解决方案:命令行重新设置一下hostnamesudo scutil --set HostName your-hostname原因:这是因为终端会先向 DNS 请求查询当前 IP 的反向域名解析的结果,如果查询不到再显示我们设置的计算机名。由于我们的 DNS 错误地 将保留地址反向DNS 查询结果返回了 bogon;其中 bo...

2019-08-13 19:56:42 402

原创 高并发代码设计(redis)-暂时把redis当作数据库使用

1.没有并发的场景@RequestMapping("/test") public String deductStock() throws InterruptedException { int stock = Integer.parseInt(stringRedisTemplate.opsForValue().get("stock")); if(stoc...

2019-08-07 20:23:19 212

转载 activemq控制面板里的NumberOfPendingMessages、MessagesEnqueued、MessagesDequeued含义

Number Of Consumers 消费者 这个是消费者端的消费者数量Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数Messages Enqueued进入队列的消息 进入队列的总数量,包括出队列的。 这个数量只增不减Messages Dequeued 出了队列的消息 可以理解为是消费这消费掉的数量这...

2019-06-21 14:04:36 1700

原创 Java中new data()插入数据库---时间相差13h(系统时间是对的,数据库时间也是对的)

参考了该篇博客:https://blog.csdn.net/wo18237095579/article/details/90288735方法:数据库JDBC链接配置加上serverTimezone=GMT%2B8亲测有效排查逻辑:1.先排查数据库是否配置正确的时区2.检查服务器时间是否准确3.测试上述方法配置...

2019-06-04 12:18:52 710

原创 lambda表达式生成map

Map<Long, EstateVr> apEstateIdToEstateVrMap = estateVrs.stream().collect(Collectors.toMap(arg -> arg.getApEstateId(), arg -> arg, (o, n) -> n ));Map<Long, List<EstateVr&...

2019-06-03 19:50:41 1026

原创 split方法通过".""/"进行拆分

String string = "123-45678";String[] parts = string.split("-");String part1 = parts[0]; // 123String part2 = parts[1]; // 45678该方法的参数是个正则表达式,要注意对某些字符做转码。“.”在正则表达式中表示任意字符,如果要通过“.”号做分割,可以写成,sp...

2019-06-03 19:49:19 1410

mongodb4.0.1

MongoDB4.0.1(用于集成springboot---mongodb版本必须大于2.6)

2018-08-27

lucene中文分词、同义词制作源码

lucene分词器demo,有lucene自带的分词器及其使用方法,也有mmseg分词及其使用、同义词的简单实现;

2018-02-14

commons-io-2.3.jar

io重要jar包,commons-io-2.3.jar,亲测可用,很方便的封装类

2018-02-05

空空如也

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

TA关注的人 TA的粉丝

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