分布式系统
文章平均质量分 88
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。
进朱者赤
阿里非典型程序员一枚:微信公众号同名,记录平平无奇程序员在大厂的打怪升级之路。
Java、大数据、数据结构算法
展开
-
浅谈分布式锁设计
在JVM中,在多线程并发的情况下,我们可以使用同步锁或Lock锁,保证在同一时间内,只能有一个线程修改共享变量或执行代码块。但现在我们的服务基本都是基于分布式集群来实现部署的,对于一些共享资源,例如我们之前讨论过的库存,在分布式环境下使用Java锁的方式就失去作用了。这时,我们就需要实现分布式锁来保证共享资源的原子性。原创 2024-05-21 11:06:21 · 713 阅读 · 0 评论 -
高并发架构设计(三大利器:缓存、限流和降级)
高并发是指系统或应用程序在同一时间段内接收到大量并发请求的能力。具体来说,高并发环境下系统需要能够同时处理大量的请求,而不会出现性能问题或响应延迟在网站或APP的开发中,缓存机制是一个不可或缺的环节,可以提高网站或APP的访问速度,降低数据库压力。但在高并发环境下,缓存机制的作用更加明显,不仅可以有效减轻数据库的负载,还可以提高系统的稳定性和性能,从而给用户带来更好的体验。原创 2023-11-11 22:27:47 · 1488 阅读 · 17 评论 -
分布式锁总结
在分布式系统中,多个节点同时访问共享资源时,为了避免数据不一致或冲突,需要对共享资源进行加锁,确保同一时间只有一个节点可以对资源进行操作。原创 2023-04-10 16:04:46 · 109 阅读 · 0 评论 -
redis实现分布式的方法总结
SETNX当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。expire为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。deletedelete key删除key。原创 2019-09-01 17:21:47 · 377 阅读 · 1 评论 -
Redis的基础命令集详解
以下是按照Redis中的数据类型分类的基础命令集。原创 2024-04-01 09:07:49 · 471 阅读 · 0 评论 -
Sentinel原理及实践
除了流量控制以外,及时对调用链路中的不稳定因素进行熔断也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,可能会导致请求发生堆积,进而导致级联错误。Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。原创 2024-03-29 14:56:35 · 1391 阅读 · 6 评论 -
HSF:阿里RPC框架
HSF(High-speed Service Framework)是一种广泛应用于阿里巴巴内部的分布式RPC服务框架。作为阿里巴巴的基础中间件,HSF连接了不同的业务系统,解耦了系统间的实现依赖。HSF从分布式应用的角度统一了服务的发布和调用方式,从而帮助用户方便快速地开发分布式应用,并提供或使用公共功能模块。它屏蔽了分布式领域中的各种复杂技术细节,如远程通信、序列化实现、性能损耗以及同步/异步调用方式的实现等。原创 2024-03-28 17:15:51 · 2451 阅读 · 0 评论 -
分布式唯一ID设计方案
方法获取下一次的时间,从而脱离了对服务器时间的依赖,也就不会有时钟回拨的问题。自增策略,数据库进行水平拆分,每个数据库设置不同的初始值和相同的自增步长。自增策略,数据库进行水平拆分,每个数据库设置不同的初始值和相同的自增步长。用完之后再去数据库获取新的号段,可以大大的减轻数据库的压力。来获取时间并与上一次时间进行比较,这样的实现严重依赖服务器的时间。阈值,认为当前系统时间准确,正常启动服务,同时写临时节点。① 不依赖于数据库,灵活方便,且性能优于数据库。实例启动的时候,往这个表中插入一行数据,得到的。原创 2021-07-31 21:18:43 · 526 阅读 · 0 评论 -
Kafka学习(一)Kafka的简介
Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。原创 2021-05-18 14:44:43 · 303 阅读 · 8 评论 -
解决分布式系统session一致性
适用场景:一、引言1.什么是sessionSession 是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。最常见的,会把用户的登录信息、用户信息存储在 session 中,以保持登录状态。2.session的创建在会话开始时,分配一个唯一的会话标识 SessionID(sessionid 是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个 sessio...转载 2019-09-03 18:08:19 · 251 阅读 · 0 评论 -
Netty简介及使用
当相应的事件发生时,我们的处理程序的每个方法都会被调用。因此,我们在添加处理程序时初始化缓冲区,在接收新字节时用数据填充它,并在获得足够数据时开始处理它。Netty 使用事件驱动的应用程序范例,因此数据处理的管道是通过处理程序的事件链。正如我们上面提到的,我们可以使用 Netty 创建通道处理管道。在这里,我们定义入站和出站处理程序,它们将以正确的顺序处理请求和输出。的实现,当缓冲区中没有足够的数据用于读取操作时,该实现会引发异常。由于我们在单独的处理程序中进行了解码和编码,因此我们需要更改我们的。原创 2019-09-01 10:15:38 · 691 阅读 · 1 评论 -
zookeeper介绍
针对 Master 选举的需求,通常情况下,我们可以选择常见的关系型数据库中的主键特性来实现:希望成为 Master 的机器都向数据库中插入一条相同主键ID的记录,数据库会帮我们进行主键冲突检查,也就是说,只有一台机器能插入成功——那么,我们就认为向数据库中成功插入数据的客户端机器成为Master。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。原创 2019-09-01 10:13:04 · 213 阅读 · 1 评论 -
京东JSF序列化问题
早上来上班,突然值班群里有人报问题,说店铺属性在JD App前端显示错乱了。打开App,点开一个店铺查看,问题复现。打开内部店铺信息查询系统,发现查出来的属性确实有一部分错乱了。OMG~线上bug来了。查看JONE系统,发现昨晚有人加班上线了新功能,甭问,肯定是这次上线造成的问题。尝试回滚一台线上机器,问题解决。来吧,全量回滚吧!悲催的绩效啊~原创 2019-09-21 11:24:23 · 578 阅读 · 2 评论 -
RPC框架Dubbo与JSF
背景 Dubbo是阿里巴巴开源的一个高性能优秀的服务框架现(已加入Apache项目中),使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。京东也有一个基于这样的框架做了定制和改进的JSF,那我们为什么要提出这样的一个RPC框架呢?互联网架构演变 孟子云:“颂其诗,读其书,不知其人可乎,是以论其世也。”讲的使我们要透...转载 2019-08-29 22:25:34 · 1114 阅读 · 0 评论 -
dubbo介绍和原理
1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架。既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用。我简单画个对比图说明(图1看到图2。画板画的,勿喷)。你想一下,以前什么的都在一个服务器上,调用方法直接就自然而然调用了,没啥问题。现在因为需求增多拆分了这么多个,部署在不同的服务器上,那是不是相对以前都在一个服务器上,现在分布式后,web层调用service层的服务变成了远程调用?那怎样像以前那样都在一个服务器上自然而然调用方法呢。原创 2019-08-28 22:24:06 · 166 阅读 · 1 评论