分布式
文章平均质量分 69
分布式相关技术分享
【非典型Coder】
混迹IT行业十来年,拧过螺丝做过架构,当过讲师,闲暇之余写写文章~
展开
-
SpringCloud 远程调用——OpenFeign
1. 导入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>2. 开启 openFeign配置类或者启动类上添加注解,自动扫描已经定义好原创 2022-04-25 10:55:27 · 1035 阅读 · 0 评论 -
Reactor 和 Proactor 到底是什么玩意
网络编程中出了 IO 模型之外,另一个被经常提到的就是 Reactor 模型和 Proactor 模型, 其实这两个模型和 IO 模型有着重要的关系,看完本文你就知道了.如果你对 IO 模型还不清楚,请先移步下面的文章后再回头来看本文.《到底什么是IO》https://mp.weixin.qq.com/s/OkIajg8aDlkLtsE81NP5jQ在网络编程中,服务器设计的好坏直接影响到能支持的最大并发数,通常会考虑两种方式,一种是通过 线程的方式,另一种就是通过事件的方式.单线程网络通.原创 2022-03-03 16:34:44 · 649 阅读 · 0 评论 -
分布式问题解决模式
什么是分布式系统?分布式系统会带来什么问题?如何解决?带着这些问题,我们来聊一聊。原创 2022-01-28 14:42:05 · 3614 阅读 · 0 评论 -
Redis 的分区
为什么要分区分区是指把不同的 key 分发到不同的 redis 实例上,每个 redis 实例只存储 所有 key 的一个子集。分区的好处是能够支持更大的数据量,多个 redis 实例能够充分利用多核的优势。分区后带来的问题1. 同时操作多个 key 会比较复杂;2. redis 事务不再支持:跨 redis 实例的两个操作无法保证事务性。3. 伸缩节点比较复杂:redis cluster 在伸缩节点时可以自动 rebalance key ,但是 客户端和代理服务分区的方式就不能原创 2022-01-25 17:02:54 · 1400 阅读 · 0 评论 -
一致性 hash
分布式系统中,多个节点间实现请求的负载均衡,如果部分实例由于一些特殊的原因宕机或者需要扩容,这个时候就涉及到部分请求重新分发的问题。为了最小化请求重新分发,引入了一致性 hash 算法。先看下传统的 hash 算法解决请求分发问题的过程。hashhash 算法大家应该很熟悉了,就是将不定长的数据经过计算后输出定长的结果。如果在分布式系统中使用 传统hash 方法来分发请求,server = hash(key)%n这会带来两个问题: 一旦服务器节点数 n 发...原创 2022-01-24 11:00:55 · 496 阅读 · 0 评论 -
分布式一致性协议——Gossip
关于分布式一致性问题我已经在之前《分布式一致性协议——Raft》的谈到,还不清楚的朋友可以回头看一下。这篇文章将介绍另一种分布式一致性协议——Gossip。问题思考下,大规模集群时,如果还是采用 raft 协议,会不会有问题?根据上篇文章,我们知道 leader 会广播到 follower ,集群规模较大,势必会造成网络拥挤、网络超时等问题,无论从可用性还是性能角度考虑,都会存在问题。因为大规模集群需要考虑一下问题:1. 集群规模大,可靠性降低,即使出现部分网络问题,数据也应该能最终到达原创 2022-01-24 17:55:57 · 2781 阅读 · 0 评论 -
分布式一致性协议——Raft
面试大厂高薪职位,必问!!!原创 2022-01-21 16:13:45 · 1797 阅读 · 0 评论 -
RocketMQ 基础与高级
RocketMQ 基础与高级用法看过来,哪点没说明白的欢迎你指出来!!原创 2022-01-11 10:50:49 · 639 阅读 · 0 评论 -
微服务——限流、熔断、降级
微服务中——限流、熔断、降级你知道什么意思吗?原创 2022-01-07 10:51:32 · 1054 阅读 · 0 评论 -
分布式事务
分布式事务的解决方案是怎么演进的,XA、两阶段、三阶段提交是不是弄得很晕,这篇文章来一探究竟!!原创 2021-12-29 10:55:58 · 763 阅读 · 0 评论 -
Nginx + lua 实现网关认证、限流
Nginx + lua 实现网关认证、限流原创 2021-12-20 14:18:43 · 4878 阅读 · 2 评论 -
RMI 官方案例跑不起来?
RMI 案例跑不起来?不要急,带你趟一遍!!!原创 2021-12-14 11:17:44 · 370 阅读 · 0 评论 -
log4j2 漏洞模拟
lookup 功能log4j 提供了 lookup 功能,通过lookup 你可以在你的log4j 配置文件中添加你的变量值。最简单的你配置日志使用的日期格式 $${date:yyyy-MM} 就是通过datelookup 功能实现的。此外还有很多的lookup,比如 docker-lookup、env-lookup 等。lookup 功能使得日志的配置更加灵活,但是提供的Jndi lookup 却暴露了重大的漏洞。通过 jndi 你可以远程访问很多服务或接口。比如 ldap 、 RMI、...原创 2021-12-13 18:06:09 · 2699 阅读 · 0 评论 -
Eureka 集群搭建与踩坑
刚刚跑起来,趁着热,就写进了博客,记录下再这个过程踩过的坑:官方的文档指出配置HA关键:By default every Eureka server is also a Eureka client and requires (at least one) service URL to locate a peer. If you don’t provide it the service will run and work, but it will shower your logs with a l原创 2021-12-10 14:12:40 · 1006 阅读 · 0 评论 -
Eureka、Nacos、Zookeeper 谁更适合做注册中心
微服务体系中,注册中心是不可或缺的组件。承担了服务的管理(注册、发现)的重要职能。市场上有很多公司使用了不同的注册中心,比如 Netflix 的 eureka、Apache 的 zk、以及国产的 Nacos。但是大家有没有想一想这三个到底哪一个更适合做注册中心。Eurekaeureka 集群采用的是一种去中心化 peer to peer 的方式, 所有的实例都是对等的,不存在主从之分。充分保证了可用性,CAP 理论中取了 AP。Zookeeperzk 集群,有一个leader .原创 2021-12-09 15:41:12 · 5933 阅读 · 0 评论 -
内存屏障——缓存强一致性的编程接口
MESI 协议带来的问题,如何解决?答案就是本篇要介绍的内存屏障。原创 2021-12-08 10:12:20 · 180 阅读 · 0 评论 -
MESI 协议
概念MESI 协议是高速缓存一致性协议,是为了解决多 cpu 、并发环境下,多个 cpu 缓存不一致问题而提出的协议。 缓存行在任何时刻一定处于四个状态之一:Modified: 缓存行已经被修改,但是没有被写回主存;Exclusive: 缓存行与主存相同,并且是主存的唯一拷贝;Shared: 和主存系统,可能也存在于其他的缓存中,并不是主存的唯一拷贝;Invalid: 缓存行无效特点MESI 是一种基于回写(write-back)、缓存无效化(invalidate)的协议。.原创 2021-12-06 17:10:32 · 4040 阅读 · 1 评论 -
SpringCloud 整合 Seata
Seata 作为分布式事务的框架应用非常广泛,刚好最近公司的项目有用到,所以就写下本文以供参考。下面就带大家亲手搭建基于 SpringBoot + SpringCloud + Nacos + Seata 这样一套框架。服务见关系图如下:推荐大家用 Seata 1.4.2 版本,配置信息可以通过一个 dataId 在 nacos 上指定,省去了很多麻烦,并且不容易出错。1. 配置启动 seata-server修改 /conf/registry.conf 文件regist...原创 2021-10-21 17:28:51 · 5436 阅读 · 0 评论 -
SpringCloud 整合 Sentinel
Sentinel 是阿里开源的分布式流量哨兵,具有限流、熔断降级、服务监控等功能。下面介绍在 SpringCloud中的具体使用方式。1. 下载并启动 Sentinel 控制台服务java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar2. 引入起步依赖原创 2021-10-12 11:34:42 · 1664 阅读 · 0 评论 -
Redis缓存穿透解决方案—布隆过滤器
概念Bloom Filter(以下简称 BF)是一个空间高效率的概率型数据结构,用来确定一个元素是否是集合中一员。空间高效是指数据存储使用了 bit 的方式,相对来说比较紧凑,空间利用率较高。概率型是指查询时返回两种结果:“一定不在”和 “可能在”。原理本质就是bit 数组,初始化每个 bit 都是 0,添加一个元素时,会使用 n 个 hash 函数计算出 n 个值,每个值都是一个 bit 的位置,最后在 bit 数组中,将对应位的值置为1,这样每个元素都对应 n 个 bit ...原创 2021-07-31 22:50:02 · 236 阅读 · 0 评论 -
Redis 入门详细总结
概念首先看下官方的介绍:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker.Redis 是一种开源的内存数据结构存储,被用来作为数据库、缓存以及消息队列。数据结构 String List: 字符串集合,基于链表实现 Set:唯一、无序的字符串集合 SortedSet:和.原创 2021-07-31 21:59:32 · 133 阅读 · 0 评论