- 博客(19)
- 资源 (6)
- 收藏
- 关注
转载 Dubbo服务降级
dubbo降级服务使用dubbo在进行服务调用时,可能由于各种原因(服务器宕机/网络超时/并发数太高等),调用中就会出现RpcException,调用失败。服务降级就是指在由于非业务异常导致的服务不可用时(上面举得例子),可以返回默认值,避免异常影响主业务的处理。官方 dubbo 3.0-给出的服务降级RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class)
2021-08-31 17:49:12 1347
转载 Dubbo负载均衡算法
本文摘自dubbo官网---dubbo2.7版本连接:https://dubbo.apache.org/zh/docs/v2.7/dev/source/loadbalance/1.简介LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬
2021-08-30 17:17:53 643
转载 Dubbo支持的协议
Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。1、dubbo 协议 (默认)1、dubbo 缺省协议 采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况2、不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。缺省协议
2021-08-27 17:19:20 425
转载 Zookeeper Zap协议
什么是zap协议?Zab协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。在zookeeper中,主要依赖ZAB协议来实现分布式数据一致性,基于该协议,zk实现了一种主备模型(即Leader和Follower模型)的系统架构来保证集群中各个副本之间数据的一致性。zap协议内容?Zab 协议包括两种基本的模式:崩溃恢复和消息广播协议过程当整个集群启动过程中,或者当 Leader 服务器出现网络中弄...
2021-08-26 17:03:02 867
转载 Zookeeper集群间消息通信
ZooKeeper的消息类型大体上可以分为四类,分别是:数据同步型、服务器初始化型、请求处理型和会话管理型。数据同步型 数据同步型消息是指在Learner和Leader服务器进行数据同步的时候,网络通信所用到的消息,通常有DIFF、TRUNC、SNAP和UPTODATE四种。下表中分别对这四种消息类型进行了详细介绍。消息类型 发送方→接收方 说明 DIFF, 13 Leader→Learner 用于通知Learner服务器、Leader即将与其进行“D...
2021-08-26 13:56:54 442
原创 ZooKeeper节点数据操作流程及zookeeper的应用场景
zk节点数据操作流程:首先回顾一下Zookeeper中Leader和Follower的作用:Leader:负责进行投票的发起和决议,分布式读写,更新请求转发;Follower:负责接收客户端请求并向客户端返回结果,在选举Leader过程中参与投票(选举机制);一、写数据流程以3台服务器的Zookeeper集群为例,一个Leader,两个Follower即server1和server2(1)Client向Zookeeper的server1发送一个写请求,客户...
2021-08-26 11:21:35 1284
转载 zookeeper实现负载均衡
解析:首先会员服务在注册中心上注册,这个时候就在zookeeper上生成几个临时节点,节点名是/member/8080和/member/8081,值是127.0.0.1:8080,127.0.0.1:8081(zookeeeper每个节点都有节点名和节点值),/member是会员服务的入口,这个时候订单服务调用会员服务,使用本地负载均衡策略,如下所示:使用Zookeeper实现负载均衡原理思路使用Zookeeper实现负载均衡原理,服务器端将启动的服务注册到,zk注册中心上,采用临..
2021-08-26 10:03:51 3594
转载 watcher事件
zookeeper主要是为了统一分布式系统中各个节点的工作状态,在资源冲突的情况下协调提供节点资源抢占,提供给每个节点了解整个集群所处状态的途径。这一切的实现都依赖于zookeeper中的事件监听和通知机制。watcher源码(jdk1.8)watcher接口中有一个Event接口,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。/* * Licensed to t.
2021-08-18 17:47:06 386
原创 zookeeper分布式锁
分布式锁介绍分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。本文主要谈的是Zookeeper的分布式锁,在此之前先了解下基于数据库和redis的分布式锁的实现。基于数据库1. 基于数据库表最简单的方式可能就是直接创建一张锁表,当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。给某字段添加唯一性约束,如果有多个请求同时提交到数据库的话,数据库会保证只有一个操作可以成功,那么我...
2021-08-16 15:35:51 429
原创 zookeeper环境搭建
windows安装zookeeper 下载地址为:https://zookeeper.apache.org/releases.html。zookeeper个人已下载好的地址为:https://download.csdn.net/download/qq_35044419/21056429以上两个包一样,zip是我用上面的gz解压压缩而成的。在下载好文件之后,安装之前,先确定windows是否已经安装好了jdk,因为zookeeper服务器是java编写的,所以需要运行在JVM...
2021-08-13 10:29:05 186
转载 Zookeeper Leader选举算法及选举过程
zookeeper 的 leader 选举存在两个阶段,一个是服务器启动时 leader 选举,另一个是运行过程中 leader 服务器宕机。在分析选举原理前,先介绍几个重要的参数。服务器 ID(myid):编号越大在选举算法中权重越大 事务 ID(zxid):值越大说明数据越新,权重越大 逻辑时钟(epoch-logicalclock):同一轮投票过程中的逻辑时钟值是相同的,每投完一次值会增加选举状态:LOOKING: 竞选状态 FOLLOWING: 随从状态,同步 leader 状态,参
2021-08-12 10:23:16 971
原创 zookeeper数据结构及基本命令
数据结构Zookeeper的数据节点称为ZNode,ZNode是Zookeeper中数据的最小单元,每个zNode名称是唯一的(或者说路径唯一),每个ZNode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。在Zookeeper中,事务是指能够改变Zookeeper服务器状态的操作,一般包括节点创建与删除,数据节点内容更新和客户端会话创建与失效。对于每个事务请求,Zookeeper是如何保证事务的顺序一致性?Zookeeper都会为其分配一个全局唯一的事务
2021-08-11 17:46:08 478
转载 zookeeper工作原理、服务器角色、工作状态?
zookeeper服务器角色服务器角色:角色 描述 领导者(leader) 负责进行投票的发起和决议,更新系统状态 学习者 (learner) 跟随者 (follower) 接收客户端请求并向客户端返回处理结果,参与选主过程中的投票 观察者 (obServer) obServer可独立处理非事务请求,事务请求要转发给leader处理,不参与任何投票,只同步leader状态 客户端(c
2021-08-11 16:06:33 452
转载 CyclicBarrier
简介CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。注意比较CountDownLatch和CyclicBarrier:(01) CountDownLatch的作用是允许1或N个线程等待其他线程完成执行;而CyclicBarrier则是允许N个线程相互等待。(02) CountDownLatch的计数器无法被重置;Cycl
2021-08-04 10:53:03 154
转载 CountDownLatch
介绍一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法会使初始化的计数减一,所以在当前计数到达零之前,await()方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行CountDownLatch类的方法源码:packag..
2021-08-03 15:43:42 447
转载 Canal 数据监控 同步缓存数据
canal: 阿里旗下的开源的,java语言的开发作用:用来监控数据库数据的变化,从而获取新增数据或者修改的数据;原理:Canal伪装成mysql的备份机,当mysql数据发生过改变,就会把binary log日志发送给从数据库来保证数据的一致性,然后Canal就可以监控数据的改变实现:mysql需要开启binlog模式数据监控微服务:1.搭建maven工程导入:starter-canalspring-rabbit 依赖 <dependency> ..
2021-08-03 10:24:21 384
转载 使用canal 监听mysql binlog获取增量数据
配置mysqlsudo vi /etc/my.cnf[mysqld]log-bin=/var/lib/mysql/mysql-bin #开启日志监控binlog-format=ROW #监控模式为ROWserver_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复创建canal用户添加canal用户,修改权限CREATE USER canal .
2021-08-03 09:38:41 859
转载 Redis缓存一致性
一、概述 Redis缓存机制的一致性就是说数据库的数据要跟Redis中的数据保持一致。二、实现方式 方式一:先更新数据库,再更新缓存场景 方式二:先更新缓存,再更新数据库场景 方式三:先删除缓存,再更新数据库的场景 方式四:先更新数据库,再删除缓存场景 方式五:最佳实现,数据异步同步三、详解 方式一: 当有两个线程A、B,同时对一条数据进行操作,一开始数据库和redis的数据都为tony,当线程A去修改数据库,将tony改为allen,然后线程A在修改
2021-08-02 16:38:06 115
转载 redis限流的3种实现方式
Redis限流的实现方式有3种,分别是:1、基于Redis的setnx的操作,给指定的key设置了过期实践;2、基于Redis的数据结构zset,将请求打造成一个zset数组;3、基于Redis的令牌桶算法,输出速率大于输入速率,就要限流。第一种:基于Redis的setnx的操作我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位时间.
2021-08-02 10:51:56 276
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人