canal数据同步nosql
摘要:canal:水道/管道/沟渠,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,canal是一个伪装成slave订阅mysql的binlog,实现数据同步的中间件。 canal模拟MySQL slave交互协议,伪装为MySQL slave,向MySQL master发送dump协
阅读全文
posted @
2023-03-05 18:09
溪水静幽
阅读(56)
推荐(0) 编辑
分布式主键
摘要:分布式 ID特点 全局唯一性 - 不能出现重复的 ID 号 趋势递增 - 在 MySQL InnoDB 引擎中使用的是聚集索引,由于多数 RDBMS 使用 B-tree 的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能 单调递增 - 保证下一个 ID 一定大于上一个
阅读全文
posted @
2023-01-08 17:09
溪水静幽
阅读(132)
推荐(0) 编辑
幂等性
摘要:场景: 创建业务订单,一次业务请求只能创建一个; 单个订单请求调用支付接口,当遇到网络或系统故障请求重发,也应该只支付一次; 单个订单完成时,给用户发送消息应该只发一次; 在HTTP/1.1规范中幂等性的定义是:Methods can also have the property of "idemp
阅读全文
posted @
2022-09-04 16:47
溪水静幽
阅读(69)
推荐(0) 编辑
双写一致性
摘要:一致性就是数据保持一致,在分布式系统中,为多个节点中数据的值是一致的。 强一致性:要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 弱一致性:约束系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级
阅读全文
posted @
2022-06-13 09:27
溪水静幽
阅读(776)
推荐(0) 编辑
分布式ID生成方案
摘要:全局唯一ID就叫分布式ID,高可用低延时,ID生成响应要快。方案 UUID 数据库自增ID 数据库多主模式 号段模式 Redis 雪花算法(SnowFlake) UUID 本地生成无网络消耗,具有唯一性;无序的字符串,不具备趋势自增特性,长度过长16 字节128位,36位长度的字符串,存储以及查询对
阅读全文
posted @
2022-06-12 11:49
溪水静幽
阅读(255)
推荐(0) 编辑
秒杀系统
摘要:1、瞬时高并发 在秒杀时间点(比如:12点)前几分钟,用户并发量才真正突增,达到秒杀时间点时,并发量会达到顶峰。正常情况下,大部分用户会收到商品已经抢完的提醒,收到该提醒后,大概率不会在那个活动页面停留,如此一来,用户并发量又会急剧下降。所以这个峰值持续的时间其实是非常短的。 从以下几个方面入手:
阅读全文
posted @
2022-06-05 20:33
溪水静幽
阅读(211)
推荐(0) 编辑
API网关
摘要:API 网关是一个服务器,系统对外的唯一入口。API 网关封装系统内部架构,为每个客户端提供定制的 API。所有的客户端和消费端通过统一的网关接入微服务,在网关层处理所有非业务功能。API 网关并不是微服务场景中必须的组件,如下图,不管有没有 API 网关,后端微服务都可以通过 API 很好地支持客
阅读全文
posted @
2022-04-18 14:20
溪水静幽
阅读(159)
推荐(0) 编辑
MQ消息最终一致性解决方案
摘要:事务消息:实现了消息生成者本地事务与消息发送的原子性,保证消息生成者本地事务处理成功与消息发送成功的最终一致性问题。 1、事务消息与普通消息的区别就在于消息生产环节,生产者首先预发送一条消息到MQ(这也被称为发送half消息) 2、MQ接受到消息后,先进行持久化,则存储中会新增一条状态为待发送的消息
阅读全文
posted @
2022-04-09 22:54
溪水静幽
阅读(1321)
推荐(0) 编辑
分布式事务
摘要:分布式事务解决方案: X/Open分布式事务模型 X/Open DTP包含三种角色: AP: Application 表示应用程序 RM: Resource Manager 资源管理器,比如数据库 TM: Transaction Manager 表示事务管理器,协调事务和管理资源,类似于Spring
阅读全文
posted @
2022-04-06 11:37
溪水静幽
阅读(120)
推荐(0) 编辑
BASE理论
摘要:BASE理论是由于CAP中一致性和可用性不可兼得而衍生出来的一种新思想,BASE理论的核心思想通过牺牲数据的强一致性获得高可用性。 Basically Available(基本可用):分布式系统出现故障时,允许损失一部分功能的可用性,保证核心功能的可用。 Soft State(软状态):允许系统中的
阅读全文
posted @
2022-04-06 10:47
溪水静幽
阅读(412)
推荐(0) 编辑
伪共享
摘要:CPU缓存,越贴近CPU的缓存速度越快,容量越小,造价成本也越高,而高速缓存一般可以分为L1、L2、L3三级缓存,按照性能的划分:L1>L2>L3。 数据在缓存内部都是按照行来存储的,这就叫做缓存行。缓存行一般都是2的整数幂个字节,最为常见的缓存行的大小在64个字节。所以,按照这个存储方式,缓存中的
阅读全文
posted @
2022-04-02 11:50
溪水静幽
阅读(59)
推荐(0) 编辑
Leader-Follower线程模型
摘要:Leader-follower线程模型,其的出现是为了解决单线程接受请求线程池线程处理请求下线程上下文切换以及线程间通信数据拷贝的开销,并且不需要维护一个队列。 在Leader-follower线程模型中每个线程有三种模式,leader,follower, processing。 在Leader-f
阅读全文
posted @
2021-10-16 12:59
溪水静幽
阅读(282)
推荐(0) 编辑
限流算法
摘要:对于服务提供方,当请求量超出设定的限流阈值,则直接返回错误码/错误提示,并终止对请求的处理。 对于服务调用方:当并发请求超出了限定阈值时,要延迟请求,而不是直接丢弃。 计数器算法 计数器算法采用计数器实现限流,一般会限制一秒钟的能够通过的请求数,比如限流qps为100,实现思路就是从第一个请求进来开
阅读全文
posted @
2021-01-10 18:08
溪水静幽
阅读(45)
推荐(0) 编辑
微服务设计原则
摘要:微服务架构是一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、
阅读全文
posted @
2020-08-19 23:01
溪水静幽
阅读(464)
推荐(0) 编辑
MQ消息堆积
摘要:现在有一个在线的业务,突然量大了起来,消费端或者说下游系统突然处理不过来了,MQ出现了大量的消息堆积,业务写入MQ异常,有什么办法可以相对平缓得解决呢? 解决思路 从生产者端解决 一般系统容量或者处理能力都是规划好的,出现消息堆积的情况,大部分是由于流量暴增引起,这个时候可以考虑控制生产者的速率,对
阅读全文
posted @
2020-05-31 07:59
溪水静幽
阅读(598)
推荐(0) 编辑
HAProxy安装配置
摘要:负载均衡器对比(LVS VS Nginx VS Haproxy) LVS: 1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低 2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生 3、稳定性、可靠性好
阅读全文
posted @
2020-05-30 15:28
溪水静幽
阅读(86)
推荐(0) 编辑
分布式消息队列:如何保证消息的顺序性
摘要:顺序会错乱的俩场景: RabbitMQ:一个 queue,多个 consumer。比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操
阅读全文
posted @
2020-03-29 12:34
溪水静幽
阅读(1135)
推荐(0) 编辑
分布式锁
摘要:分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 为什么要使用分布式锁 所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理,而这个共享变量只是在这个JVM内部
阅读全文
posted @
2020-03-01 11:00
溪水静幽
阅读(172)
推荐(0) 编辑
服务的升级与降级
摘要:服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。 服务降级方式: 服务接口拒绝服务:无用户特定信息,页面能访问,但是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。 页面拒绝服务:页面提示由于服务
阅读全文
posted @
2018-12-22 11:59
溪水静幽
阅读(203)
推荐(0) 编辑
消息中间件企业级应用
摘要:众所周知,消息中间件是大型分布式系统中不可或缺的重要组件。使用简单,却解决不少难题,比如异步处理,系统藕合,流量削锋,分布式事务管理等。实现一个高性能,高可用,高扩展的系统。 消息中间件应用场景 异步处理 异步处理:调用者发起请求后,调用者不会立刻得到结果,也无需等待结果,继续执行其他业务逻辑。提高
阅读全文
posted @
2018-10-31 20:00
溪水静幽
阅读(183)
推荐(0) 编辑