自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 抢购活动引起反压

系统做类似秒杀的活动,在18点开启。主要针对已登录用户。根据监控,该时间段大概有19万用户同时在线。在准点开启时,突然用户侧报警群中出现有异常。开始紧急排查。观察本身系统监控、日志正常,说明是从入口处到系统处有异常。观察NG的日志,发现有大量的504。504通常用来被用于反压统一标准错误码。说明有大量请求被反压,无法进入系统。系统当前总流量,未见明显徒增。瞬间流量打到了8万5,大概有3000多流量被504拦截。使用的undertow的容器...

2021-11-26 18:55:58 1107

原创 手把手看监控-redis连接数突然增加

背景早晨9点26,接口的95突然升高-报警-自动恢复。再看其他监控,发现限流redis在同一时间也有突然升高。再看该redis的情况,发现再9点26,突然的连接数增高了10倍。什么情况下会造成连接数突然增高,又回归平静?1、问:流量突然增加,用到限流redis,导致连接数增高。 答:根据监控,在早晨没有行情。2、问:是否有其他项目用到了该redis,其他项目有流量导致。 答:本组有两个项目使用该redis,检查都没有量。给运维建t...

2020-05-26 10:58:59 1677 2

原创 手把手看监控--当不设置JVM-Xms时

背景:运维埋的一个坑,在该应用上只配置留-Xmx,没有配置-Xms。表象:堆内存从0.2G开始,最大到0.8G,就开始执行GC,导致频繁GC,大致间隔1分钟/次。从下图左侧即可看到。解决:增加-Xms重新发版本,堆内存、GC间隔明显看着好多了。原因:-Xms为应用初始化部署的时候,向操作系统申请多少内存。如果不设置-Xms后,应用只会申请一小部分的内存,当堆内存使用达到...

2020-01-17 15:51:11 1457

原创 网关设计

新网关与旧网关的区别:1.进行了性能优化。 优化内部数据传输,减少使用json传输数据,降低内存开销。 这块可以具体举例2.合并了一个项目-np。减少了链路,降低了故障率。3,对交易推送、订单统一管理。存在的问题:1.大量使用json传输数据,内存开销比较大。导致GC频繁,服务稳定性下降。2.与NP、Broker交互时候存在大对象,1.考虑到行情数据的实时性,...

2019-09-02 14:36:55 1216

原创 线上问题排查

单独搭了一套线上环境,用来做周年庆活动。今天收到了超时报警。想着应该是出问题了。登陆堡垒机,连服务器。看logThe last packet successfully received from the server was 180,040 milliseconds ago.  The last packet sent successfully to the server wa...

2019-01-14 21:31:00 269

原创 spark集群环境搭建

 1. linux之间免密码登陆 最好使用ssh-copy-id -i 目标域名, 比 整合一个authorized_keys好使。2.hadoop安装 2.4.1是32位的,CentOS用的64位的。还需要在编译一次。编译一般用的protobuf还是挂在code google下。还是先跳过了。安装2.7.1看看,2.5以后为64位,如果不行在回来装protobuf。2.7.1...

2019-01-13 23:04:20 211

原创 中英文混合按首字母排序

以前在外资不涉及到中文排序,目前滴滴有个需求是要按照中文首字母进行排序显示,还会有英文混合其中。用到了一个第三方包。 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> ...

2018-10-04 20:05:46 3397

原创 Activiti工作流引擎-----入门

 准备工作   开始的一些准备工作,网上教程很多,就不赘述。在eclipse中安装插件, 下载Activiti的jar,我使用的是5.22. 用ecplise来创建一个Activiti的project。 下载mysql的驱动jar。  初始化数据库     初始化数据库有两种方式,跑java代码去初始化,或者手动执行sql语句去初始化。我一般用第二种,方便快捷。    ...

2018-09-09 11:36:01 359

原创 分布式调用链(二)---Control/Service层插桩埋点实际处理

