自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(7)
  • 收藏
  • 关注

原创 Hystrix断路器原理

Hystrix 简介:服务降级和熔断 产生背景: 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。 雪崩效应常见场景 硬件故障:如服务器宕机,机房断电,光纤被挖断等。 流量激增:如异常流量,重试加大流量等。 缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失

2020-07-11 06:31:06 250

原创 CPU过高及OOM

CPU过高 1.先用top命令,找到cpu占用最高的进程 PID 2.再用ps -mp pid -o THREAD,tid,time 查询进程中,那个线程的cpu占用率高 记住TID 3.jstack 29099 >> xxx.log 打印出该进程下线程日志 4.sz xxx.log 将日志文件下载到本地 5.将查找到的 线程占用最高的 tid 上上上图中 29108 转成16进制 — 71b4 6.打开下载好的 xxx.log 通过 查找方式 找到 对应线程 进行排查 原因:

2020-07-11 05:53:44 569

原创 java中锁的种类及用法

java锁 种类 1 乐观锁,悲观锁 线程是否需要锁住同步资源 实现方法:synchronized 悲观锁 乐观锁:AtomicInteger,通常实现要用到CAS算法比较并替换 (***CAS 即比较并替换,实现并发算法时常用到的一种技术。CAS操作包含三个操作数——内存位置、预期原值及新值。执行CAS操作的时候,将内存位置的值与预期原值比较,如果相匹配,那么处理器会自动将该位置值更新为新值,否则,处理器不做任何操作。*) 2 读锁,写锁 锁住同步资源失败,线程是否阻塞 接口ReadWriteLock

2020-06-02 16:29:47 295

原创 Feign实例化和请求调用-源码分析

Feign初始化 在需要使用Feign的接口**(必须是接口)**上添加注解@FeignClient 并且在启动类main中添加@EnableFeignClients,springBoot启动时会扫描并将Feign的注册信息加入到IOC中,具体代码 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import(FeignClientsRegistrar.class) public @interface En

2020-06-02 11:32:00 835

原创 Eureka客户端源代码启动流程(springboot)

EurekaAutoServiceRegistration实现了SmartLifecycle接口,所以spring会自动加载start方法,代码: @Override public void start() { // only set the port if the nonSecurePort or securePort is 0 and this.port != 0 if (this.port.get() != 0) { if (this.registration.getNonSecure

2020-06-01 13:45:25 494

原创 Eureka源码手撕分析启动流程(服务端)

从注解@EnableEurekaServer开始 ##该注解包含了如下内容 其中@Import(EurekaServerMarkerConfiguration.class) 现在怎么下手,上面的代码已经结束了。。。 经过查找资料发现入口 在jar\spring-cloud-netflix-eureka-server-2.2.2.RELEASE.jar的MANIFEST.MF文件夹下的spring.factories定义了bean实体对象springboot启动时会去实例化该类 org.springfra

2020-06-01 11:17:51 294

原创 手撕SpringBoot源码启动流程分析

main函数开始 run方法 最终的执行代码块如下: 其中最重要的2块 setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); 上面的方法会去**\spring-boot-autoconfigure-2.3.0.RELEASE.jar**包中寻找spring.factories文件,该文件定义了springboot自动装配需要的所有的bean 然后通过反射实例化bean

2020-05-29 19:25:43 211

空空如也

空空如也

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

TA关注的人

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