
架构
world6
这个作者很懒,什么都没留下…
展开
-
All-In-One到SOA的分布式架构演进
1、单一应用在诞生之初始,应用与数据库是部署在同一台机器上,这时的用户量、数据量规模都比较小,这样的架构既简单实用、便于维护,成本又低,成为了这个时代的主流架构方式。原创 2017-05-29 17:38:44 · 3108 阅读 · 1 评论 -
zookeeper的zab协议工作原理之原子广播
说zab协议之前必须提一下 paxos 协议 paxos协议主要就是如何保证在分布式环网络环境下,各个服务器如何达成一致最终保证数据的一致性问题ZAB协议,基于paxos协议的一个改进。zab协议为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议zookeeper并没有完全采用paxos算法, 而是采用zab Zookeeper atomic broadcast zab协议...原创 2018-04-09 10:41:57 · 1709 阅读 · 0 评论 -
分布式相关基础理论
分布式环境下面临的问题:网络通信:网络本身的不可靠性,因此会涉及到一些网络通信问题三态:分布式架构里面,除了成功、失败、超时分布式事务 :ACID特性中心化和去中心化:冷备或者热备经典的CAP/BASE理论CAP C(一致性 Consistency): 所有节点上的数据,时刻保持一致 A可用性(Availability):每个请求都能够收到一个响应,无论响应成功或者失败...原创 2018-03-27 11:42:54 · 912 阅读 · 0 评论 -
动物园园长 zookeeper
zookeeper是一个开源的分布式协调服务中间件zookeeper能做什么?数据的发布/订阅(配置中心:disconf) 、 负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、 master选举(kafka、hadoop、hbase)、分布式队列、分布式锁zookeeper的特性:顺序一致性:从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中原...原创 2018-03-27 11:54:51 · 874 阅读 · 0 评论 -
zookeeper的zab协议工作原理之 崩溃恢复模式
上篇 zookeeper的zab协议工作原理之 原子广播 介绍了 zookeeper 广播的原理。下篇 来详细的讲解 崩溃恢复模式 的原理一、什么情况下zab协议会进入崩溃恢复模式? 1、当服务器启动时 2、当leader 服务器出现网络中断,崩溃或者重启的情况 3、当集群中已经不存在过半的服务器与Leader服务器保持正常通信。二、zab协议进入崩溃恢复模式会做什么? 1、...原创 2018-04-09 22:02:52 · 4060 阅读 · 1 评论 -
详解zookeeper的配置文件
zoo.cfg配置文件分析tickTime=2000 zookeeper中最小的时间单位长度 (ms) initLimit=10 follower节点启动后与leader节点完成数据同步的时间 syncLimit=5 leader节点和follower节点进行心跳检测的最大延时时间 dataDir=/tmp/zookeeper 表示zookeeper服务器存储快照文件的目录 dataLogD...原创 2018-03-29 10:16:55 · 2252 阅读 · 0 评论 -
集群 跟 分片 有什么区别
我们在谈到 服务器多实例的时候,常常会说到 Tomcat 集群 ;但为什么 谈到 多实例 redis 的时候 没有说 redis 集群 呢?是因为 类似Tomcat 这样的 集群 强调的是 机器提供的 服务 而 redis 这样的 “集群” 强调的是 数据 ,(因为redis 主要是来存数据的嘛)将数据分为一片一片的区域,就称为分片,是不是很形象?所以 redis 集群 一般会...原创 2018-05-17 20:00:19 · 4996 阅读 · 2 评论 -
分布式环境下的解决方案——分布式锁
分布式锁,也就是在多进程情况下的锁。 多进程的锁 跟 多线程的 锁 有什么相同的地方呢? 需要有存储锁的空间,并且锁的空间是可以访问到的。 锁需要被唯一标识。 锁要有至少两种状态。 储存空间:锁是一个抽象的概念,锁的实现,需要依存于一个可以存储锁的空间。在多线程中是内存,在多进程中是内存或者磁盘。更重要的是,这个空间是可以被访问到的。多线程中,不同的线程都可以访问到堆...原创 2018-07-23 21:56:23 · 921 阅读 · 0 评论 -
redis 实现分布式锁的演进
在分布式系统中,常常会遇到一些要使用分布式锁的业务场景。比如说:每分钟要执行关闭未支付订单的定时任务,在集群的环境下,如果不做处理,每台服务器都会去执行这个定时任务,显然每个时间段的定时任务只需要执行一次,并不需要每台服务器都去执行,使用分布式锁来控制让单台服务器来执行这个定时任务 势在必行实现分布式锁的方式有很多,zookeeper,数据库,或者是其它手段都可以,本文着重分析使用re...原创 2018-05-21 11:21:41 · 597 阅读 · 0 评论 -
什么是Restful
Restful 一直都在听,一直都在用,但就是搞不懂什么是restful,因为说不出个所以然出来。为什么说一直都在用呢,我们随便打开一个大型网站的网址,基本都是 restful 风格的 。比如:http://www.imooc.com/course/programdetail/pid/31restful有什么用呢?使用web标准来做一个准则和约束。RESTful的基本概念 1.在...原创 2018-03-22 11:45:02 · 493 阅读 · 0 评论 -
zookeeper的选举机制
一、Zookeeper选举机制Zookeeper虽然在配置文件中并没有指定master和slave但是,zookeeper工作时,会选出一个节点为leader,其他则为follower下面来聊聊是如何选出leader的。leader选举的算法有三种:leaderElection/AuthFastLeaderElection/FastLeaderElection其中FastLeaderElectio...原创 2018-04-08 21:05:57 · 686 阅读 · 0 评论 -
如何用zookeeper 实现分布式锁
一、分布式锁介绍 分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。二、分布式锁设计原理图1、基于排它锁:让所有的客户端(A B C)都在指定的Locks节点下 创建一个同名的节点lock,利用ZK 节点名称的唯一性来做限制, 谁创建成功了谁就获取到了锁,否则就是没有获取到。这种设计比较简单2、基于共享锁:1、在当前节点下创建临时...原创 2018-04-08 20:48:59 · 535 阅读 · 0 评论 -
一次URL输入域名按下回车到底发生了什么?
1、 浏览器的url输入栏发起一个请求,浏览器首先会看自己缓存中有没有对应的ip地址,如果有的话就直接去访问;如果没有2、 浏览器会去查看本地的hosts文件,看看有没有和这个域名匹配的ip地址,如果有的话就直接用hosts文件的ip地址;3、 如果本地的hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器 ,本地DNS服务器会首先原创 2017-06-21 16:39:51 · 1015 阅读 · 0 评论 -
一致性Hash算法
很早的时候就听过这个算法,也搜过相关的博客,但一直没搞懂这个算法是用来干嘛的;现在的公司面试的时候CTO跟我聊了一下hashcode紧接着问我对一致性hash有没有了解,去随手记面试时,面试官也问了一致性hash,面试的时候都没答出来,面完用手机查了一下一致性hash,看到很多人拿那个圈做比喻也一下子没看懂;直到入职后,有天中午跟CTO一起吃饭,又问了他如何去理解一致性hash, 当时CTO解释了原创 2017-08-24 00:51:05 · 718 阅读 · 0 评论 -
SpringMVC实现原理
今天我们来实现一个简单的springMVC框架,可以理解为 springMVC1.0这个版本,只是功能比较简单而已;废话不多说,进入正题;先看看springMVC的简单流程;我们请求的地址会被dispatchservlet这个springMVC的核心拦截器拦截,然后dispatchservlet会找到我们想要的那个controller里的那个方法,并调用。但是dispatchServlet不是人,...原创 2017-09-27 20:23:27 · 5710 阅读 · 0 评论 -
写一个自己的springMVC?
今天我们来实现一个简单的springMVC框架,可以理解为 springMVC1.0这个版本,只是功能比较简单而已;废话不多说,进入正题;先看看springMVC的简单流程;我们请求的地址会被dispatchservlet这个springMVC的核心拦截器拦截,然后dispatchservlet会找到我们想要的那个controller里的那个方法,并调用。但是dispa原创 2017-09-27 22:37:27 · 1613 阅读 · 2 评论 -
为什么要用分布式架构,又为什么要用微服务?
上次面试时经常被问到一个问题,你为什么要用dubbo?由于经验尚浅,实在是没说得明明白白。我用了dubbo后,我就可以这样调接口,巴拉巴拉,说到底还是争不过面试官问:那照你这么说,我不用分布式架构也可以完成啊,你只是说了用了分布式架构后业务处理的方法,并没有弄懂里面的原因。结果自然是。。。。。。。给了offer,没去简要的分析一下单体架构的优缺点,再说说用了分布式架构后会遇到的问题原创 2018-01-20 14:43:31 · 23678 阅读 · 7 评论 -
如果进入CPU的世界,时间会是怎样的?
每个人都会有一些吐槽的想法存在,我替CPU把它的吐槽 放在我的博客里吧!不知道大家有没有感觉每天写代码的时间过得很快啊,有时候一天过去了一个功能还没完成,但是时间就这么没了!但是你知道CPU有多少苦水吗? 且听 CPU 慢慢的倾诉......让我们看看什么是CPU的世界:CUP是电脑的心脏,CPU决定了这台电脑的上限。而决定CPU工作频率的是主频。我的笔记本是 16年买的,主频好像是 2.6GHz...原创 2018-02-26 20:52:46 · 3232 阅读 · 5 评论 -
为什么redis 是单线程的?
以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的 原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为多线程的本质就是 CP...原创 2018-02-26 21:38:17 · 13184 阅读 · 9 评论 -
分布式锁的实现方式
分布式锁跟 我们 平时用 的synchronized 锁 本质是都是锁。 不同的是:synchronized是 java提供的锁。 是java进程进行多线程控制时的锁。 用 分布式锁 的原因是,多个应用是不同的进程下运行的,显然用java 提供的 锁就不行了。说说三种分布式锁的机制。 第一种,用数据库来做。有一个 专门的 lock tabl...原创 2018-03-12 20:02:02 · 350 阅读 · 0 评论 -
为什么会要序列化
对 java对象的传输 是通过网络的 。然后网络都是通过字节传输的 所以需要用序列化的方式 将java对象转化为 字节,然后网络那头的接受端,拿到收到的字节 再反序列化出来一个对象,用来保证 java的对象能够跨进程传输。总结了一下 序列化的几个要点: 1.在java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化 2.通过ObjectOutputSt...原创 2018-03-21 21:19:36 · 673 阅读 · 0 评论 -
秒杀系统的设计五大原则
最近订阅了 极客时间 | 如何设计一个秒杀系统,这里是每章的学习笔记。链接:如何设计一个秒杀系统 架构原则:4要 1 不要!1、数据要尽量少。2、请求数要尽量少。3、请求路径要短。4、依赖要尽量少。5、不要有单点。 数据要尽量少:1. 是指用户请求的数据能少就少,请求包括给系统发的request 及 response 。因为 这些 request 和 r...原创 2018-11-21 21:32:53 · 817 阅读 · 0 评论