为什么要在Control/Service 层进行埋点因为请求过来以后,先进入Control,在进入Service。在Control:可以统计某个URL,具体的执行次数、时间、一段时间的流量统计。在Service :可以统计某个方法的用时。当有了数据以后,可以使用kibana来做可视化工具。kibana是属于elasticsearch的一款工具。 采集端执行流程应用系统嵌入监...

2018-08-26 18:11:16 1591

原创 分布式调用链(一)

调用链的兴起分布式遇到的问题:随着微服务设计理念在系统中的应用,业务的调用链越来越复杂。一个请求可能会涉及到几十个服务的协同操作,涉及到多个团队的业务系统。当遇到问题需要定位时候,也会产生一系列的麻烦。 解决方案:通过调用连,把一次请求调用过程完整的串联起来,实现了对请求调用路径的监控,便于故障快速定位。 调用链显示内容:各个调用环节的性能分析(如各个API使用时间、使用堆栈情况)、在调用...

2018-08-25 14:48:11 9220

原创 Spring boot 部署到WebSphere 遇到的坑

公司统一用WebSphere,后期UAT、PROD环境都需要使用WebSphere. 所以尝试从Tomcat切换到WebSphere.遇到的坑1:     Spring boot 部署到websphere8.5会报错,因为Spring boot 内置的logback2.10 是用Java9进行编译的。Tomcat 是能够认Java9,而 Ws 8.5 不认Java9.     所以 要...

2018-08-11 19:15:05 5109

原创 Spring boot 部署到Tomcat

一直没更新博客。 周末写篇吧。首先在server上装了Tomcat,配置了JDK1.8.然后打War包。需要修改的地方1:一开始用的<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web&...

2018-06-23 20:50:24 355

原创 JVM-对象(实例)

    当虚拟机遇到new指令,会创建一个对象。1.    类加载检测:        检查该指令的参数是否在常量池中定位到一个类的引用,检查该引用代表的类是否已经被加载、解析、初始化过。如果没有,就先执行类加载过程。Student student=new Student(user);    先去看user代表的类加载没有,在去执行new指令。    2.    给新生成的对象(实例)分配内存: ...

2018-05-14 16:32:44 991

原创 JVM-内存模型

JVM虚拟机上的内存模型    线程私有区域。依赖用户线程的启动与销毁。    线程共有区域。随着虚拟机的启动而存在。程序计数器:    理解:可以理解为字节码的指针。是线程私有的区域。    为什么存在:因为一个CPU只会执行一个线程中的指令。为了在线程来回切换中能够恢复到正确的执行位置,设置一个指针来记录执行到哪行字节码。虚拟机栈:    理解:相当于一个栈空间,每个方法在执行的时候会创建一个...

2018-05-14 15:58:47 213

原创 创建Spring MVC

1.    在Web-INF下,创建web.xml. 加入如下两段代码:        (1) load-on-startup 参数用来表示是否需要容器在应用初始化时候就启动这个servlet. 当值>=0的时候就会启动。当值<0的时候,该servlet被选中才会加载。当value值越小,加载顺序越靠前。<servlet> <servlet-name>...

2018-05-14 09:53:26 150

原创 分布式下session一致性问题

Nginx轮询后call tomcat,tomcat产生seesion. 当call不同的tomcat会产生seesion不一致的问题解决方案1: 在Nginx采用ip_hash算法。保证同一个ip匹配到同一个tomcat上。缺点:当一个公司是局域网,全部通过一个ip来访问,会匹配到同一个tomcat里。只记录公网IP。         当某个tomcat挂掉以后,其上session丢失,造成用户...

2018-05-14 09:53:06 445

原创 MyBatis源码解析-configuration

在spring-mybatis.xml配置文件中,<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name=&quot

2018-05-14 09:52:04 150

原创 JVM

线程私有的 程序计数器+虚拟机栈一个方法一个栈帧,JVM很早就知道哪些方法调用哪些方法,所以包含局部变量表操作数栈动态链接----支撑了允许时多态,接口.funtion, 底层实际是来解析该接口的实现类,出口虚拟机栈javap指令istore_ 从操作数栈压入局部变量表iload_从局部变量表压入操作数栈递归方法在栈中应该有几个栈帧。本地方法栈方法区 类信息、常量(1.7以后从方法区挪到堆里)、静...

