分布式架构基础
文章平均质量分 88
分布式架构基础
@从入门到入土
学无止境
展开
-
Spring Cloud Netflix核心组件概述
目录概览EurekaRibbonHystrixFeignZuulSpringCloud ConfigSleuth概览SpringCloud Netflix 基于SpringBoot 对Netflix OSS进行了整合,使我们只需要通过注解和简单的配置便可以解决微服务间的治理工作。其核心主件有:Eureka:负责服务的注册与发现; Ribbon:负责客户端调用的负载均衡; Hystrix:负责服务之间远程调用时的容错保护; Feign:可以让我们通过定义.原创 2021-03-24 10:53:41 · 969 阅读 · 0 评论 -
分布式锁之Zookeeper实现
ZooKeeper 有四种节点类型:持久节点; 持久顺序节点; 临时节点; 临时顺序节。利用 ZooKeeper 支持临时顺序节点的特性,可以实现分布式锁。当客户端对某个方法加锁时,在 ZooKeeper 中该方法对应的指定节点目录下,生成一个唯一的临时有序节点。判断是否获取锁,只需要判断持有的节点是否是有序节点中序号最小的一个,当释放锁的时候,将这个临时节点删除即可,这种方式可以避免服务宕机导致的锁无法释放而产生的死锁问题。ZooKeeper 分布式锁流程:客户端连接 ZooK原创 2020-11-03 15:12:10 · 247 阅读 · 1 评论 -
分布式锁之Redis实现
分布式锁应具备的特性互斥性:互斥是锁的基本特征,同一时刻只能有一个线程持有锁,执行临界操作;超时释放:超时释放是锁的另一个必备特性,通过超时释放,防止不必要的线程等待和资源浪费;可重入性:在分布式环境下,同一个节点上的同一个线程如果获取了锁之后,再次请求还是可以成功;高性能和高可用:加锁和解锁的开销要尽可能的小,同时也需要保证高可用,防止分布式锁失效;支持阻塞和非阻塞性:对比 Java 语言中的 wait() 和 notify() 等操作,这个一般是在业务代码中实现,比如在获取锁时通过原创 2020-11-02 18:08:54 · 263 阅读 · 0 评论 -
缓存七大经典问题
一、缓存失效问题描述一次性缓存大量数据,设置了相同过期时间,同时失效。解决方案即相同业务数据写缓存时,在基础过期时间之上,再加一个随机的过期时间,让数据在未来一段时间内慢慢过期,避免瞬时全部过期,对DB造成过大压力。过期时间 = base 时间 + 随机时间二、缓存穿透问题描述有特殊访客在查询一个不存在的key,导致每次查询都会穿透到DB。解决方案1、查询这些不存在的数据时,第一次查DB,虽然没查到结果返回NULL,仍然记录这个key到缓存,只是这个...原创 2020-05-17 11:16:45 · 550 阅读 · 0 评论 -
微信朋友圈设计原理
转自:http://www.woshipm.com/pd/2701264.html当你一秒钟拍了张自拍,一个小时修了下图,然后打开朋友圈,点击发送的那一刻,后台到底有多少工作在进行着?我们太习以为常,没有意识到这背后还会有多复杂的逻辑。为什么每天几十亿量级的朋友圈发布量,都没有让微信崩溃过?我看了朋友圈负责人陈明的演讲,他分享了微信的架构,数据结构设计等。演讲很好看,很实在,但有的时候...转载 2020-03-28 22:56:19 · 6705 阅读 · 18 评论 -
秒杀系统设计原则
秒杀活动的特点1、持续时间短,但访问冲击量大;2、业务的请求量远远大于售卖量,大部分是最终无法购买成功的请求;3、秒杀往往价格便宜,因此各种非法作弊手段层出。设计原则1、尽力将请求拦截在系统上游,如验证码等; 2、商品信息设计成静态页,保存在CDN或代理服务器; 3、开始前,按钮置灰,抢购一次后按钮置灰,避免重复提交; 4、秒杀系统独立部署,负载均衡,避免单点...原创 2020-02-12 00:32:38 · 314 阅读 · 0 评论 -
缓存的三种读写方式
结合业务场景,缓存的读写方式可以分为以下三种模式: Cache Aside(旁路缓存) Read/Write Through(读写穿透) Write Behind Caching(异步缓存写入) Cache Aside查询:应用程序先去cache中读取数据,如果可以命中,则直接返回;如果没有命中,则去数据库中查询,成功后存入缓存。 更新:应用程序先去更新数据库...原创 2020-02-10 17:07:28 · 3440 阅读 · 5 评论 -
消息队列简介
什么是消息队列(Message Queue)?消息队列,又叫做消息中间件。是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。MQ的几个主要特点是一个独立运行的服务。生产者发送消息,消费者接收消费,需要先跟服务器建立连接。 采用队列作为数据结构,有先进先出的特点。 具有发布订阅...原创 2019-08-26 16:33:23 · 2115 阅读 · 0 评论 -
高并发场景下的限流策略
目录缓存降级限流漏桶算法令牌桶算法漏桶算法与令牌桶算法的区别缓存有效提升热点数据的访问效率,在高并发、大流量的场景降低服务端压力。降级当访问量快速增长、服务可能会出现一些问题(响应超时),或者会存在非核心服务影响到核心流程的性能时, 仍然需要保证服务的可用性,即便是有损服务。所以意味着我们在设计服务的时候,需要一些手段或者关键数据进行自动降级,或者配置...原创 2018-10-23 22:59:10 · 2033 阅读 · 0 评论 -
分布式事务简介
目录为什么会有分布式事务?CAP理论XA协议XA角色XA原理2pc提交(two -phaseCommit)3pcTCCTCC与XA区别基于消息队列的最终一致性方案为什么会有分布式事务?当我们的单个数据库的性能产生瓶颈的时候,我们可能会对数据库进行分区,分区之后可能不同的库就处于不同的服务器上了,这个时候单个数据库的ACID已经不能适应这种集群...原创 2018-10-22 22:52:22 · 6546 阅读 · 3 评论 -
Dubbo入门简介
Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简而言之,dubbo是一个用于远程服务调用的分布式框架,适用于分布式架构中。主要核心包括:一. 远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。二. 集群容错:提供基于接口方法的透明远...原创 2018-10-08 22:37:05 · 240 阅读 · 0 评论 -
zookeeper简介
目录zookeeper是什么?集群角色LeaderFollowerObserver集群组成ZAB协议Leader选举zookeeper是什么?zookeeper 是一个开源的分布式协调服务,由雅虎公司创建,是google chubby 的开源实现。zookeeper 是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,...原创 2018-10-07 18:16:59 · 1776 阅读 · 0 评论 -
序列化与反序列化
目录序列化的意义序列化面临的挑战基于JDK 序列化方式实现序列化的高阶认识serialVersionUID 的作用静态变量序列化父类的序列化Transient 关键字常见的序列化技术JAVA序列化框架XML 序列化框架JSON 序列化框架Hessian 序列化框架Protobuf 序列化框架序列化技术的选型序列化的意义Java ...原创 2018-10-06 21:44:30 · 6847 阅读 · 2 评论 -
TCP协议
目录一个http请求在整个网络中的请求过程什么是协议?什么是IP 协议?IP 层与MAC 层的区别?TCP/IPUDP/IPTCP 是如何做到可靠传输的?三次握手建立连接四次挥手断开连接为什么连接的时候是三次握手,关闭的时候却是四次挥手?数据传输过程的流量控制和确认机制滑动窗口协议一个http请求在整个网络中的请求过程当应用程序用TCP...原创 2018-10-04 00:07:45 · 1030 阅读 · 0 评论 -
HTTP协议
目录什么是HTTP协议?协议组成MethodHTTP响应状态码HTTP响应模型HTTP 协议的特点HTTP 协议的缺陷什么是HTTP协议?http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。协议组成HTTP协议请求由状态行、请求头、请求正文三部分组成:状态行:包括请求方...原创 2018-10-05 21:26:12 · 2265 阅读 · 0 评论 -
HTTPS协议
HTTPS 简介由于HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,就想出来对传输通道进行加密的方式https。https 是一种加密的超文本传输协议,它与HTTP 在协议差异在于对数据传输的过程中,https 对数据做了完全加密。由于http 协议或者https协议都是处于TCP 传输层之上,同时网络协议又是一个分层的结构,所以在tcp 协议层之上增加了...原创 2018-10-05 23:02:25 · 1072 阅读 · 0 评论