25 分布式
未名who
不是在学习,就是在学习的路上。。。
展开
-
分布式系统理论基础 - 一致性、2PC和3PC
引言狭义的分布式系统指由网络连接的计算机系统,每个节点独立地承担计算或存储任务,节点间通过网络协同工作。广义的分布式系统是一个相对的概念,正如Leslie Lamport所说[1]:What is a distributed systeme. Distribution is in the eye of the beholder.To the user sitting at the keyboard...转载 2018-02-28 11:12:56 · 156 阅读 · 0 评论 -
使用ZooKeeper作为SpringCloud的配置中心(支持zookeeper的观点)
为什么要使用配置中心? 项目中常用的一些配置,例如数据库的配置等,一般都是直接写死在项目中。如若更改,简单暴力的办法就是修改配置文件后再上传。单个或小型分布式项目部署的微服务所需的配置都很少,但集群若有上百台或者更多的机器,一个个地修改可就不那么好办了,因此使用配置中心作统一的配置管理是非常有必要的。 在SpringCloud项目中,官方推荐使用SpringCloud Conf...转载 2018-07-29 03:32:48 · 13434 阅读 · 4 评论 -
mysql乐观锁总结和实践(分布式锁二)
上一篇文章《MySQL悲观锁总结和实践》谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有了乐观锁,具体参见下面介绍:...转载 2018-08-22 10:20:36 · 1166 阅读 · 0 评论 -
分布式锁的设计:数据库锁表、redis、zookeeper(分布式锁三)
起因前段时间,看到redis作者发布的一篇文章《Is Redlock safe?》,Redlock是redis作者基于redis设计的分布式锁的算法。文章起因是有一位分布式的专家写了一篇文章《How to do distributed locking》,质疑Redlock的正确性。redis作者则在《Is Redlock safe?》文章中给予回应,一来一回甚是精彩。文本就为读者一一解析两位专...转载 2018-08-22 13:02:31 · 905 阅读 · 0 评论 -
公有云和私有云的区别
在现在云计算大行其道的时候,许多的企业都将自己的数据信息进行云迁移。但是面对种类繁多的云服务,企业应该如何选择适合自己的业务呢?首先我们要了解什么是云计算,云计算有几种模式,各种模式的架构原理。什么是云计算 云计算将计算作为一种服务交付给用户而不是一种产品,在这种服务中,计算资源、软件和信息如同日常的水、电一样通过互联网交付给计算机和其他的计算媒介。云计算的三种模式...转载 2018-08-22 17:06:35 · 1171 阅读 · 0 评论 -
分布式事务的一种解决思路(分布式事务一)
昨晚某技术群里大家热火的在讨论分布式事务的问题,想起了自己前几年由于技术太渣也犯过很多相关错误,现结合自己之前一次BUG案例由感而写此文,希望对看到文章的同学们多少有些帮助(如果发现错误之处,欢迎交流)。 一个注册业务,用户注册成功后,后台调用另外一个服务同步完成开通资金账户,后来加了一个需求同时还要把注册用户数据同步到另一个业务系统中。真实情况逻辑更复杂,现在简化方便描述后相关伪代...转载 2018-08-23 15:55:39 · 745 阅读 · 1 评论 -
如何保障微服务架构下的数据一致性?(分布式事务二)
写在前面随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台。就像前边的文章说的,微服务架构为业务开发带来了诸多好处的同时,例如单一职责、独立开发部署、功能复用和系统容错等等,也带来一些问题。例如上手难度变大,运维变得更复杂,模块之间的依赖关系更复杂,数据一致性难以保证,等等。但是办法总是比问题多,本篇文章就来介绍一下我们是如何保障微服务架构的数据一致性的。1、微服务...转载 2018-08-24 16:39:00 · 443 阅读 · 0 评论 -
mysql(for update)悲观锁总结与实践(分布式锁一)
悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 使用场景举例:以MySQL InnoDB为例, 商品goods...转载 2018-08-21 22:22:46 · 2437 阅读 · 0 评论 -
分布式锁的作用及实现(Redis)
一、什么是分布式锁?要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多个...转载 2019-01-09 13:49:41 · 445 阅读 · 1 评论 -
为什么不应该使用ZooKeeper做服务发现
【编者的话】本文作者通过ZooKeeper与Eureka作为Service发现服务(注:WebServices体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验。本文虽然略显偏激,但是看得出Knewton在云平台方面是非常有经验的,这篇文章从实践角度出发分别从云平台特点、CAP原理以及运维三个方面对比了ZooKeeper与Eureka两个系统作为发布服务的优...转载 2018-07-29 02:41:38 · 547 阅读 · 4 评论 -
nginx 负载均衡的实现
一,nginx 负载均衡功能的实践1, 首先安装nginx2,找到nginx安装目录下的nginx.conf,:vim /usr/local/etc/nginx/nginx.conf其中的配置信息如下,一般会默认生成,只需要修改“include servers/*.conf;”一行配置文件位置,该位置可以自定义,另外也可以将server配置内容直接写在这个nginx.conf配置文...原创 2018-07-28 16:44:59 · 3775 阅读 · 1 评论 -
分布式存储--Mysql--序列1--分库分表策略
分库分表是存储层设计中一个普遍而重大的问题,什么时候分?怎么分?分完之后引发的新问题,比如不能Join、分布式事务? 本篇将从最基本的策略出发,逐步深入讲解这里面涉及的一序列策略。分库-业务分拆 & 数据隔离分库的首先目的就是做“业务分拆“,关于业务分拆,在前面的序列文章“分布式系统--基本思想汇总“中已经有阐述。通过业务分拆,把一个大的复杂系统拆成多个业务子系统,之间通过RPC或消息中间...转载 2018-05-16 20:41:50 · 376 阅读 · 0 评论 -
从银行转账失败到分布式事务:总结与思考
正文 思考这个问题的初衷,是有一次给朋友转账,结果我的钱被扣了,朋友没收到钱。而我之前一直认为银行转账一定是由事务保证强一致性的,于是学习、总结了一下分布式事务的各种理论、方法。 事务是一个非常广义的词汇,各行各业解读都不一样。对于程序员,事务等价于Transaction,是指一组连续的操作,这些操作组合成一个逻辑的、完整的操作。即这组操作执行前后,系统需要处于一个可预知的、一致的状态。因...转载 2018-02-28 16:19:47 · 274 阅读 · 0 评论 -
jedisLock—redis分布式锁实现
jedisLock—redis分布式锁实现一、使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)同步访问(即有很多个进程同事访问同一个共享资源。没有同步访问,谁管你资源竞争不竞争)二、应用的场景例子 管理后台的部署架构...转载 2018-04-19 14:18:36 · 153 阅读 · 0 评论 -
spring boot项目中redis分布式锁实现 代码模板
1,在application.properties中配置redis主机:spring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.password=XXX2,添加redis配置文件:cache/RadisLock.javaimport org.springframework.data.redis.core.RedisTempla...原创 2018-04-19 14:36:50 · 2313 阅读 · 0 评论 -
分布式架构的演进 及 技术架构介绍
分布式架构的演进系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。系统架构演化历程-应用服务和数...转载 2018-05-18 11:42:52 · 338 阅读 · 0 评论 -
分布式架构 -- 学习路线图(入门到进阶)
由于分布式系统所涉及到的领域众多,知识庞杂,很多新人在最初往往找不到头绪,不知道从何处下手来一步步学习分布式架构。本文试图通过一个最简单的、常用的分布式系统,来阐述分布式系统中的一些基本问题。负载均衡分布式缓存分布式文件系统/CDN分布式RPC分布式数据库/Nosql分布式消息中间件分布式session问题 -总结下图为一个中大型网站/App的基本架构: 在这个架构中,涉及到以上所列的基本问题:负...转载 2018-05-16 10:47:56 · 337 阅读 · 0 评论 -
分布式事务 -- 最佳实践方案汇总 -- 看这1篇就够了
说到分布式事务,就会谈到那个经典的”账号转账”问题:2个账号,分布处于2个不同的DB,A要扣钱,B要加钱,如何保证原子性?传统方案 – 2PC(1)2PC的理论层面:2pc涉及到2个阶段,3个操作: 阶段1:“准备提交”。事务协调者向所有参与者发起prepare,所有参与者回答yes/no。 阶段2:“正式提交”。如果所有参与者都回答yes,则向所有参与者发起commit;否则,向所有参与者发起r...转载 2018-05-16 16:08:14 · 443 阅读 · 0 评论 -
分布式缓存--系列1 -- Hash环/一致性Hash原理
当前,Memcached、Redis这类分布式kv缓存已经非常普遍。从本篇开始,本系列将分析分布式缓存相关的原理、使用策略和最佳实践。我们知道Memcached的分布式其实是一种“伪分布式”,也就是它的服务器结点之间其实是相互无关联的,之间没有网络拓扑关系,由客户端来决定一个key是存放到哪台机器。具体来讲,假设我有多台memcached服务器,编号分别为m0,m1,m2,…。对于一个key,由客...转载 2018-05-16 17:08:01 · 200 阅读 · 0 评论 -
分布式架构--基本思想汇总
在互联网大行其道的今天,各种分布式系统已经司空见惯。搜索引擎、电商网站、微博、微信、O2O平台。。凡是涉及到大规模用户、高并发访问的,无一不是分布式。关于分布式系统,并没有一个标准答案,说某某架构一定是最好的。不同的业务形态所面对的挑战不一样,使用的架构设计也不一样,通常都需要具体业务具体分析。但不管那种业务,不管何种分布式系统,有一些基本的思想还是相通的。本文将对这些基本思想进行一个梳理汇总。分...转载 2018-05-16 18:27:49 · 313 阅读 · 0 评论 -
session共享问题
1,Spring-Session使用的场景?HttpSession是通过Servlet容器进行创建和管理的,在单机环境中。通过Http请求创建的Session信息是存储在Web服务器内存中,如Tomcat/Jetty。假如当用户通过浏览器访问应用服务器,session信息中保存了用户的登录信息,并且session信息没有过期失,效那么用户就一直处于登录状态,可以做一些登录状态的业务操作! ...转载 2019-01-09 14:24:23 · 394 阅读 · 0 评论