2018-05-14 09:51:49 145

原创 Spring源码分析-事务管理

MyBatis是没有事务管理的,需要将事务交给Spring管理。在service层function上加 @Transactional,表明有关数据库的DML语句,操作所需要的事务都交由Spring管理。实际上是connect.commit;connect.rallback;transaction实际是一个对象,在该对象中维护了一个connection属性。我们把这个对象叫做spring的事务对象。...

2018-05-14 09:50:39 207

原创 MyBatis源码解析-configuration

在spring-mybatis.xml配置文件中,<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name=&quot

2018-05-14 09:49:48 308

原创 算法分析

算法是解决问题的步骤。五个特征:有穷性、确定性、可行性、有输入、有输出设计原则:正确性、可读性、健壮性、高效率和低存储时间复杂度O。O(n)。时间复杂度for(int )加减是不算的,n+n=>n空间复杂度,看list map占了多少空间,二叉树遍历有前中后遍历前序 先跟--再左边--再左边的孩子(找左边的孩子) 根左右中序  左根右后序 左右根二叉搜索树 就是一颗树的中序遍历...

2018-05-14 09:49:32 174

原创 MyBatis

1. #与$的区别:1. #{} 在动态解析的时候, 会解析成一个参数占位符。用?来代替。将传入的数据当成字符串,将入参自动增加双引号。如 where id=#{id},传入的值是11,那解析的时候变为 where id="11".#{}使用反射机制,相当于params.getIem().getName();$将传入的数据直接显示在sql中。仅仅是一个string类型的占位符。如order by ...

2018-05-14 09:48:51 169

原创 学习之--搜索引擎

搜索引擎应用方向:自动补全,联想词个性化推荐点评与简介用户行为分析商品推荐、商品属性代替like、group 等关键字搜索引擎特性:高效,针对百万级、亿级数据可以有毫秒级响应。快速部署,接入使用容易。属于一个单独平台。提供接口即可使用。可扩展性,将建立索引和查询处理的运算分不到一个集群内的多台服务器。搜索引擎的缺陷:    底层是NoSql。不是关系型数据库。在关联查询不好。Solr是基于Luce...

2018-05-14 09:46:23 459

原创 学习之响应式应用架构重构ReactiveX

现代应用架构瓶颈网络RPC(远程过程调用)dubbo netty NIO+AsyncMOM(消息中间件) RabbitMQDB jdbc连接网络带宽 1GB---100MB网络运用 设计架构应用性能阻塞式+不合理同步阻塞式   同步    等待结果返回用户下单 包含 用户服务100ms+下单服务100ms >200ms1.通过认证token查询user2. 用user.id执行下单服务依赖模...

2018-05-13 21:09:17 578

原创 Spring-事务有时候不能回滚分析

