随笔分类 - 分布式相关
摘要:通过mongdb初始,我们对mongodb有了一个基本的认识,接下来看一下究竟如何使用。 本部分包含的内容包括: 1、mongodb在mac的安装,命令行及客户端工具的简单介绍; 2、在spring中如何使用mongodb,增删改查示例; 3、mongodb原生api的使用,增删改查示例; 4、mo
阅读全文
摘要:第二部分粗略的过一遍,还是有些模糊,再来相对系统的看一下: 1、ureka 的注册延迟 eureka client启动后,不是立即向eureka server注册,而是有一个延迟向服务端注册的时间。跟踪代码可以看到默认延迟时间是40秒,代码在DefaultEurekaClientConfig的get
阅读全文
摘要:zuul作为网关组件,主要用来管理api请求接口(统一对外暴露,负载均衡),身份认证,流量监控等。它是通过servlet来实现的,核心是一系列过滤器,可以在请求的发起跟相应返回阶段进行一系列的处理。 原理简介: 过滤器分类: PRE过滤器:在请求路由到具体的服务之前执行,可以用作安全验证,例如身份验
阅读全文
摘要:分布式系统中不可避免的会出现一些故障,因为服务间错综复杂的依赖关系,有时候一个服务出现问题后,会导致依赖于它的服务出现远程调度的线程受阻,给服务造成压力,当然同样的,祖父级调用者(暂且这么叫吧)当然也会因此受阻,依赖于祖父级调用者的应用也会被阻塞,,,,,这就是所谓的“雪崩”。 hystrix,一般
阅读全文
摘要:微服务一般来说当然是多服务多实例的,那么这些服务之间如何相互调用呢?spring cloud之前我们用dubbo,把服务开放出来,在xml配好后就可以像调用本地service一样调用其它模块的服务了;spring cloud当然也可以做到这一点,这就是feign。dubbo除了能调用其它模块服务,还
阅读全文
摘要:配置中心的服务端跟客户端我们已经搭建好了,但有个问题:如果git中的内容修改了,客户端能及时获取数据吗? 测试一下会发现不能,必须重启客户端才能刷新数据,这明显不是我们想要的。spring cloud的配置中心对这部分的实现是使用amqp协议,需要安装rabbitmq。具体操作如下: 1、服务端跟客
阅读全文
摘要:在项目开发完毕,进行部署运维的时候,总有很多配置文件要修改,稍有不慎漏掉或者跟运维人员沟通不畅就会很麻烦,很多时候上线时候的加班时间就是这么秏进去的。spring cloud的配置中心提供了让我们把配置文件统一管理的解决方案,只需要在一个地方统一改一个配置文件,上线运维不用做任何修改,是不是很爽!其
阅读全文
摘要:本文为eureka学习笔记,错误之处请指正。 1、服务生产者是怎么注册到配置中心的 a、第一步,构造实例信息,用于接下来的注册; 这个过程是通过EurekaClientConfiguration类中的方法eurekaApplicationInfoManager来实现的,其中的InstanceInfo
阅读全文
摘要:最近在忙一些其它的事情,两个城市来回跑还要办一些手续,挺费劲的,学习的事情也就耽误了一些,尽量赶吧。 spring cloud为分布式的微服务架构提供了一站式的解决方案,eureka注册中心在spring cloud的架构中占据了非常重要的角色,这使得我们有必要认真理清eureka的设计和使用思路。
阅读全文
摘要:基于zk的分布式锁: 大概原理:仍然跟基于db或者redis一致,就是注册节点,然后删除。不同的是zk因为可以对节点的事件进行监听,那么在收到节点删除的事件时,正在阻塞的线程便可以发起新的抢占锁的请求。当然,真正生产的代码一般不是这么写的,因为这样的情况下如果等待的线程非常多,那么zk向所有注册点的
阅读全文
摘要:基于redis的分布式锁: 大概原理:跟基于DB的类似,基于redis的分布式锁是争抢redis上的一个键,谁给这个键赋值了谁就抢到了锁,主要是用了redis的setnx机制,也就是set if not exists。实际一般不用setnx这个api,主要是粒度略粗,不能指定失效时间,用set(ke
阅读全文
摘要:使用场景: 某大型网站部署是分布式的,订单系统有三台服务器响应用户请求,生成订单后统一存放到order_info表;order_info表要求订单id(order_id)必须是唯一的,那么三台服务器怎么协同工作来确认order_id的唯一性呢?这时候就要用到分布式锁了。 分布式锁的要求: 在了解了使
阅读全文
摘要:历史介绍部分: 远程调用大致经过了corba、webservice、二进制跟restful四个阶段 corba时代,corba(Common Object Request Broker Architecture,通用对象请求代理架构)算是公认的所有远程调用的鼻祖,是由OMG(object mange
阅读全文
摘要:zookeeper的原生api相对来说比较繁琐,比如:对节点添加监听事件,当监听触发后,我们需要再次手动添加监听,否则监听只生效一次;再比如,断线重连也需要我们手动代码来判断处理等等。对于curator的介绍,从网上百度了一段:Curator是Netflix开源的一套zookeeper客户端框架,用
阅读全文
摘要:前段时间项目开发中用到了当当开源的elastic-job,使用过程遇到一些问题,虽然不见得会影响写代码,但作为一个致力于搬好每一块砖的码农,当碰到问题时,我们不应该逃避,应该本着有困难也要上,没有困难创造困难也要上的精神冲上去搞定它,这样才能更容易了解事情的本质,才能有利于以后搬好每一块砖,佝偻者承
阅读全文
摘要:窃以为,对于zookeeper这种东西,仅仅知道怎么安装是远远不够的(废话么这不是,,,),至少要对其几个典型的应用场景进行了解,才能比较全面的知道zk究竟能干啥,怎么玩儿,以后的日子里才能知道这货如何能为我所用。于是,有了如下的学习: 我们知道zookeeper可以用于搭建高可用服务框架,主要先看
阅读全文
摘要:因最近工作中要用到zookeeper,故找来资料学习一番,为加强记忆,特做笔记如下: 笔记内容: 1、zookeeper背景 2、本地微集群配置 3、java api使用 4、几种常见使用场景 5、运维管理 6、自己的理解 分割线之开始正文 一、背景 (说实话,以下是我网上抄的,具体的理解在最后再写
阅读全文
摘要:官方资料:https://github.com/dangdangdotcom/elastic-job 官方资料非常完整而且思路清晰,按照自己学习过程整理如下: 1、 何为分布式任务? 自己理解,就是一件事情让多台机器来完成。单机环境下,所有任务都是单个电脑独立完成,分布式任务就是把任务按一定逻辑进行
阅读全文