分布式
文章平均质量分 79
qq_489366879
这个作者很懒,什么都没留下…
展开
-
Redis和数据库的数据一致性问题
在数据读多写少的情况下作为缓存来使用,恐怕是Redis使用最普遍的场景了。当使用Redis作为缓存的时候,一般流程是这样的。如果缓存在Redis中存在,即缓存命中,则直接返回数据如果Redis中没有对应缓存,则需要直接查询数据库,然后存入Redis,最后把数据返回一致性问题但是,在Redis的key值未过期的情况下,用户修改了个人信息,我们此时既要操作数据库数据,也要操作Redis数据。现在我们面临了两种选择:先操作Redis的数据,再操作数据库的数据 先操作数据库的数据,..原创 2022-04-21 14:24:32 · 719 阅读 · 0 评论 -
实现分布式锁的三种方式
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。在很多原创 2022-04-21 12:01:59 · 103 阅读 · 0 评论 -
浅谈如何解决MQ消息堆积的问题
MQ消息堆积是指生产者发送的消息短时间内在Broker端大量堆积,无法被消费者及时消费,从而导致业务功能无法正常使用。 消息堆积常见于以下几种情况:(1)新上线的消费者功能有BUG,消息无法被消费。(2)消费者实例宕机或因网络问题暂时无法同Broker建立连接。(3)生产者短时间内推送大量消息至Broker,消费者消费能力不足。(4)生产者未感知Broker消费堆积持续向Broker推送消息。 解决上述问题就要做到:(1)解决问题一,要做好 ...原创 2022-04-21 11:06:46 · 9862 阅读 · 0 评论 -
Skywalking — 微服务链路跟踪
微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。链路追踪介绍对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一系列问题。如何串联整个调用链路,快速定位问题? 如何澄清各个微服务之间的依赖关系? 如何进行各个微服务接口的性能分析? 如何追踪各个业务流程的调用处理顺序?Skywalking介绍Skywalking是一个国产的开源框架,2015年有吴晟个人开源.原创 2022-04-19 13:40:42 · 2270 阅读 · 0 评论 -
Canal原理及在缓存上的使用
1 什么是canal canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)2 canal使用场景-更新缓存 如果有大量的请求发送到mysql的话,mysql查询速度慢,QPS上不去,光查mysql可能会瘫痪,那就可以在前面加个缓存,这个缓存有2个主要的问题...原创 2021-11-18 16:55:15 · 1091 阅读 · 0 评论 -
Zipkin — 微服务链路跟踪
一、Zipkin 介绍Zipkin 是什么? Zipkin的官方介绍:https://zipkin.apache.org/ Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。分布式跟踪系统还有其他比较成熟的实现,例如:Naver的Pinpoint、Apache的HTrace、阿里的鹰眼Tracing、京东的Hyd原创 2021-08-05 17:20:45 · 195 阅读 · 0 评论 -
Sentinel-分布式服务架构的高可用流量防护组件
Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 特性:1 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。2 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚原创 2021-06-24 17:56:43 · 239 阅读 · 0 评论 -
Java-消息中间件使用场景
系统解耦假设你有个系统A,这个系统A会产出一个核心数据,现在下游有系统B和系统C需要这个数据。那简单,系统A就是直接调用系统B和系统C的接口发送数据给他们就好了。整个过程,如下图所示:但是现在要是来了系统D、系统E、系统F、系统G,等等,十来个其他系统慢慢的都需要这份核心数据呢?如下图所示:大家可别以为这是开玩笑,一个大规模系统,往往会拆分为几十个甚至上百个子系统,每个子系统又对应N多个服务,这些系统与系统之间有着错综复杂的关系网络。如果某个系统产出一份核心数据,可能下游无数的其他系统都需要原创 2021-06-24 16:29:14 · 460 阅读 · 1 评论 -
消息中间件-如何保证消息仅仅被消费一次?
消息中间件使用广泛,常用来削峰填谷、系统解耦、异步处理。异步处理可能是使用的最多的场景了,比如现在的技术博客网站,都采用积分制,用户发表一篇文章后,可以获取想要的积分,为了提升系统的性能,给用户加积分的操作可以异步处理,并不需要放在同步流程中。我们可以把用户ID,需要增加的积分封装成一条消息投递到消息系统中,异步处理加积分操作,由于这是发生在不同服务器之间,消息有可能投递失败、处理失败等问题,从而导致用户加积分失败,还有一种可能是消息重复投递,那么用户就有可能重复加积分,不管出现那种情况,都是不正常的情况原创 2021-06-24 14:56:05 · 388 阅读 · 0 评论 -
Java-RocketMQ事务消息
前言得益于MQ削峰填谷,系统解耦,操作异步等功能特性,在互联网行业,可以说有分布式服务的地方,MQ都往往不会缺席。由阿里自研的RocketMQ更是经历了多年的双十一高并发挑战,其中4.3.0版本推出了事务消息的新特性解决什么问题假设我所在的系统现在有这样一个场景:本地开启数据库事务进行扣款操作,成功后发送MQ消息给库存中心进行发货。有人会想到开启mybatis事务实现,把本地事务和MQ消息放在一起不就行了吗?如果MQ发送成功,就提交事务,发送失败就回滚事务,整套操作一气呵成。transactio原创 2021-06-24 14:32:56 · 195 阅读 · 0 评论 -
Java-消息架构的设计难题以及应对之道
概述在微服务开发中我们经常会引入消息中间件实现业务解耦,执行异步操作, 现在让我们来看看使用消息中间件的好处和弊端。首先需要肯定是使用消息组件有很多好处,其中最核心的三个是:解耦、异步、削峰。解耦:客户端只要讲请求发送给特定的通道即可,不需要感知接收请求实例的情况。异步:将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。削峰:消息中间件在消息被消费之前一直缓存消息,消息处理端可以按照自己处理的并发量从消息队列中慢慢处理消息,不会一瞬间压垮业务。当然消息中间件并不是银弹,引入消息原创 2021-06-24 14:21:22 · 246 阅读 · 0 评论 -
Java - Hystrix 原理与实战
背景分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。雪崩效应常见场景硬件故障:如服务器宕机,机房断电,光纤被挖断等。 流量激增:如异常流量,重试加大流量等。 缓存穿透:一般发生在应用重启,所有缓存失效时,以及短时间内大量缓存失效时。大量的缓存不命中原创 2021-06-23 11:33:26 · 544 阅读 · 1 评论 -
java-分布式事务
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因2.1、数据库分库分表当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理原创 2021-06-22 14:55:51 · 1952 阅读 · 0 评论 -
Nginx 集群环境搭建
Nginx是什么?Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。一直纳闷这个X是怎么来的在网上查了查原来X代表很牛逼的样子,Nginx就是代表一个非常牛逼的引擎服务器系统,在很多年以前记得都是用的apache来作为分流以及负载均衡的作用,在过了几年中一个俄罗斯人又开发了一个性能更高的服务器来处理客户原创 2017-04-28 01:07:31 · 362 阅读 · 0 评论 -
activemq 的几种基本通信方式
基础流程 在讨论具体方式的时候,我们先看看使用activemq需要启动服务的主要过程。 按照JMS的规范,我们首先需要获得一个JMS connection factory.,通过这个connection factory来创建connection.在这个基础之上我们再创建session, destination, producer和consumer。因此主要的几个步骤如下原创 2017-04-27 19:35:24 · 330 阅读 · 0 评论 -
【设计模式】—— 备忘录模式Memento
模式意图 这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复。 该模式还有跟多可以扩展的地方,比如可以记录多个时间的状态,每个角色都有可以扩展的空间,完全看业务场景而定。 应用场景 1 保存对象某一时刻的状态 2 避免直接暴露接口,破坏封装性模式结构Originator 是备忘录的发起者,记录状原创 2017-05-24 21:19:28 · 186 阅读 · 0 评论