![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中间件
文章平均质量分 93
娟宝宝萌萌哒
https://github.com/hanjg
展开
-
限流的几种实现
算法流量限制计数器统计单位时间内请求数。超过直接拒绝。特点:实现简单。单位时间一开始就消耗完,剩余时间都会拒绝,即突刺消耗。滑动窗口计数器的精细化(微分+积分),按照时间窗口计数和拒绝。特点:减弱突刺流量的影响:切换计数器时的双倍峰值。减弱突刺消耗的影响范围。消耗更多内存CPU统计并计算限流。漏桶缓冲区缓存,系统恒定速率处理请求。特点:消费匀速。请求可能有一定的等待延迟。突发流量会等待较久或者丢弃。令牌桶改进漏桶。某原创 2021-02-02 19:22:04 · 517 阅读 · 0 评论 -
nacos和apollo实现对比
文章目录nacos架构配置更新概念apollo架构配置更新对比参考nacos架构client -> server <- admin。服务端持久化可简化为内置的Derby内存数据库。配置更新HTTP从server长轮询拉配置。请求延时阻塞在服务端队列中。服务端task扫到key的更新,变更后的配置写入响应对象,返回结果。没有变更阻塞29.5s后(客户端超时30s)检查配置,检查结果写入响应对象,返回结果。客户端检查配置的md5,不一致调用listener通知变更事件。原创 2020-10-06 23:31:01 · 2529 阅读 · 0 评论 -
kafka安装和使用
文章目录安装javazookeeperkafkakafka在zk中的节点使用生产者使用消费者使用安装javazk和kafka的运行环境。linux下的jdk安装zookeeper下载zk:https://zookeeper.apache.org/releases.html解压。tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz。创建数据文件夹、配置路径下创建zoo.cfg。cd /usr/local/zookeeper/apache-zookee原创 2020-07-08 13:54:11 · 420 阅读 · 0 评论 -
kafka工作原理
文章目录架构元数据复制首领副本追随者副本处理请求元数据请求生产请求获取请求分区存储架构元数据broker集群成员列表。维护在zk的 /brokers/ids下的临时节点。控制器。broker之一,通过成功创建/controller节点判定。监听各broker zk节点状态,维护分区首领和追随者列表,并通知各个broker。复制每个分区多个副本。首领副本所有生产者和消费者请求经过首领副本,追求一致性。追随者副本从首领复制消息,保持一致。主动从首领pull消原创 2020-07-08 13:51:16 · 451 阅读 · 0 评论 -
kafka可靠性保障
文章目录保障broker复制系数不完全的首领选举最少同步副本生产者发送确认重试额外错误处理消费者可靠性配置手动提交注意点保障保证:分区消息顺序。同一个分区中先写入的消息会被消费者先读到。消息被写入分区所有同步副本,才被认为已提交。只要有一个副本活跃,已提交消息就不会丢失。消费者只能读取已提交的消息。核心:复制机制+分区多副本。kafka配置需要在两点之间权衡:消息存储的可靠性、一致性可用性、高吞吐、低延时、硬件成本保证消息至少被消费一次。生产者、消费者均有可能使消息重复。原创 2020-07-08 13:41:01 · 471 阅读 · 0 评论 -
ZK内部实现——Paxos到Zookeeper(二)
文章目录系统模型数据模型节点版本WatcherACL服务器角色LeaderFollowerObserver服务器间的通信类型Leader选举服务器启动运行期间会话创建管理清理重连请求处理会话创建SetData事务请求转发GetData系统模型数据模型一颗树,每个节点称为ZNode。事务ID(ZXID),改变zk状态的操作分配全局唯一的事务id。包括节点的增删,节点数据修改,会话创建和失效等。节点节点类型。持久节点。创建直到主动删除。持久顺序节点。zk中父节点维护第一级子节点顺原创 2020-06-24 00:28:53 · 248 阅读 · 0 评论 -
ZAB——Paxos到Zookeeper(一)
文章目录简介崩溃恢复模式条件目的步骤消息广播模式条件目的步骤和Paxos的关系相同不同简介ZAB(Zookeeper Atomic BroadCast)协议。为zk专门设计的支持崩溃恢复的原子广播协议。zk使用zab协议在主备模式的架构中保持集群各副本数据的一致性。崩溃恢复模式条件服务框架重启。Leader异常:网络中断、崩溃退出、重启。目的选取新Leader。Follower和Leader数据同步。已经被Leader提交的Proposal能够被所有Follower提交。原创 2020-06-24 00:09:43 · 166 阅读 · 0 评论 -
分布式锁的实现方式
简介在单机环境中,java提供了很多并发的API,但是这些API仅限于同一节点上的应用,对分布式场景无能为力。要求:一把锁在同一集群中只能被一个节点上的一个线程获得,且被该线程释放。可重入(避免死锁),阻塞锁。获取和释放锁高可用(集群,超时)、高效。较常用的几种方案:基于数据库实现(简单)。基于redis等缓存实现(高效)。基于zookeeper实现(可靠)。数...原创 2019-02-17 21:58:44 · 505 阅读 · 0 评论 -
消息队列关键概念
文章目录消息队列rabbitMQkafka对比消息队列作用:解耦。解耦出调用方,特别是被调用方较多,且经常变更时。异步。减少rt。削峰。类似缓存,抗峰值流量。缺点:可用性降低。MQ挂掉影响这个系统。复杂度提高。消息重复、丢失、顺序等问题。一致性。部分消费成功,部分不成功情况。rabbitMQ使用AMQP模型。punlisher发布消息到exchange,根据...原创 2019-04-23 19:04:34 · 449 阅读 · 0 评论