自定义博客皮肤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 262

原创 CPU过高及OOM

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

2020-07-11 05:53:44 600

原创 java中锁的种类及用法

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

2020-06-02 16:29:47 305

原创 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 859

原创 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 520

原创 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 315

原创 手撕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 231

空空如也

空空如也

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

TA关注的人

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