波斯码BOSSMA Information Technology

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

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

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

一个基于Consul的.NET Leader选举类库

发布时间:2020年6月10日 / 分类:Consul, DOTNET / 评论

前段时间有传言说Consul将不能在我国继续使用,后被查明是因法律问题Vault企业版产品不能在国内销售。Valut和Consul都是HashiCorp公司的产品,并且都推出了开源版本,继续使用开源版本都是没有问题的,虚惊一场。Consul是一款优秀的服务发现和配置管理产品,基于其提供的Session机制,可以很方便的实现Leader选举功能。

实现.Net程序中OpenTracing采样和上报配置的自动更新

发布时间:2020年5月29日 / 分类:OpenTracing / 评论

OpenTracing是一个链路跟踪的开放协议,已经有开源的.net实现,结合Jaeger可以实现完整的功能。对于链路跟踪,为了同时保障性能和跟踪关键数据,能够远程调整采样率是很重要的,Jaeger本身也提供了远程配置采样率的支持。不过没有提供Reporter的远程配置更新支持,我这里用的阿里云链路跟踪平台也不支持远程配置,所以自己做了一个采样和上报配置的动态更新。

winsw注册可执行文件为Windows服务

发布时间:2019年10月21日 / 分类:SERVER / 评论

注册为Windows服务的程序可以自动启动,比较方便,当然还有其它好处,这里就不多说了。使用Visual Studio可以很方便的创建Windows服务程序,不过很多情况下不想搞的这么麻烦,或者不想去学习这个,比如写了一个Java控制台的程序,又或者用Python写了段脚本,有没有比较简单的方式呢。今天就介绍一个小工具:winsw。

使用Consul做leader选举的方案

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

在分布式集群部署模式下,为了维护数据一致性,通常需要选举出一个leader来进行协调,并且在leader挂掉后能从集群中选举出一个新的leader。选举leader的方案有很多种,一般都是按照少数服从多数的原则来实现,但是因为分布式环境中无法避免的网络不稳定、数据不同步、时间偏差等问题,要想搞好leader选举并不是一件特别容易的事。

提升RabbitMQ消费速度的一些实践

发布时间:2019年9月5日 / 分类:RabbitMQ / 评论

RabbitMQ是一个开源的消息中间件,自带管理界面友好、开发语言支持广泛、没有对其它中间件的依赖,而且社区非常活跃,特别适合中小型企业拿来就用。这篇文章主要探讨提升RabbitMQ消费速度的一些方法和实践,比如增加消费者、提高Prefetch count、多线程处理、批量Ack等。

WordPress Plugin: Bosima WeChat Page Sharing 0.3.4 release

发布时间:2019年8月24日 / 分类:WordPress / 评论

这个版本主要将一些获取当前域名和Url的方式从PHP替换为前端JavaScript,根本上解决网站使用反向代理、二级目录、Url重写等情况下PHP获取当前域名和URL比较困难的问题。

使用队列解耦的架构方案

发布时间:2019年8月19日 / 分类:Architecture / 评论

搞技术的对“高内聚,低耦合”这几个字应该很熟悉,这是程序设计的一个基本原则,无论对于分布式系统,有几个模块的单体程序,以及程序中具体的类、类中的方法,都可以拿来讲。

Consul的反熵

发布时间:2019年8月12日 / 分类:Consul / 评论

俗话说林子大了什么鸟都有,分布式系统如果没有一个有效的约束机制,就会越来越混乱,Consul通过协调Agent和Catalog实现了反熵,这篇文章就来一探究竟。

Swift:一个基于.NET Core的分布式批处理框架

发布时间:2019年3月30日 / 分类:DOTNET / 评论

Swift是一个分布式批处理框架,通过将作业分割并分发到多台机器并行处理,成倍提升了数据的处理速度。