波斯马BOSSMA Information Technology

Architecture 下的日志

如何使用数组实现滑动窗口

发布时间:2021年11月29日 / 分类:Architecture, DOTNET / 抢沙发

在FireflySoft.RateLimit之前的版本中,进程内滑动窗口的实现是基于MemoryCache做的,虽然能够正确的实现滑动窗口的算法逻辑,但是性能比较差,其吞吐量只有其它算法的1/4。性能为何如此之差呢? 滑动窗口的原理 我们先来看下滑动窗口的原理,这里给一张图: 如...

FireflySoft.LeaderElection增加基于ZooKeeper的Leader选举

发布时间:2020年6月30日 / 分类:Architecture, Consul / 抢沙发

FireflySoft.LeaderElection的第一个版本实现了基于Consul的Leader选举,考虑到ZooKeeper的一个常见用途也是选主,所以此类库把ZooKeeper也集成了进来。并且进行了多项优化,比如在Leader断开连接时增加了一个Leader选举失败的事件,防止集群产生脑裂问题。 GitHub地址:ht...

使用Consul做leader选举的方案

发布时间:2019年9月20日 / 分类:Architecture, Consul / 抢沙发

在分布式集群部署模式下,为了维护数据一致性,通常需要选举出一个leader来进行协调,并且在leader挂掉后能从集群中选举出一个新的leader。选举leader的方案有很多种,对Paxos和Raft协议有过了解的同学应该对leader选举有一些认识,一般都是按照少数服从多数的原则来实现,但...

使用队列解耦的架构方案

发布时间:2019年8月19日 / 分类:Architecture / 抢沙发

搞技术的对“高内聚,低耦合”这几个字应该很熟悉,这是程序设计的一个基本原则,无论对于分布式系统,有几个模块的单体程序,以及程序中具体的类、类中的方法,都可以拿来讲。这个原则本质上是“分治法”,将一个大问题分解为一个个的小问题,然后各个击破,整个问题就解决了。相...

微服务架构下静态数据通用缓存机制

发布时间:2018年10月26日 / 分类:Architecture / 抢沙发

在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在的关键问题以及探寻通用的解决之道。 什么是静态数据 这里静态数据是指不经常发生变化或者变化频率比较...

使用Consul做服务发现的若干姿势

发布时间:2018年10月7日 / 分类:Architecture, Consul / 4 次吐槽

从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后来逐步应用于生产环境,并总结了少许使用经验。最开始使用Consul的人不多,为了方便交流创建了一个QQ群(群号在最后),这两年微服务越来越火,使用Consul的人也越来越多,目前群里已有800多人,经常有人问一些问...