开头总述Spring在同一个类中调用function,事务会失效。Spring事务是基于AOP代理来实现的。而AOP是使用JDK动态代理来实现的。    例如:    /** * 父类调用子类 * 子类失败,不能影响父类 * * 预期效果:child回滚,parent插入成功 * 第一次试验 真实效果:都插入成功,child方法因为try catch导致事务未起作用。 *...

2018-05-13 20:13:08 712

原创 Spring框架--事务

事务维度之四大原则一致性、原子性(事务包含的操作要么完全失败回滚,要么完全成功)、隔离性(操作同一张表,数据库应该为每个用户开启一个事务,多个并发事务之间要相互隔离,在B事务看来,A事务是在它开启之前就已经关闭或者在它关闭以后才开启,数据库有多种隔离级别)、持久性(事务成功就是改完数据库,永远生效)。操作数据会遇到的问题当多个线程都开启事务操作的时候,数据库系统要进行事务隔离。如果不考虑事务隔离,...

2018-05-13 12:03:49 252

原创 MyBatis源码分析-MapperProxy

在MyBatis中,Mapper是一个接口,不是实体类。而在Java中,接口是无法运行的,所以MyBatis运用了动态代理模式来运行Mapper接口。关于动态代理,可以看这篇 深度解析JDK动态代理。MyBatis首先创建了一个MapperProxy类,实现了InvocationHandler接口。就相当于上篇文章的MyHandler类。由于动态代理只能代理有接口实现的类。需要传入要代理的接口,所...

2018-05-07 17:12:43 201

原创 深度解析JDK动态代理

动态代理模式,就是在内存中动态生成$Proxy0对象,该对象实现了要被代理对象的接口。如下图,$Proxy0就是在内存中生成的。1. 首先需要写一个class,实现InvocationHandler接口。重写invoke方法。invoke方法有3个参数:    1.第一个参数是Proxy的一个动态实例。只有Proxy实例在InvocationHandler实现类里加载才可以产生第二个参数metho...

2018-05-06 00:11:47 258

原创 MySql优化之路--执行器

    在日常应用中,基本都是读多写少。针对已经写好的sql语句。可以启动慢查询来看查询时间。    在查询sql的优化中,可以使用explain extended来看sql的运行效果。explian 是将    执行计划加载到表plan_table中,查询出来的是一条data.    也可以使用show waring来看执行器翻译后的sql.在explain中,    id表示查询顺序,如果有子...

2018-05-03 10:00:26 1959

原创 MySql优化之路

执行计划是数据库根据sql语句和相关表的统计信息得出的一个查询方案。这个计划是数据库查询优化器自动生成的。要生成一个正确的执行计划,需要注意两点:SQL语句是否正确的告诉了查询优化器它想干嘛。查询优化器得到的数据库信息是否是最新的。查询优化器创建内部数据结构(解析树),并对其优化,例如决定表的读取顺序。选择合适的索引(当数据表数据不大自动选择全表扫描,当数据表数据很大选择索引)。我们可以使用特殊关...

2018-05-02 17:26:59 268

原创 dubbo+zookeeper的简单例子

标准的框架模式:1.   将parent、model、common、service、service-impl、dao、dao-impl分开打包。将功能模块化。        其中parent只负责存放jar包,其他项目继承parent。        common         control依赖model与service。只需要在pom.xml中依赖即可。        service-imp...

2018-04-28 19:34:31 312

原创 spring解析

由于前期不涉及到Web应用,所以不需要配置web.xml.在src下创建xml(spring-beans.xml)文件。在xml文件中创建beans.1.    当需要调用的时候,使用[java] view plain copyApplicationContext ac=new ClassPathXmlApplicationContext("spring-beans.xml");         ...

2018-04-15 20:06:30 173

原创 高并发下缓存穿透原理

请求1      Niginx    应用1   (pool)连接池不会设置太大请求2 ---------->  应用2  --------------------------------> cache (主要是读操作)----> DB(硬盘)请求3                    应用3cache是减轻DB压力。放在应用服务器的内存中。查询是可以存在并发的,写数据是不能有...

2018-04-14 22:45:55 723

原创 MySql架构设计

在MySql中,当数据量大的时候,一般选择方案:1.    分库    (1)可以按照业务需求来垂直分库。2.    读写分离,    (1)可以将从库中分出一台来做特殊业务查询。例如供开发人员查询问题、报表查询等等。3.    分表    (1)最后使用,可以按照更细微的业务来分表。MySql读写分离实现机制方法:1.    基于程序实现 一般不用2.    基于MySql自带主从同步机制MyS...

2018-04-12 09:57:47 504

原创 深度解析Integer

深入解析Integer类型:    补全Swap方法,使a b两值交换。 public static void main(String[] args) { // TODO Auto-generated method stub Integer a=2; Integer b=2; swap(a,b); System.out.println("a value is " +a);...

2018-04-11 00:18:37 460

空空如也

空空如也

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

TA关注的人

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