![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构设计
挖坑埋你
这个作者很懒,什么都没留下…
展开
-
架构设计 | 幂等性
什么是幂等性抄用一段数学上的定义:f(f(x)) = f(x)。x被函数f作用一次和作用无限次的结果是一样的。幂等性应用在软件系统中,我把它简单定义为:某个函数或者某个接口使用相同参数调用一次或者无限次,其造成的后果是一样的,在实际应用中一般针对于接口进行幂等性设计。举个栗子,在系统中,调用方A调用系统B的接口进行用户的扣费操作时,由于网络不稳定,A重试了N次该请求,那么不管B是否接收到多少次转载 2018-01-07 10:03:08 · 899 阅读 · 0 评论 -
架构设计 | 单点登录(SSO),从原理到实现
一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,...转载 2018-09-13 15:04:43 · 19913 阅读 · 0 评论 -
架构设计 | Session一致性架构设计实践(分布式Session)
我们知道HTTP协议本身是无状态的,因此在使用HTTP协议进行通信的过程中,需要借助Session机制进行状态的保持。然而在大型网站中,我们的服务器数量通常不止一台,可能是几十台甚至几百台之多,用户发起的HTTP请求通常要经过像Ngnix之类的负载均衡器之后,再路由到具体的服务器上,由于Session默认是存储在单机服务器内存中的,因此在分布式环境下同一个用户发送的多次HTTP请求可能会先后...原创 2018-09-13 10:38:01 · 313 阅读 · 0 评论 -
踩坑案例 | 一分钱引发的系统设计“踩坑”案例
阿里巴巴的电商业务十分复杂,一方面是市场多样化,业务多样化,另外是消费者,商家的影响面非常广,任何一个小故障都可能引发一些社会问题,所以阿里对产品的质量,对服务的连续性有严格的要求。阿里技术人员在日常的研发运维过程中,积累了丰富的实战经验。今天,为大家分享一个关于故障,排查,分析和改进的真实案例。他山之石可以攻玉,希望对广大开发和运维工程师带来帮助。背景说明某日,做产品X的...转载 2018-09-13 09:59:10 · 297 阅读 · 0 评论 -
Java 多线程系列:JDK1.6.0_45
原文出处:http://www.cnblogs.com/skywang12345/p/java_threads_category.html(一) 基础篇Java多线程系列–“基础篇”01之 基本概念Java多线程系列–“基础篇”02之 常用的实现多线程的两种方式Java多线程系列–“基础篇”03之 Thread中start()和run()的区别Java多线程系列–“基础篇”...原创 2018-08-10 09:45:05 · 637 阅读 · 0 评论 -
LVS 文章索引
LVS | LVS 的三种工作方式(NAT原理)(一) LVS | LVS 的三种工作方式(DR原理)(二) LVS | LVS 的三种工作方式(TUN原理)(三)LVS | LVS 负载均衡之工作原理说明(NAT模式) LVS | LVS 负载均衡之工作原理说明(DR模式) LVS | LVS 负载均衡之工作原理说明(TUN模式)LVS | LVS-DR 模式安装 LVS | ...原创 2018-08-10 09:26:32 · 391 阅读 · 0 评论 -
架构设计 | 高并发的核心技术-幂等的实现方案
一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。...转载 2018-08-01 09:51:11 · 481 阅读 · 0 评论 -
架构设计 文章索引
谈谈服务限流算法的几种实现分布式之延时任务方案解析缓存穿透,缓存击穿,缓存雪崩解决方案分析幂等性架构 细聊分布式ID生成方法架构 秒杀系统优化思路Java中的锁...原创 2018-07-31 15:26:44 · 205 阅读 · 0 评论 -
博客文章目录
JDK 8 新特性 文章索引原创 2018-07-31 15:09:17 · 1526 阅读 · 1 评论 -
架构设计 | 谈谈服务限流算法的几种实现
保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。为什么需要限流按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事);因为某个热点事件(微...转载 2018-07-31 15:08:18 · 2018 阅读 · 0 评论 -
架构设计 | 分布式之延时任务方案解析
在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消;生成订单60秒后,给用户发短信。对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别:定时任务有明确的触发时间,延时任务没有;定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期;...转载 2018-07-21 16:44:19 · 1114 阅读 · 0 评论 -
架构设计 | 缓存穿透,缓存击穿,缓存雪崩解决方案分析
一、缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的 key 频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在...转载 2018-07-14 12:53:08 · 332 阅读 · 0 评论 -
JDK 8 新特性 文章索引
JDK 8 新特性 | Lambda 表达式 JDK 8 新特性 | 函数式接口 JDK 8 新特性 | 方法引用、构造器引用和数组引用 JDK 8 新特性 | 强大的 Stream API JDK 8 新特性 | 对 Fork/Join 的优化 JDK 8 新特性 | 接口中的默认方法与静态方法 JDK 8 新特性 | Optional 类 JDK 8 新特性 | 重复注解与类型注...原创 2018-07-25 09:10:22 · 445 阅读 · 0 评论 -
中小企业对Spring Cloud微服务架构实践经验总结的一些思考!
Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多。在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到最后全面拥抱 Spring Cloud。这篇文章给大家介绍我们使用 Spring Boot / Cloud 一年多的经验总结。...转载 2018-06-22 10:11:05 · 604 阅读 · 0 评论 -
Java中的锁
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来一次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效原创 2018-01-06 13:40:02 · 338 阅读 · 0 评论 -
架构 细聊分布式ID生成方法
一、需求缘起几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如:(1)拉取最新的一页消息:selectmessag...转载 2018-03-26 19:50:39 · 309 阅读 · 0 评论 -
秒杀系统优化思路
一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。 又例如:12306抢票,票是有限的,库存一份,瞬时流量...转载 2018-03-26 17:27:05 · 399 阅读 · 0 评论 -
架构设计 | 线上防雪崩利器—熔断器设计原理与实现
上周六,我负责的业务在凌晨00-04点的支付全部失败了。结果一查,MD,晚上银行维护,下游支付系统没有挂维护公告,在此期间一直请求维护中的银行,当然所有返回就是失败了,有种欲哭无泪的感觉,锅让业务来背。为了杜绝在此出现这种大面积批量的支付失败情况发生,保障系统的健壮性。我需要个在集中性异常的时候可以终止请求,当服务恢复,恢复请求。我想了一些方式,最后,觉得熔断器比较适合干这种事情。状态模式...转载 2018-09-26 13:47:46 · 1489 阅读 · 2 评论