- 博客(528)
- 资源 (21)
- 问答 (5)
- 收藏
- 关注
原创 redission限流RedisException问题排查
异常信息:org.redisson.client.RedisException: ERR Error running script (call to f_5bec93211d737622365d15a9a4f2537fxxxea2): @user_script:1: user_script:1: RateLimiter is not initialized . channel: [id: 0xfd30xxa3, L:/10.42.4.60:47422 - R:xxx.xx.xx.xx/xxx.xx.xx.
2022-05-15 10:51:22
3547
原创 ElasticSearch分词使用调研
1、定义ES索引结构考虑点:对于一些更新频率低的数据可以以文档形式存储在ES中,更新频繁或者删除频繁的数据不建议使用对于索引的数量不能和建议业务表一样去建立索引的个数,需要了解ES的适用场景再使用示例:setting设置{ "fund_product_index" : { "settings" : { "index" : { "routing" : { "allocation" : { "include" : {
2022-03-17 15:57:18
1726
原创 ToB业务场景下的消息中心建设蓝图
在ToB的业务快速增长情况下,我们业务中有很多使用消息的场景,为了解决重复工作量、服务之间互相隔离的问题,我们搭建了基础版的消息中心,整体服务的设计规划如下图所示:核心思想:1、消息中心作为所有业务消息及内部消息的收口处,避免重复建设,耗费人力2、消息的使用一种是对业务方发消息和邮件,支持多渠道供应商;另一种是对内部员工发送,均采用IM工具飞书,可以减少很大的成本3、对于失败的发送我们做了重试机制,并在重试失败后,可在后台管理画面进行手工触发消息发送,后期可根据权限设计控制重发按钮显示与否4、对
2022-03-17 15:41:39
888
原创 Mac查看JDK安装路径
1、在终端执行如下命令:/usr/libexec/java_home -V2、在结果展示中找需要查看的jdk版本的位置即可
2022-01-19 21:36:14
7974
原创 Clock is moving backwards 时钟回拨
异常信息:<0><9866536554321602> >>>>>>>>>>> xxl-job provider netty_http server caught exceptionjava.lang.IllegalStateException: Clock is moving backwards, last time is %d milliseconds, current time is %d milliseco
2022-01-07 14:30:16
1703
原创 压测工具wrk
我的电脑是mac,所以我就说一下mac的安装方法:1、使用brew install wrk命令来安装2、本地写一个spring-boot服务,写一个controller代码来使用一下wrk,具体代码如下所示:package com.share.java.http;import lombok.extern.slf4j.Slf4j;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.
2021-12-15 22:36:46
1659
原创 Debezium 数据同步
这个中间件可以对接不同的数据源,目前支持主流database,比如mysql,oracle,postgresql等等,还在调研实践中,与flink结合的比较完美,后期大概率会往这个方向推导
2021-08-29 11:57:41
609
2
原创 阿里性能诊断利器Arthas
1、介绍Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?有什么办法可以监控到JVM的实时
2021-08-29 11:47:09
273
原创 全链路追踪TLog
分布式追踪系统SkyWalking,Pinpoint,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。TLog特性通过对日志打标签完成轻量级微服务日志追踪提供三种接入方式:javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的接入对业务代码无侵入式设计,使用简单,10分钟即可接入支持常见的log4j,log4j2,logback三大日志框架,并提供自动检测,完成适配支持dubbo,dubbox,springcloud三大
2021-08-29 11:24:32
715
原创 SpringBatch异常
Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobExecution: id=5, version=1, startTime=2021-05-14 22:37:06.008, endTime=null, lastUpdated=2021-05-14 22:37:06.018,
2021-05-14 22:41:31
883
原创 Arthas入门(一)
Requesting a Cloud Shell.Succeeded.Connecting terminalWelcome to Alibaba Cloud Shell! Type "help" to learn about Cloud ShellType "aliyun" to use Alibaba Cloud CLIshell@Alicloud:~$ wget https://arthas.aliyun.com/arthas-boot.jar;java -jar arthas-boot
2021-04-09 21:23:13
286
原创 2021年计划
2021年计划1、postergre sql 学习2、spring boot集成liquibase暂时解决上线遗漏脚本问题适配不同数据库脚本更新以微服务架构去升级3、历史系统重构从0-1梳理历史系统核心业务接口文档基于业务与产品、开发头脑风暴建立领域模型垂直拆分业务微服务实现最终微服务上云端4、一体化平台建设权限系统设置打通oa和域账户集成中台系统菜单5、基金业务学习一次取得基金从业证书6、数据仓库技术选型BI数据分析7、整理目前代码问题代码规
2021-03-31 21:28:43
378
1
原创 【读书笔记】持续交付,发布可靠软件系统的方法
持续交付,发布可靠软件系统的方法思维导图地址如下持续交付、发布可靠软件系统的方法前言周期时间决定做某种修改到该修改结果正式上线减少周期时间并建立有效反馈环节敏捷宣言首要任务是尽早持续交付有价值的软件并让客户满意整体优化用一种整体方法将交付过程中各个方面以及参与该过程的所有人联系在一起是非常必要的软件交付的问题部署流水线指一个应用程序从构建、部署、测试到开发这整个过程的自动化实现以持续集成为理论基础提交构建----->自动化测试-------->容量测试
2021-03-07 20:12:25
558
1
原创 elasticsearch nested object查询带空格
这里总结一个实践的case,是关于elasticsearch中对于nested object类型的查询问题背景在保险业务中,存在投保人和被保人的概念,一般一个保单是只有一个投保人,一个被保人,也存在团单,一个投保人多个被保人。实际的需求是按照被保人的姓名去查询,结果发现返回的结果不匹配或者不存在命中的文档问题分析在我们业务中,因为数据库采用了分库分表,所以在b端画面的查询,如果去数据库查询,效率肯定会慢,因为多个库的数据,还存在分表,最后做聚合,性能方便肯定存在问题,最后采用elastics
2020-12-30 11:36:51
1008
原创 elasticsearch bool query查询案例
ElasticSearch中有一种复杂的查询,bool query,也叫做布尔查询,下面是一个bool查询的case,在项目中遇到的,做一下总结:case产生的背景:保险业务,由于是分库分表的database,所以在b端画面的一个查询数据的展示,是通过elasticsearch来检索命中文档的。case的实际需求:画面有两个输入框A和B,其中在A中输入汉字,检索投保人policyHolder或者被保人policyInsurant的汉字姓名,如果在B中输入英文名字,则检索投保人policyHo
2020-11-16 18:19:32
787
1
原创 项目实践缓存预热方案之CommandLineRunner和ApplicationRunner
众所周知,在项目的开发中,合理使用缓存是提高服务性能的一大利器,本篇文章就来介绍一下我所在项目中如何使用缓存的一个案例。背景我们的项目是由多个微服务所组成,业务是保险,我所负责的模块是出单,在压测的过程中,发现当所有服务启动好之后,第一次出单的时间存在耗时较长的情况,通过sleuth分析了一下各个服务之间的调用链,针对第一单,发现出单接口中存在调用其他接口做查询和逻辑处理,在第一次调用后会将结果缓存,那么以后的调用基本是直接走缓存,不会去和数据库交互,减少了数据库创建和关闭连接之类的耗时。此时,我发现针
2020-10-11 10:55:19
709
1
原创 spring_cloud_feign_log
这篇主要介绍一下spring cloud feign log的相关知识点。下面以一个项目中的具体例子来说明:下面是一个接口,在a服务中通过feign去调用b服务的generateBizNo接口,最后返回b服务的generateBizNo所返回的响应。@FeignClient(value = "serviceName", url = "serviceUrl" , fallbackFactory = FeignFallbackFactory.class,configuration = Fe
2020-10-09 17:21:17
476
原创 elasticSearch 检索 mget 用法示例
总结一下自己看elsaticsearch 文档,对于mget用法的实践:需要说明一下,这里必须是ids或者docs,否则会报如下的异常信息:异常信息如下:{ "error": { "root_cause": [ { "type": "parsing_exception", "reason": "unknown key [policyNo] for a START_ARRAY, expected [docs] or [ids]",
2020-07-12 17:13:42
801
原创 mysql select count(*) 优化
最近一直在做微服务的压测和改善,从代码层面,逻辑层面,结合业务进行了调整,下面是关于sql层面的优化点:一般我们判断记录是否存在,都会在mapper.xml中写如下的sql:select count(*) from xxx_0000 where is_deleted='N';使用datagrip执行上面的sql,在控制台可以看到如下输出:返回一条记录,耗时1s 690ms下面是对这条sql进行优化的改写:select count(*) from xxx_0000 where is_dele
2020-07-12 15:17:49
2538
原创 spring cloud feign调用超时重试retryer
认识一下Retryer接口认识一下RetryableException异常认识一下FeignException异常实际中我们是如何来应用的Retry 接口 简单介绍通过下面的源码,Retry接口继承了Cloneable接口。Retry接口里面有一个方法叫continueOrPropagate,参数是一个RetryableException重试异常的对象,返回值为void类型Retry接口还有 一个clone()方法,返回类型是Retryer该接口里面有个静态内部类Defa.
2020-06-26 19:46:37
5973
原创 查询返回指定的elasticsearch文档字段
可以通过指定elasticsearch中文档的字段,来指定返回文档中的字段:通过_source字段来指定需要返回的字段。举例:根据关系单号,查询es,只需要返回salesType,policyNo,policyRelationNo,policyStatus{ "_source": [ "salesType", "policyNo", "policyRelationNo", "policyStatus" ], "query": { "bool": {
2020-06-26 16:37:10
3357
原创 查询elasticsearch文档不显示原始文档
通过_source字段值为false,查询结果不显示原始字段。举例:根据关系单号,查询es,设置_source为false{ "_source": false, "query": { "bool": { "must": [ { "term": { "policyRelationNo": "KR01435021" } } ], "should": [],
2020-06-26 16:36:00
1251
原创 查询elasticsearch查询结果包含或排除某些字段
通过_source字段中的include和exclude来指定返回结果包含哪些字段,排除哪些字段举例:根据关系单号,查询es,设置_source的include和exclude{ "_source":{ "include":[ "policyNo", "policyRelationNo", "policyStatus" ], "exclude":[ "salesType" ] }, "query": {
2020-06-26 16:35:21
15010
1
翻译 如何监控aws的elasticsearch
Amazon Web Services Elasticsearch Service使组织能够部署,保护和运行其Elasticsearch集群。 AWS Elasticsearch是一种经济高效的大规模运营方式。在这篇文章中,我们分以下几个来说;有哪些可用的指标?如何添加更有意义的计算指标?关键指标有哪些?在哪些指标上使用异常检测动态阈值?什么是elasticsearch?Elasticsearch提供了一种为您的应用程序,网站和数据目录提供快速搜索体验的方法。它也可以用于监视和收集基础结构
2020-06-26 14:38:52
720
原创 elasticsearch cluster_block_exception
insert occur error:Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/8/index write (api)];]上周我们在uat进行压测,使用的是elasticsearch 为aws的,在压测的过程中,elasticsearch抛出如上的异常信息,经过查阅aws es的文档发现,当es的存储低于一定百分比的时候,就会抛出如上的异常,集群阻塞异常,在进行写入的时候。
2020-06-26 11:33:00
5266
1
原创 java.lang.OutOfMemoryError: Java heap space
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap spaceat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)at org.springframework
2020-06-26 11:15:21
1298
1
原创 Mapped Statements collection does not contain value for
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.xxx.xxx.
2020-06-26 11:02:29
269
原创 查询性能优化
背景说明:业务是保险的业务,分享一篇查询性能优化的文章。本人目前负责的出单业务和业务介入等模块。为何做这个查询的性能优化?由于产品升级,多被保人多险种多责任的出单,一个关系单下多个被保人的保单查询耗时多我们是以被保人的维度落的保单数据,也就是说一个关系单多个被保人多个险种,那么一条保单会对应多个险种数据,其次还有责任,特约,被保人的数据等,导致查询耗时很慢保全服务调用保单接口易出现超时现象,同时查询19个被保人数据。如何发现这个查询慢?使用jmeter工具对单个接口进行压测,优化前20并
2020-06-21 11:19:37
322
原创 Java微服务性能优化
最近在做微服务的性能优化,下面是对这次优化中,采用的方法和调整策略:使用JMeter进行接口压测使用JProfiler对压测过程中进行记录,分析接口耗时,内存等通过jvm命令,分析内存使用使用阿里巴巴Arthas,对程序进行监控使用sleuth来分析整条链路以后下面会分别按照上面5个方面来进行总结...
2020-06-14 21:32:18
1034
原创 性能诊断工具Arthas
最近在做项目的微服务性能优化,快结尾了,做一下总结,里面关于使用到阿里巴巴的arthas的地方和心得Bootstrap ArthasEXAMPLES: java -jar arthas-boot.jar <pid> java -jar arthas-boot.jar --target-ip 0.0.0.0 java -jar arthas-boot.jar --telnet-port 9999 --http-port -1 java -jar arthas-boot.jar
2020-06-13 11:27:04
523
原创 String_format异常
背景:输出的钱的格式需要是千分位分隔,所以采用String的format产生异常的代码如下:public static void main(String[] args) { System.out.println(String.format("%1$,d","99999999")); }异常信息如下:Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.St
2020-05-21 19:33:58
621
javascript代码执行结果分析
2016-09-01
android毕设中使用了xutils,但是出现了问题
2016-04-06
在使用gson时,创建该对象但是不能导入Gson类
2016-04-06
chrome访问一个json文件中文乱码
2016-04-05
关于空格,有空格就报500错误,没有空格就不报错,这是什么原因
2015-05-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人