分布式
文章平均质量分 91
我思知我在
内容简洁、更喜欢用图文并茂的方式展示文章内容
如果喜欢我就一键三连吧!!!
展开
-
Docker入门与实战
what 什么是docker?dockker就想它的logo一样,docker是一只大鲸鱼,然后每个镜像container就是对应的集装箱docker是一款用go语言开发的容器docker的核心思想就是隔离,通过隔离机制,既可以保障每个集装箱里面的东西是互不影响的,也可以将服务器的资源压榨到最大程度。what docker能干嘛?下图展示了没有docker的部署上线和有docker之后的部署上线差异:docker与虚拟机的区别VM与docker的区别:VM会虚拟出完整的操作系统(原创 2021-05-16 12:55:34 · 549 阅读 · 1 评论 -
Spring Cloud Gateway 原理与应用场景
why 为什么需要网关?如图可知:在常规没有网关的情况下,无法对多个服务进行统一的处理,比如我需要做统一的鉴权,这时候需要在每个服务上增加鉴权功能来达到目的,工作量大且不好维护在有网关的情况下,可以将所有的流量都达到网关,然后通过网关来对请求做统一的鉴权处理,非常方便what 网关的应用场景降低复杂性,如前台请求多个服务,可以通过网关进行简化鉴权(网关中重点):用户是否合法?有哪些权限可以请求哪些服务安全性:登录态鉴权,如果鉴权不通过,直接被打回去多协议适配,可以针对.原创 2021-05-09 22:17:20 · 3672 阅读 · 8 评论 -
Windows平台下的Redis集群搭建(简单有效)
1. 下载redisWindows版本下载:https://github.com/MicrosoftArchive/redis/tags然后进入目录执行命令redis-server.exe redis.windows.conf2. 设置6个节点在redis中必须要有3个master,每个master必须要有一个slave,所有是六个节点,通过复制的方式完成,如图每个节点修改的配置如下,端口号对应节点的端口号6379~6384:port 6379bind 127.0.0.1logfile原创 2021-04-05 22:59:31 · 939 阅读 · 0 评论 -
Spring Cloud Sleuth 实现原理源码解读
Sleuth如何实现自动配置?在spring boot启动时,需要执行自动配置类。sleuth自动配置类都在spring-cloud-sleuth-core.jar包的spring.factories文件中:# Auto Configurationorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.sleuth.annotation.SleuthAnnotationAuto原创 2021-02-21 21:27:38 · 2665 阅读 · 0 评论 -
Spring Cloud Sleuth+Zipkin 构建微服务链路跟踪系统
什么是链路跟踪系统?在微服务中,多个服务分布在不同物理机器上,各个服务之间相互调用。如何清晰地记录服务调用过程,并在出现问题的时候能够通过查看日志和服务之间的调用关系来定位问题,这样的系统就叫做链路跟踪系统。分布式服务跟踪系统主要由五部分组成:数据采集数据传输数据存储数据分析数据可视化为什么需要链路跟踪系统?在微服务出现服务调用过程慢、服务无法调用成功等问题,都需要用到链路跟踪系统来进一步排查问题,否则就是盲人摸象,无从下手。Spring Cloud SleuthSpring Cl原创 2021-02-20 22:45:47 · 3024 阅读 · 0 评论 -
Sentinel实现限流熔断及与Spring Cloud整合
相关文档Sentinel官方文档原创 2021-02-08 21:49:40 · 1701 阅读 · 2 评论 -
Spring Cloud Stream 构建消息驱动微服务
what(Spring Cloud Stream介绍)Spring Cloud Stream 是一个用于构建消息驱动的微服务应用程序的框架,是一个基于Spring Boot创建的、独立生产级的、提供消息代理的Spring应用。why多个微服务之间消息中间件实现消息流达到多服务交互的目的。how(架构实现)应用程序通过inputs或outputs来与Spring Cloud Stream中的Binder交互,通过配置绑定。Spring Cloud Stream的Binder负责与中间件交互。抽原创 2021-02-05 00:03:41 · 1557 阅读 · 0 评论 -
Spring Cloud Bus 消息总线实现配置自动刷新
why当微服务太多的时候,服务之间需要建立通信或一个服务的改变需要广播到所有其它服务,这时就需要有一个总线来承担对应的职责。whatspring cloud bus 是通过轻量消息代理连接各个分布的节点,就类似于单体应用中常说的消息总线。主要作用是在一个或多个应用之间建立通信频道。how主要通过AMQP消息代理作为通道来实现消息通信。应用场景配置中心:当git仓库配置修改的时候,能够自动通知到所有服务重新拉取最新配置…消息总线实现所有服务配置刷新整体架构开始之前,我们先来看下整体架原创 2021-02-02 22:30:59 · 1936 阅读 · 0 评论 -
Spring Cloud Config 实现配置中心及自动刷新
why微服务数量多,修改配置需要重启服务或无法集中统一修改,所以有了spring cloud config,同类型的还有360的QConf、淘宝的diamond、百度的discon都是解决配置集中管理的问题whatspring cloud config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端、客户端两部分如何实现配置中心?这里我们选择将配置保存在github中,让spring cloud config去读取github仓库中的配置。核心功能集中管理各个环境的配置文件原创 2021-02-01 22:49:04 · 2252 阅读 · 0 评论 -
常用的四种限流算法图解
会使用分布式,那么就说明业务量是较大的,如果不对流量进行限制,很大几率就导致高峰期时机器宕机。而常用的限流算法有四种,这也是所有限流框架实现限流的基础,接下来就通过本文来认识下它们。计数器限流算法计数器是限流中最简单的,规定为:在指定周期内累加访问次数,当访问次数达到设定的阈值时,出发限流策略,当进入下一个时间周期时会将访问次数清零优点:实现简单临界问题:如图所示,当在8-10秒和10-12秒内分别并发500,虽然没有超过阈值,但如果算8-12秒,则并发数高达1000,已经超过了原先定义的10.原创 2021-01-25 21:31:45 · 2750 阅读 · 0 评论 -
微服务治理之Eureka--源码浅析
Eureka集群项目介绍原创 2021-01-14 22:50:55 · 1863 阅读 · 0 评论 -
服务治理之Eureka--基本介绍
术语CAP什么是Eureka?为什么需要Eureka?Eureka拥有哪些能力?如何使用Eureka?五种服务治理技术对比原创 2021-01-12 21:59:19 · 2384 阅读 · 0 评论 -
微服务架构基本介绍与微服务设计模式
微服务与传统单体服务单体服务一个项目中包含了所有的服务叫做单体服务优点:开发简单,对技术栈要求不高部署、运维方便,只需要对一台机器、一个服务进行部署、运维服务监控、问题排查简单,只需要对一台机器的监控与日志分析缺点:可以对多个模块化组件的整体JVM进程进行水平扩展,而无法单独对某个模块化组件进行水平扩展当仅修改某个模块时,需要所有模块进行编译、打包和上线模块间相互依赖、相互耦合微服务微服务是把每一个职责单一的功能放在独立的服务中,且每个服务运行在一个单独的进程中,每个服务都原创 2021-01-10 16:49:50 · 2785 阅读 · 0 评论 -
Dubbo 源码解析--限流
TPSLimiterTPSLimiter用于服务提供者,提供限流功能配置方式:源码分析:主要涉及三个类:TPSLimiterDefaultTPSLimiterStatItem/** * 限制服务或特定方法的TPS(每秒事务数)。 * Service或method url可以定义<b>tps</b>或<b>tps.interval</b>来控制。默认使用{@link DefaultTPSLimiter} * 作为它的限制检查器。如果提供原创 2020-12-19 23:25:15 · 2829 阅读 · 2 评论 -
Dubbo 框架设计与源码解读(配置解析优先级、线程分配、负载均衡、容错方案)
整体框架设计图例说明:图中左边淡蓝背景的为服务消费⽅使⽤的接⼝,右边淡绿⾊背景的为服务提供⽅使⽤的接⼝,位于中轴线上的为双⽅都⽤到的接⼝。图中从下⾄上分为⼗层,各层均为单向依赖,右边的⿊⾊箭头代表层之间的依赖关系,每⼀层都可以剥离上层被复⽤,其中, Service 和 Config 层为 API,其它各层均为 SPI。图中绿⾊⼩块的为扩展接⼝,蓝⾊⼩块为实现类,图中只显示⽤于关联各层的实现类。图中蓝⾊虚线为初始化过程,即启动时组装链,红⾊实线为⽅法调⽤过程,即运⾏时调时链,紫⾊三⻆箭头为继承,原创 2020-12-19 18:51:09 · 3079 阅读 · 3 评论 -
Redis中数据结构和编码详细图解(应用场景及优缺点)
专业术语sds:simple dynamic string 简单动态字符串embstr:embedded sds string embstr编码的sdsRedis 对象结构Redis 五种对象类型每一个redis对象都用一个key进行存储,在redis对象中有对象类型和编码,对象类型和编码的对应关系如下:string 类型使用场景:底层数据结构:string 相关命令命令行含义set key value赋值key的值为valueget key获取原创 2020-12-08 23:29:06 · 3858 阅读 · 0 评论 -
RocketMQ事务消息从生产到消费原理详解(包括回查过程)
为什么需要事务消息?这里RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息优点:系统解耦:消息之间独立存储,系统之间消息完成事务复杂度低,实现简单缺点:一次消息需要发送两次请求(half消息+commit or rollback)业务中需要实现消息状态回查接口具体可以查看另一篇博客:分布式事务2PC、3PC、TCC、RocketMQ事务消息方案详解与对比(详细图解)基本流程这是官网的一张事务消息图,基本画得很详细了,配合源码看还原创 2020-11-24 23:30:44 · 4945 阅读 · 0 评论 -
RocketMQ消息存储结构分析及相对于Kafka的优势
在RocketMQ中,消息存储是由CommitLog和ConsumerQueue配合完成消息存储结构首先我们先来看下整体的消息存储结构基本过程:生产者在生产消息的时候是将消息存储在CommitLog文件中消费者在读取消息时,先读取 ConsumeQueue,然后再通过ConsumeQueue中的位置信息读取CommitLog文件中具体的消息数据得到原始消息。这里有两个需要注意的地方,CommitLog和ConsumeQueue结构CommitLog可以理解这个其实就是一个日志文件,.原创 2020-11-22 13:24:38 · 3395 阅读 · 0 评论 -
RocketMQ如何保证消息顺序消费?又为何不解决消息重复消费问题?
消息的顺序消费对于业务系统来说非常重要,一笔订单产生了3条消息,分别是订单创建、订单付款、订单完成。消费时,必须按照顺序消费才有意义,与此同时多笔订单之间又是可以并行消费的。如何保证消息顺序消费?接下来我们通过订单的例子来展示RocketMQ如何保证消息顺序消费的:我们最容易想到的应该是如图这样,必须M1先消费后通知S2,M2才能够被消费问题是:M1、M2分别发送到S1、S2,这样就无法保证M1先到达MQ集群,也不能保证M1先被消费如果把多个需要顺序消费的消息都发送到同一个MQ Server.原创 2020-11-22 10:33:47 · 5695 阅读 · 0 评论 -
RocketMQ如何保证消息不丢失(消息可靠性)
为什么说ROcketMQ更适用于业务型的消息中间件,因为它能够保证消息不丢失且带有事务消息。先来看一张RocketMQ集群部署结构其中Name Server主要是提供路由信息,这里暂时忽略,大致流程为:Producer(生产者生产消息) --> Broker(存储消息) --> Consumer(消费消息)接下来我们通过这分析者三个节点来具体说明:Producer(生产者生产消息)默认情况下可以通过同步的方式发送消息,然后检查发送状态,如果是OK,就一定发送到了Broker,.原创 2020-11-18 22:31:17 · 5113 阅读 · 0 评论 -
RocketMQ在Windows环境下部署(亲测有效)
环境windows系统mavenJDK1.8(必须64位)部署步骤在Apache官网下载RocketMQ:http://rocketmq.apache.org/release_notes/release-notes-4.7.1/解压下载的文件并配置环境变量,变量名:ROCKETMQ_HOME 变量值:MQ解压路径(不能有空格)修改mqnamesrv.cmd、runbroker.cmd 中的JAVA_HOME为64为JDK,如果环境变量已经是64位JDK则忽略在runbroke原创 2020-11-17 22:04:43 · 3873 阅读 · 0 评论 -
Kafka 设计架构原理详细解析(超详细图解)
什么是Kafka?Apache Kafka是一个开放源代码的分布式事件流平台,成千上万的公司使用它来实现高性能数据管道,流分析,数据集成和关键任务等相关的应用程序。Kafka的应用场景构造实时流数据管道,它可以在系统或应用之间可靠地获取数据 (相当于message queue),特别是在集群情况下,多个服务器需要建立交流构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化)Kafka架构设计Produce原创 2020-12-06 18:39:17 · 12242 阅读 · 3 评论 -
RabbitMQ七种队列模式介绍与应用场景(通俗易懂)
七种模式介绍与应用场景简单模式(Hello World)做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B应用场景:将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人工作队列模式(Work queues)在多个消费者之间分配任务(竞争的消费者模式),一个生产者对应多个消费者,一般适用于执行资源密集型任务,单个消费者处理不过来,需要多个消费者进行处理应用场景:一个订单的处理需要10s,有多个订单可以同时放到消息队列,然后让原创 2020-12-01 22:13:12 · 5264 阅读 · 2 评论 -
RabbitMQ在Windows环境下部署(简单有效)
环境win10_x64安装步骤由于RabbitMQ服务器是用Erlang语言编写,所以我们需要先安装Erlang环境 OTP_win64_v22.2安装步骤默认就行在官方的git中下载指定的版本,我们这里是3.7.14 RabbitMQ_v3.7.14安装步骤按照默认就行,无需其它注意事项安装延迟队列插件rabbitmq_delayed_message_exchange然后将解压后的.ez文件复制到RabbitMQ安装路径下的plugins按照完成RabbitMQ后进入路原创 2020-11-28 11:36:34 · 3797 阅读 · 0 评论 -
Redis RDB与AOF持久化详解
为什么要有RDB和AOF?Redis数据库基于内存储存数据,而内存的缺点就是当服务器挂掉了,数据就没了。所以Redis需要持久化来恢复数据,而持久化的方式就有RDB和AOFRedis 持久化RDB 持久化(snapshotting)把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。自动触发:在redis.conf配置文件中,有自动保存的默认配置:save 900 1 // 在900s内修改或写入一次,则保存sav原创 2020-12-09 22:35:47 · 2903 阅读 · 0 评论 -
Netty 基本介绍与核心组件(EventLoop、ChannelPipeline、ChannelHandler)
TCP 基础TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议连接:连接就是双方遵循约定,client、server相互了解,知道对方的信息并且保留地址、buffer、状态等信息的过程叫做连接字节流:流是一方发,另一方只需要读,收到的是一串01数字;而报文是发送的一个字符串或其它一组数据,组合在一个包中进行发送滑动窗口:每次发送包的数量,当这一批(窗口内)的包发送完成,移动到下一个窗口,删除已发送的包三次握手:client向server发送请求,server响应ack,然后client收到原创 2020-12-10 22:46:28 · 3204 阅读 · 0 评论 -
Dubbo 基本介绍与项目搭建(SPI、泛化概念)
why-为什么需要Dubbo?单一应用架构 --> 垂直应用架构 --> 分布式服务架构 --> 流动计算架构 --> RPC单一应用架构:当流量很小时,只需要一个应用,所有模块都部署在一台服务器即可满足要求且开发、运维简单、数据库CRUD简单垂直应用架构当流量逐渐增大,单一应用的增加机器无法满足访问量需求,需要将应用进行垂直拆分为多个互不相干的应用,以提升效率。分布式服务架构当垂直应用越来越多,应用之间不可避免的要交互,将核心业务抽离出来作为独立原创 2020-12-19 11:42:25 · 2817 阅读 · 2 评论 -
雪花算法(snowflake)实现原理图解
snowflake是twitter的分布式环境生成全局唯一id的解决方案snowflake id组成分析snowflake-64bit分别有三部分(其中第一位保留位,暂时没用):第一部分:时间戳(毫秒级),这里为41bit第二部分:工作机器id,一般为==5bit数据中心id(datacenterId)+5bit机器id(workerId)==组成,10位的长度最多支持部署1024个节点第三部分:在相同毫秒内,可以产生2^12 个id,12位的计数顺序号支持每个节点每毫秒产生4096个ID序原创 2020-12-05 12:22:44 · 4366 阅读 · 0 评论 -
分布式事务2PC、3PC、TCC、RocketMQ事务消息方案详解与对比(详细图解)
这篇文章将介绍分布式事务中的多种实现方案,及各种分布式事务方案的实现原理、事务执行过程、优缺点,读完这篇文章相信你会对2PC、3PC、TCC、MQ事务消息有个详细的了解分布式事务的处理方法有哪些?XA协议:基于分布式事务协议,主要由事务管理器和本地资源管理器组成,事务管理器是一个全局调度者,负责本地资源管理器统一的提交或回滚事务。mysql、oracle均已支持XA协议2PC(两阶段提交)基本流程:Prepare预备阶段:预执行需要执行的sql,但不提交事务Commit提交阶段:提交.原创 2020-11-22 18:43:34 · 4208 阅读 · 0 评论