![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式技术
江湖上最后一块奶酪
华太师家的专注的迷失小书童
展开
-
分布式专题(一):分布式系统的一些基本概念
1、分布式小明的公司又3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。将不同的业务分部在不同的地方,就构成了一个分布式的系统,现在问题来了,系统A是整个分布式系统的脸面,用户直接访问,用户访问量大的时候要么是速度巨慢,要么直接挂掉,怎么办?由于系统A只有一份,所以会引起...转载 2019-06-20 16:44:50 · 1174 阅读 · 0 评论 -
分布式专题(十三):缓存的那些事
缓存和它的那些淘汰算法们为什么我们需要缓存?很久很久以前,在还没有缓存的时候……用户经常是去请求一个对象,而这个对象是从数据库去取,然后,这个对象变得越来越大,这个用户每次的请求时间也越来越长了,这也把数据库弄得很痛苦,他无时不刻不在工作。所以,这个事情就把用户和数据库弄得很生气,接着就有可能发生下面两件事情:1.用户很烦,在抱怨,甚至不去用这个应用了(这是大多数情况下都...转载 2019-06-21 09:09:34 · 259 阅读 · 0 评论 -
分布式专题(十四):Spring Boot使用注解集成Redis缓存
为了提高性能,减少数据库的压力,使用缓存是非常好的手段之一。本文,讲解 Spring Boot 如何集成缓存管理。Spring注解缓存Spring 3.1之后,引入了注解缓存技术,其本质上不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中添加少量自定义的各种annotation,即能够达到使用缓存对象和缓存方法的返回对象的效果。Spring的缓存技术具...转载 2019-06-21 09:11:24 · 141 阅读 · 0 评论 -
分布式专题(十五):缓存更新的套路
缓存更新的套路看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。...转载 2019-06-21 09:12:24 · 108 阅读 · 0 评论 -
分布式专题(十六):浅谈分布式锁的几种方案
前言随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,在这种情况下,我们就需要用到分布式锁。分布式一致性问题首先我们先来看一个小例子:假设某商城有一个商品库存剩10个,用户A想要买6个,...转载 2019-06-21 09:14:04 · 134 阅读 · 0 评论 -
分布式专题(十七):浅析分布式事务
众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本...转载 2019-06-21 09:15:57 · 213 阅读 · 0 评论 -
分布式专题(十八):分布式事务常用解决方案
分布式事务的解决方案分布式事务的解决方案有如下几种:全局消息基于可靠消息服务的分布式事务TCC最大努力通知方案1:全局事务(DTP模型)全局事务基于DTP模型实现。DTP是由X/Open组织提出的一种分布式事务模型——X/Open Distributed Transaction Processing Reference Model。它规定了要实现分布式事务,需要三种角色:...转载 2019-06-21 09:17:00 · 170 阅读 · 0 评论 -
分布式专题(十九):使用RocketMQ事务消息解决分布式事务
初步认识RocketMQ的核心模块rocketmq模块rocketmq-broker:接受生产者发来的消息并存储(通过调用rocketmq-store),消费者从这里取得消息。rocketmq-client:提供发送、接受消息的客户端API。rocketmq-namesrv:NameServer,类似于Zookeeper,这里保存着消息的TopicName,队列等运行时的...转载 2019-06-21 09:17:59 · 207 阅读 · 0 评论 -
分布式专题(二十):消息队列因何而生
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计...转载 2019-06-21 09:40:11 · 210 阅读 · 0 评论 -
分布式专题(十二):分布式ID生成方案
一、需求缘起几乎所有的业务系统,都有生成一个唯一记录标识的需求,例如: 消息标识:message-id 订单标识:order-id 帖子标识:tiezi-id 这个记录标识往往就是数据库中的主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如: 拉取最新的一页...转载 2019-06-21 08:51:17 · 151 阅读 · 0 评论 -
分布式专题(十一):分布式session解决方案与一致性hash
session一致性架构设计实践原创: 58沈剑 架构师之路 2017-05-18一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,...转载 2019-06-21 08:50:46 · 124 阅读 · 0 评论 -
分布式专题(十):LVS实现负载均衡的原理与实践
浅析负载均衡及LVS实现原创: fireflyc 写程序的康德 2017-09-19负载均衡负载均衡(Load Balance,缩写LB)是一种网络技术,它在多个备选资源中做资源分配,以达到选择最优。这里有三个关键字: 网络技术,LB要解决的问题本质上是网络的问题,所以它实际上就是通过修改数据包中MAC地址、IP地址字段来实现数据包的“中转”; 资源,这里的资源不...转载 2019-06-20 17:02:25 · 278 阅读 · 0 评论 -
分布式专题(二):分布式一致性协议与Paxos,Raft算法
由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议。其中比较著名的有二阶提交协议(2 Phase Commitment Protocol),三阶提交协议(3 Phase Commitment Protocol)和Paxos算法。本文要介绍的2PC协议,分为两个阶段提交一个事务。并通过协调者和各个参与者的配合,实现分布式一致性。两个阶段事务提交协议,由协...转载 2019-06-20 16:49:07 · 191 阅读 · 0 评论 -
分布式专题(三):初探分布式协调服务zookeeper
1.Zookeepr是什么Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知。集群管理,Master选举,分布式锁和分布式队列等功能。2.zookeeper可以保证的分布式一致性a.顺序一致性从一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到zookeeper中去b.原子性...转载 2019-06-20 16:50:26 · 224 阅读 · 0 评论 -
分布式专题(四):ZAB协议概述与选主流程详解
ZAB协议 ZAB(Zookeeper Atomic Broadcast)协议是专门为zookeeper实现分布式协调功能而设计。zookeeper主要是根据ZAB协议是实现分布式系统数据一致性。 zookeeper根据ZAB协议建立了主备模型完成zookeeper集群中数据的同步。这里所说的主备系统架构模型是指,在zookeeper集群中,只有一台leader负责处理外部客户端的...转载 2019-06-20 16:51:56 · 243 阅读 · 0 评论 -
分布式专题(五):Zookeeper的配置与集群管理实战
4.1 配置文件ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooKeeper配置文件的模板。ZooKeeper启动时,会默认加载“conf/zoo.cfg”作为配置文件,所以需要将“zoo_sample.cfg”复制一份,命名为“zoo.cfg”,然后根据需要设定里面的配置项。配置项很简单,说明如下:tick...转载 2019-06-20 16:53:30 · 122 阅读 · 0 评论 -
分布式专题(六):Zookeeper典型应用场景及实践
一.ZooKeeper典型应用场景实践ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将介绍比较常用的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。值得注意的是,ZK并非天生就是为这些应用场景设计...转载 2019-06-20 16:54:33 · 272 阅读 · 0 评论 -
分布式专题(七):负载均衡概念与主流方案
负载均衡的原理原创: 刘欣 码农翻身 4月23日这是1998年一个普通的上午。一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:“大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? ”还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说: “唉,我昨天检查了一下系统,现在的访问量已经越来越大了,无论是CPU,还是硬盘、内存都不堪重负了,高峰期的响应速度越来越慢。”...转载 2019-06-20 16:57:12 · 471 阅读 · 0 评论 -
分布式专题(八):负载均衡原理剖析
负载均衡的重要性无需多说,今天带来:负载均衡原理的解析。开头先理解一下所谓的“均衡”。不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。一、http重定向当http代理(比如浏览器)向web服务器请求...转载 2019-06-20 16:58:37 · 135 阅读 · 0 评论 -
分布式专题(九):Nginx负载均衡原理与实践
本篇摘自《亿级流量网站架构核心技术》第二章 Nginx负载均衡与反向代理 部分内容。当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如的方式访问,在请求时,浏览器首先会查询DNS服务器获取对应的IP,然后通过此IP访问对应的服务。因此,一种方式是域名映射多个IP,但是,存在一个最简单的问题,假设某台服务器重启或者出现故障,...转载 2019-06-20 17:00:29 · 158 阅读 · 0 评论 -
分布式专题(二十一):浅谈分布式消息技术 Kafka
本文主要介绍了这几部分内容:1基本介绍和架构概览2kafka事务传输的特点3kafka的消息存储格式:topic和parition4副本(replication)策略:主从broker部署和partition备份,以及选主机制5kafka消息分组,通过comsumergroup实现主体订阅6push和pull的区别,顺序写入和消息读取,零拷贝机制Kafka的基本介绍Kafka是最初由Linkedi...转载 2019-07-04 16:56:12 · 157 阅读 · 0 评论