java高级-分布式系统
小米加大炮
天生我材必有用,千金散尽还复来!
展开
-
分布式运用(一) redis分布式锁的实现方法
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。一、可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1)互斥性。在任意时刻,只有一个客户端能持有锁。2)不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3)具有容错性。只要大部分的R...原创 2018-08-24 14:41:42 · 282 阅读 · 0 评论 -
学习分布式事务(一)
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务各方面与大家进行介绍。一. 事务1.1 什么是事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性:...转载 2018-07-03 15:30:21 · 300 阅读 · 2 评论 -
学习分布式事务(二)
前言分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。 一、数据库事务 在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到。但是即使如此,可能对于一些细节问题,很多人仍然不清楚。比如很多人都知道数据库事务的几个特性:...转载 2018-07-05 16:23:28 · 375 阅读 · 0 评论 -
学习分布式事务(三)
在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率.在说微服务的优缺点时,有对比才会更加明显,首先说一下单体式结构单体式架构在单体式架构中,系统通常采用分层架构模式(MVC),持久化层、表示层,业务逻辑层。架构主要存在以下问题:系统内部互相访问,耦合紧密导致难以维护; 各业务领域需要采用相同的技术...转载 2018-07-24 17:40:35 · 239 阅读 · 0 评论 -
学习分布式事务(四)
一、例子你上Taobao买东西,需要先扣钱,然后商品库存-1吧。但扣款和库存分别属于两个服务,这两个服务中间要经过网络、网关、主机等一系列中间层,万一任何一个地方出了问题,比如网络抖动、突发异常等待,都会导致不一致,比如扣款成功了,但是库存没-1,就会出现超卖的现象,而这就是分布式事务需要解决的问题?二、解决方案2.1 2阶段提交 2阶段提交是分布式事务传统解决方案,先进为止...转载 2018-07-24 18:09:16 · 345 阅读 · 0 评论 -
高性能开发(1) Redis缓存主从配置详解
一、前言 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各...原创 2017-03-09 15:31:20 · 515 阅读 · 0 评论 -
高性能开发(2) Redis缓存实现分布式session共享(一)
在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及tomca中session的管理机制。 一、Tomcat session管理机制1.1 请求过程中的session操作:在请求过程中首先要解析请求中的sessionid信息,然后将...转载 2017-03-09 17:09:16 · 1922 阅读 · 0 评论 -
高性能开发(3) 处理Zookeeper的session过期问题
一、Session连接Zookeeper客户端和服务端维持一个长连接,定期时间(如:每隔10s,多久向Zookeeper Server发送心跳和设置的Session有关)向服务端发送一个心跳,服务端返回客户端一个响应。这就是一个Session连接,拥有全局唯一的session id。Session连接通常是一直有效,如果因为网络原因断开了连接,客户端会使用相同的session id进行...转载 2017-06-01 09:31:34 · 3122 阅读 · 0 评论 -
高性能开发(4) Redis缓存哨兵模式配置
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵(Sentinel)模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监...转载 2019-10-10 22:35:44 · 318 阅读 · 0 评论