
分布式开发技术
文章平均质量分 75
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
Gossip协议详细介绍
Gossip协议的设计简单且高效,非常适合大规模、去中心化的分布式系统。它依赖于节点之间的随机通信与定期信息交换,通过逐步传播来保持系统的一致性。其主要优点包括高容错性、低带宽消耗、无需中心化控制以及良好的扩展性。在实际应用中,Gossip协议被广泛用于分布式数据库、服务发现、故障检测等领域。原创 2025-01-17 20:25:46 · 764 阅读 · 0 评论 -
Gossip协议
Gossip协议本质上是通过节点之间的定期随机交换信息来实现高效的信息传播和同步,特别适用于分布式系统。开发中,它需要依赖网络通信、异步处理、容错机制等技术栈,并通过现有的框架或库(如Akka、Consul、Cassandra等)来实现。原创 2025-01-17 20:24:55 · 777 阅读 · 0 评论 -
Docker中安装和配置Apache Pulsar
使用Docker部署Pulsar集群非常适合开发和测试环境。通过上述步骤,您可以快速搭建一个单节点或多节点的Pulsar集群,并使用Web UI、命令行客户端或编程接口进行消息传递。原创 2024-12-14 02:28:26 · 1395 阅读 · 0 评论 -
Windows环境部署Apache Pulsar
Windows环境可以部署Apache Pulsar,但这通常需要一些额外的配置步骤,因为Pulsar原生是为Linux系统设计的。原创 2024-12-14 02:19:02 · 688 阅读 · 0 评论 -
DotPulsar用法示例
DotPulsar提供了许多高级功能,可以帮助开发者在高并发、低延迟、高吞吐量的环境中灵活地处理消息流。通过批量处理、消息压缩、分区主题、消费者负载均衡、事务支持等高级特性,开发者能够在生产者和消费者之间实现更高效的消息传递和处理。原创 2024-12-14 02:17:09 · 554 阅读 · 0 评论 -
DotPulsar知识点
DotPulsar是一个强大的 .NET 客户端库,适合与集成,特别适合用于大规模的分布式流处理和消息队列系统。它提供了全面的功能,既支持基本的生产者与消费者模式,也支持复杂的消息确认、订阅模式和高效的消息处理能力。原创 2024-12-14 02:16:06 · 559 阅读 · 0 评论 -
如果你还不知道SAGA,那这篇不容错过!
SAGA 的意思是“长篇故事、长篇记叙、一长串事件”。SAGA 事务模式的提出非常早,甚至早于分布式事务概念的提出。SAGA 于 1987 年由普林斯顿大学的 Hector Garcia-Molina 和 Kenneth Salem 在 ACM 发表的论文《SAGAS》中提出。这篇论文讲述的核心是如何处理长时间活跃的事务,SAGA 指出可将其拆分成可以交错运行的子事务集合,每个子事务都是一个真实的事务,子事务可以独自保证数据一致性。转载 2024-07-20 00:20:09 · 203 阅读 · 0 评论 -
死锁(deadlock)、活锁(livelock)与饿死(starvation)
这个术语是在 20 世纪 70 年代的某个时候正式定义的——最早出现在已发表的文献中,是 Babich 1979 年关于程序正确性的文章。T3也请求封锁R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T的请求…T2可能永远等待,这就是活锁。现实世界中活锁的一个示例是,两个人在一条狭窄的走廊里相遇,每个人都试图礼貌地让开让对方通过,但他们最终左右摇摆,没有取得任何进展,因为他们都在同一时间反复朝同一个方向移动。转载 2024-07-13 00:30:15 · 294 阅读 · 0 评论 -
什么是Livelock?
Livelock 是一种类似于死锁(deadlock)的并发问题。与死锁不同,死锁是线程(或进程)因为互相等待资源而永久阻塞;而 livelock 是线程(或进程)总是做一些无用的操作,但永远无法达到预期的结果。换句话说,在 livelock 中,线程虽然在运行,但实际上并没有推进程序的进展。原创 2024-05-27 21:30:28 · 615 阅读 · 0 评论 -
分布式哈希表(DHT)
分布式哈希表(DHT)是一种分布式系统,旨在让存储在其上的数据能够在整个网络中被有效地定位和访问。它是一种分布式的键值存储系统,将键(key)映射到值(value),并且这些键值对被存储在网络的各个节点上。原创 2024-03-31 14:58:03 · 844 阅读 · 0 评论 -
CAP分布式事务应用场景
onsistency(一致性)、vailability(可用性)和artition tolerance(分区容错性)。在 .NET Core 中,可以使用 CAP 框架来实现分布式事务处理的应用场景。原创 2024-03-24 16:45:40 · 396 阅读 · 0 评论 -
.NET Core 下使用 Exceptionless 记录日志
是一套免费开源分布式系统日志收集框架,也是我无意中发现的,支持自己部署和平台托管的方式接入使用。转载 2023-11-07 15:48:07 · 2761 阅读 · 0 评论 -
gRPC实现四种不同类型流的异同和特点
gRPC 支持四种不同类型的流:单一请求-单一响应、单一请求-流响应、流请求-单一响应和流请求-流响应。原创 2023-10-01 20:59:31 · 904 阅读 · 0 评论 -
mongodb和fastdfs存储图片对比
如果需要存储大量图片,并且对性能和可扩展性有较高的要求,FastDFS 是一个更好的选择。如果需要存储灵活的图片数据,并且需要提供专门的图片管理功能,MongoDB 是一个更好的选择。MongoDB 和 FastDFS 都是存储图片的常用方案。两者各有优缺点,具体选择哪种方案取决于具体的需求。MongoDB 和 FastDFS 各有优势和劣势,具体选择哪种方案取决于具体的需求。MongoDB 和 FastDFS 存储图片的选择。FastDFS 存储图片的优势。FastDFS 存储图片的劣势。原创 2023-09-01 20:29:25 · 966 阅读 · 0 评论 -
Raft一致性算法
Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。一项用户研究的结果表明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。转载 2022-12-28 20:45:13 · 892 阅读 · 0 评论 -
NServiceBus VS MassTransit
近段时间在看SOA,在国外网站有很多资料可以查看,本来在中文网站中找到一片关于这两个框架的对比介绍的可惜笔者没有认真翻译,只有花点时间自己翻译了一个版本,希望对技术界的朋友有所帮助。最近我没有这么多的时间去关注了,所以我认为两个系统在替代生态系统都有它们自己对的和自己的关注地方。的许可模式可以足够灵活的去适应任何预算,在大部分的客户频谱上显示,这样对管理也合乎情理。的原创作者,我显然更倾向于选择自己的技术,所以我会尽我所能试着让它更稳定。的监视和调试工具可以获得,这些工具在你的基于消息的系统上。转载 2022-12-19 16:12:38 · 309 阅读 · 0 评论 -
分布式事务的CAP理论
通过前面的学习,我们了解到了分布式的基础概念,与本地事务不同的是,分布式系统之所以叫分布式系统,是因为提供服务的若干个节点分布在不同机器上,相互之间通过网络交互,不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要进一步的理论基础,接下来,我们先来学习一下分布式事务的CAP理论。在讲解分布式事务事务控制解决方案之前需要先学习一些基础理论,通过理论知识指导我们确定分布式事务控制的目标,从而帮助我们理解每个解决方案。转载 2022-12-13 16:41:08 · 257 阅读 · 0 评论 -
建议:小规模分布式就用DTC,大规模分布式就用NetCore.CAP
CAP用来处理分布式事务以及提供EventBus的功能,具有轻量级,高性能,易使用等特点。转载 2022-10-20 18:30:31 · 892 阅读 · 0 评论 -
NET Core 事件总线,分布式事务解决方案:CAP
背景相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景下诞生的。最初打算做这个东西是在去年(2016)年底,最初是为了解决分布式系统中的分布式事务的问题,然后当时有了一个大概的概念轮廓,当时我对于前面两篇文章中关于异步消息和微服务之间通讯还不是太了解,只是觉得这样能够解决这一系列的问题,然后就着手做了,最后发现和这些概念竟然不谋而合。经过大半年的不断重构以及修转载 2022-05-19 12:34:55 · 905 阅读 · 0 评论 -
CAP实现EventBus
CAP实现EventBus分布式事务一致性,使用的是 CAP,那么我们在什么情况下使用它呢。EventBus:事件总线,是一个基于观察者模块的事件发布/订阅框架,可以将一些复杂的,重复的操作,异步的操作,交给系统去处理,当前系统直接返回成功的操作。简单的说就是解耦,比如用户发布文章后,需要将消息推送给关注的用户,这时候,推送会浪费许多时间,本来这个操作与当前登录的用户没有关系,用户也只关注文章发布是否成功,。后续,将推送等操作,交给另一件事件去处理,这样速度更快,屏蔽了一些细节。就类似一种消息通知,转载 2022-05-19 11:44:15 · 934 阅读 · 0 评论 -
.net core with 微服务 - 分布式事务 - tcc 事务
上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。TCCTry 准备阶段,尝试执行业务Confirm 完成业务Cancel 回滚准备阶段的业务TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC ,在二阶段进行事务提交。因为 2PC 基本上是利用数据库的事务能力进行 commit ,其实这里还有可能出现一种 rollback 情况。 TCC 就是把 2PC 的二阶段细化了,拆分成了 Confi转载 2022-05-17 21:56:46 · 472 阅读 · 0 评论 -
负载均衡知识
什么是负载均衡负载均衡策略集中式 load balance集中式LB方案,如下图。首先,服务的消费方和提供方不直接耦合,而是在服务消费者和服务提供者之间有一个独立的LB(LB通常是专门的硬件设备如F5,或者基于软件如LVS,HAproxy等实现)。LB上有所有服务的地址映射表,通常由运维配置注册,当服务消费方调用某个目标服务时,它向LB发起请求,由LB以某种策略(比如Round-Robin)做负载均衡后将请求转发到目标服务。LB一般具备健康检查能力,能自动摘除不健康的服务实例。服务消费方如何转载 2022-04-30 14:59:55 · 350 阅读 · 0 评论 -
DotNetCore CAP(分布式事务最终一致性)框架
前言CAP用来处理分布式事务以及提供EventBus的功能,具有轻量级,高性能,易使用等特点。安装包Install-package DotNetCore.CAP Install-package DotNetCore.CAP.RabbitMQ Install-package DotNetCore.CAP.SqlServer 使用方法配置Startup->ConfigureServices中添加服务://add CAP services.AddCap(x =>转载 2022-04-15 17:24:52 · 1349 阅读 · 0 评论 -
CentOS7.3搭建FastDFS V5.11(三)
1.测试前面两篇博文已对FastDFS的安装和配置,做了比较详细的讲解。FastDFS的基础模块都搭好了,现在开始测试下载。1.1 配置客户端同样的,需要修改客户端的配置文件:/etc/fdfs/client.confbase_path=/opt/fastdfs_tracker #tracker服务器文件路径tracker_server=172.20.132.57:22122 #tracker服转载 2018-04-03 13:36:57 · 1094 阅读 · 0 评论 -
FastDFS NET示例
Program.csusing System;using System.Collections.Generic;using System.IO;using System.Net;using FastDFS.Client;using System.Drawing;namespace FastDFS{ internal class Program { priv转载 2019-05-12 23:11:07 · 1611 阅读 · 1 评论 -
.NetCore+Jexus代理+Redis模拟秒杀商品活动
开篇叙本篇将和大家分享一下秒杀商品活动架构,采用的架构方案正如标题名称.NetCore+Jexus代理+Redis,由于精力有限所以这里只设计到商品添加,抢购,订单查询,处理队列抢购订单的功能;有不足或者不够详细的还请见谅,顺手点个推荐也不错; a. 秒杀流程 b. 封装StackExchange.Redis的使用类 c. Ubuntu16.04上使用Jexus搭建代理完成分转载 2018-04-24 22:25:41 · 503 阅读 · 0 评论 -
.NetCore+Redis模拟秒杀商品活动(分析)
主页 redis里的商品 redis里的订单 redis里的用户 订单列表请求API的响应 控制台程序,监控订单队列 抢购成功转载 2018-04-25 12:42:11 · 4612 阅读 · 0 评论 -
分布式事务解决方案(一)【介绍】
1. 常用分布式事务解决方案1.1 两阶段提交一个基于两阶段提交协议的分布式事务框架 二阶段提交(Two-phaseCommit)是指,在计算机网络以及数据库领域内,为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种算法(Algorithm)。通常,二阶段提交也被称为是一种协议(Protocol))。在分布式系统中,每个节点虽然可以知晓自己的操作时成功或...转载 2018-07-31 22:17:56 · 549 阅读 · 0 评论 -
分布式事务解决方案(二)【基于可靠消息的最终一致性】
2. 最终一致性(基于可靠消息)2.1 消息发送的一致性指产生消息的业务动作与消息发送的一致。(也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去,否则就丢消息)2.1.1 如何保障消息发送一致性处理方式1 如果业务操作成功,执行消息发送前应用故障,消息发不出去,导致消息丢失(订单系统与会计系统的数据不一致);如果业务操作成功,应用正常,...转载 2018-07-31 22:18:24 · 3181 阅读 · 2 评论 -
分布式事务解决方案(三)【基于可靠消息的最终一致性(独立消息服务实现)】
3. 最终一致性设计与实现——独立消息服务3.1 整体架构3.2 消息服务子系统3.2.1 基本功能存储预发送消息(主动方业务执行之前进行,预发送的消息存储后状态为待确认)确认并发送消息(主动方业务完成之后,主动方或消息状态确认系统通过此接口将消息变为取消或发送中)查询状态确认超时的消息(消息状态确认系统使用)确认消息已被成功消费(被动方业务执行完成之后调用...转载 2018-07-31 22:18:53 · 1415 阅读 · 1 评论 -
分布式事务解决方案(四)【最大努力通知】
4. 最大努力通知方案(定期校对)4.1 介绍实现 业务活动的主动方,在完成业务活动处理后,向业务活动被动方发送消息,允许消息丢失业务活动的被动方根据定时策略,向业务活动的主动方查询,恢复丢失的业务消息约束:被动方的业务处理结果不影响主动方的业务处理成本:业务查询与校对系统建设成本适用范围 对时间敏感性较低的业务对账用到的服务模式:可查询操作方案特点 业务活动...转载 2018-07-31 22:19:19 · 801 阅读 · 0 评论 -
分布式事务解决方案(五)【TCC型方案】
5-TCC型方案5.1 介绍 TCC方案属于两阶段型/补偿型5.1.1 实现一个完整的业务活动由一个主业务服务与若干从业务服务组成主业务服务负责发起并完成整个业务活动从业务服务提供TCC型业务操作业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在业务活动提交时确认所有的TCC型操作的confirm操作,在业务活动取消时调用所有TCC型操作的c...转载 2018-07-31 22:19:43 · 2484 阅读 · 0 评论 -
高并发系统保护~ing
由于公司业务发展,需要考虑一些高并发系统保护的问题,整理记录一下。 当发现你的系统出现访问卡顿,服务器各种性能指标接近100%(如果一个初创型企业系统正常运行情况下出现这个问题,那么应该恭喜你,你懂得),首先想到的是该加机器了,现在要说的并不是加机器的事,而是说在高并发的情况下,从代码层面如何保护系统,记得某位大神的博客里讲过“在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流”。通转载 2019-04-05 13:15:32 · 278 阅读 · 0 评论 -
Kafka.net使用编程入门(三)
这个世界既不是有钱人的世界,也不是有权人的世界,它是有心人的世界。一些有用的命令1.列出主题:kafka-topics.bat –list –zookeeper localhost:21812.描述主题:kafka-topics.bat –describe –zookeeper localhost:2181 –topic [Topic Name]3.从头读取消息:kafka-console-cons原创 2016-12-14 23:32:00 · 4994 阅读 · 3 评论 -
CentOS7.3搭建FastDFS V5.11(二)
1.CentOS7 FastDFS搭建前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包:点这里点这里1.1 安装libfastcommon安装成功后解压libfastcommon-master.zipunzip libfastcommon-master.zip[root@sybmfw12-lnsy libfastcommon转载 2018-04-03 13:24:35 · 590 阅读 · 0 评论 -
windows下使用Hibernate连接Mycat例子
项目结构 使用jdk1.6和hibernate3NewsManager.java代码如下:package App;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;imp原创 2016-08-23 12:57:45 · 8456 阅读 · 2 评论 -
memcached(十八)并发原语CAS与GETS操作
最近笔者自己的项目中,遇到了乐观锁的需求。但是redis没有这个操作,无奈,看了memcache天然的支持这种并发原语,即:GETS和CAS操作。因此准备打算继续使用REDIS,业务没有那么强的时序执行要求,因此可以使用没有CAS的算法在某种程度上解决。 我们为什么要使用这种并发原语呢?如果是单机版的,我们可以通过通过加锁同步就可以解决执行时序的问题。但是我们的应用是分布式的,无状态的应用转载 2017-03-12 11:13:21 · 615 阅读 · 0 评论 -
Memcached的.NET客户端(一)【.NET Memcached Client Library使用】
下载客户端的3个dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll新建一个简单控制台应用程序:class Program { private static void Main(string[] args) { SockIOPool原创 2016-08-09 12:03:41 · 3367 阅读 · 2 评论 -
Memcached的.NET客户端(二)【BeITMemcached使用】
class Example { public static void Main(string[] args) { //--------------------- // 设置客户端 //--------------------- Console.Wri原创 2016-08-08 21:13:11 · 1918 阅读 · 1 评论 -
window版分布式缓存Memcached使用攻略
asp.net网站使用Memcached能够极大减少数据库io,提高web读取效率,对于用户体验和数据服务器压力有很大的作用!以下介绍window版Memcached引用在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发生原创 2015-04-25 14:03:47 · 1278 阅读 · 0 评论