自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高可用缓存设计

缓存回收策略:1.基于空间,比如10M2.TTL,比如设置过期时间,惰性删除3.TTI,多久没被访问后删除4.弱引用(强软弱虚)回收算法FIFO,LRU(掌握原理,链表+哈希),LFUJava缓存类型1.堆缓存(guava)优点:没有序列化与反序列化,最快缺点:受堆内存大小限制,不能设置太大,会影响GC2.堆外缓存(Ehcache)优点:堆外对象不会影响GC缺点:需要序列化反序列化,比堆缓存慢3.磁盘缓存优点:数据持久化缺点:比较慢4.分布式缓存优点:容量大缺点:需要引

2022-04-07 20:50:28 267

原创 @ScedulerLock踩坑

背景:我们需要做一个分布式定时任务,定时给用户发短信,设计思路是用@SchedulerLock做分布式定时任务,任务是从每次从数据库查询1000条用户数据,并异步发送短信,发送完成后在数据库里记录发送信息,@Schedule配置为@Scheduled(cron = “0/5 0/1 10-17 * * ?”),@SchedulerLock配置为 @SchedulerLock(name = SCHEDULE_MODEL_NAME + “ticketRemind”, lockAtLeastFor = “PT5S

2022-03-15 17:46:14 2579

原创 降级,超时重试,回滚

降级目的:保证核心系统可用常用降级:1.服务功能降级(如评论区,热销榜)2.读降级3.写降级(将db降级为cache,只写cache,之后再同步回db)4.爬虫降级5.风控降级(薅羊毛用户)降级指标1.超时降级2.统计失败次数降级3.故障降级4.限流降级(达到阈值时)读服务降级:接入层缓存,应用层缓存,分布式缓存,rpc服务/db写服务降级:写db降级为写缓存,同时异步发送一条写db的消息,保证最终一致性,但是消息队列也会成为瓶颈,可以写消息到本地日志,最后再同步回db,这种

2022-03-09 22:21:10 331

原创 隔离与限流

二.隔离隔离:是指将系统或者资源分隔开隔离的好处:当系统发生故障时,能限定故障的传播范围,只影响出问题的服务,其次,可以通过隔离减少服务间的资源竞争,互不影响可用性常用隔离手段:线程隔离,进程隔离,集群隔离,机房隔离,读写隔离,快慢隔离,动静隔离,爬虫隔离1.线程隔离:不同的请求应该用不同的线程池隔离,当某种业务请求量突然暴增时,业务线程也只会打满自己的业务线程池,不会影响其他业务,可以将耗时比较大的,或者核心业务单独放一个线程池,其他的再放另一个线程池2.进程隔离:不同的业务系统应该隔离,比如推

2022-02-27 21:40:09 584

原创 负载均衡,反向代理

一.负载均衡,反向代理(Nginx)负载均衡:解决用户请求到来时时如何选择处理请求的服务器负载均衡算法:1.轮询(服务器处理能力差不多),加权轮询(服务器处理能力不同)2.ip_hash,hash_key,注意该方法的问题是当扩容或者缩容时,会导致大量的请求重新负载均衡到不同的服务器,可以考虑一致性哈希,这样扩容或者缩容的时候只会影响原有的一台服务器上的请求3.最小活跃连接 目前比较常用的是轮询,毕竟容器化部署,服务器性能都差不多,在服务内存中分布式缓存业务数据的场景,可以用一致性哈希反

2022-02-27 21:38:54 2020

原创 项目总结

1.出问题了先看配置文件是否正确2.对于读请求比较多的业务,可以把数据保存在内存里,读取速度更快,注意把数据保存在内存里的操作要在项目启动时做,并且要设置定时器定时更新内存数据3.对于同时调用两个接口执行同一个功能,但只返回一个结果的,用异步提升性能4.对于远程调用的方法,要写try catch...

2019-05-24 10:44:02 135

原创 Dubbo相关

Dubbo是什么Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案Dubbo解决什么问题负载均衡帮助架构师理清服务调用先后关系统计服务调用量,响应时间并动态调整权值Dubbo架构服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册...

2019-05-16 15:47:59 339

原创 中间件相关

这里写自定义目录标题中间件是什么常用中间件中间件是什么中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。我们不用再担心应用是运行在linu...

2019-05-15 11:39:07 313

转载 分布式相关

分布式为什么需要消息队列https://blog.csdn.net/mrs_haining/article/details/80625833

2019-05-15 11:38:34 147

转载 分布式与集群

https://blog.csdn.net/jiangyu1013/article/details/80417961简单来说分布式:一个业务拆分为多个子业务,部署在多个服务器上 。集群:同一个业务,部署在多个服务器上 。...

2019-05-15 10:31:16 117

转载 Java相关

http://www.importnew.com/21889.html

2018-08-23 10:12:06 151

转载 JVM

jvm常用参数 https://www.cnblogs.com/f-zhao/p/6159709.html?utm_source=itdadao&utm_medium=referral

2018-08-18 15:13:03 92

转载 数据库

jdbc连接数据库底层原理 https://blog.csdn.net/weixin_40728293/article/details/80522245

2018-08-18 15:12:18 152

转载 计算机网络

Http状态码 http://www.runoob.com/http/http-status-codes.html

2018-08-18 14:29:04 98

转载 一些算法

生产者消费者模型 https://www.cnblogs.com/Ming8006/p/7243858.htmlLRU实现 https://www.cnblogs.com/lzrabbit/p/3734850.html

2018-08-17 17:44:51 90

转载 AVL树,红黑树,B树与B+树

总体对比: https://blog.csdn.net/whoamiyang/article/details/51926985AVL树https://www.cnblogs.com/skywang12345/p/3576969.html最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的查找、...

2018-08-15 11:10:08 8465 2

转载 操作系统

进程的通信方式: https://blog.csdn.net/wh_sjc/article/details/70283843 线程与进程的区别: https://blog.csdn.net/weixin_39430694/article/details/78518080

2018-08-15 11:00:57 85

转载 Redis

redis基础教程: http://www.runoob.com/redis/redis-tutorial.html 数据结构: String key value Hash key filed value 适合用于存储对象。 List key value 支持阻塞操作,可用于异步队列 Set key member 无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 So...

2018-08-15 11:00:28 125

转载 Spring AOP

http://www.cnblogs.com/hongwz/p/5764917.html是什么? AOP(Aspect Oriented Programming),即面向切面编程AOP技术,它利用一种称为”横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为”Aspect”,即切面。所谓”切面”,简单说就是那些与业务无关,却为业务模块所共同...

2018-08-15 10:58:18 90

转载 Spring IOC

是什么 https://www.cnblogs.com/yxh1008/p/6012230.html Ioc—Inversion of Control,即“控制反转” 控制:传统Java程序,对象的获取权由接口调用类获取,而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建。 反转:反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反...

2018-08-15 10:53:53 131

空空如也

空空如也

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

TA关注的人

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