微服务
文章平均质量分 89
微服务开发,从零开始学习
不断前进的皮卡丘
你有多努力的现在,就会有多无惧的未来。加油吧,少年!
展开
-
SpringBoot+OSS实现文件上传
spring boot+oss实现文件上传原创 2024-07-06 18:33:24 · 434 阅读 · 0 评论 -
Docker基础入门
我们平时需要关注各种版本的迭代,不同版本环境的兼容问题,可能某个代码在A的系统可以运行,但是在B的系统就无法运行,因为它们的环境配置可能是不一样的,这样就会很麻烦。:::infoDocker发展迅速的原因是因为它给出了一个标准化的解决方案——系统平滑移植,容器虚拟化技术。不同主机的环境配置可能都不一样,如果每次换一台机器,我们都要重新配置环境,那么就会很麻烦。软件可不可以带环境安装呢?安装的时候,把原始环境一模一样的复制过来,开发人员利用Docker可以消除协作编码时"在我的机器上可正常工作"的问题。原创 2024-06-09 16:14:52 · 1546 阅读 · 2 评论 -
MybatisPlus学习总结
简介 | MyBatis-PlusMyBatis Plus是一个基于MyBatis的增强工具,它简化了MyBatis的使用,提供了一系列的增强功能,使开发更加方便快捷。无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用。原创 2024-03-28 20:20:29 · 1049 阅读 · 0 评论 -
SpringCloud Sleuth分布式链路请求跟踪
分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程!pring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkin(负责展现)Spring Cloud Sleuth实现了一种分布式的服务链路跟踪解决方案,通过使用Sleuth可以让我们快速定位某个服务的问题。简单来说,Sleuth相当于调用链监控工具的客户端,集成在各个微服务上,负责产生调用链监控数据。原创 2023-03-26 22:14:20 · 2408 阅读 · 10 评论 -
Spring Cloud:网关Gateway
不同的微服务一般来说会有不同的网络地址,客户端在访问的时候,如果需要记住这些地址的话,其实是很复杂的,而且也很难进行维护客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度在某些场景下存在跨域请求的问题加大身份认证的难度,每个微服务需要独立认证因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服 务网关。1、易于监控2、易于认证3、减少了客户端与各个微服务之间的交互次数API网关是一个服务器,是系统对外的唯一入口。原创 2023-01-25 22:58:38 · 2322 阅读 · 8 评论 -
Spring Cloud:服务熔断Hystrix
Hystrix是由Netflflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失 败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用 了设计模式中的“命令模式”。跳闸机制:当某服务的错误率超过一定的阈值时,Hystrix可以自动或手动跳闸,停止请求该服务 一段时间。资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。原创 2023-01-14 23:21:49 · 3506 阅读 · 1 评论 -
OpenFeign服务接口调用
Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如** Eureka、Ribbon 以及 Hystrix** 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Feign。Feign 对Ribbon进行了集成,利用 Ribbon 维护了一份可用的服务列表信息,并且通过轮询实现了客户端的负载均衡。原创 2023-01-03 16:51:02 · 2699 阅读 · 45 评论 -
Ribbon负载均衡服务调用
Ribbon是 Netflflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。原创 2022-11-24 14:30:34 · 1489 阅读 · 9 评论 -
Eureka服务注册与发现
注册中心可以说是微服务架构中的"通讯录",它记录了服务和服务之间地址的映射关系。在分布式架构中, 服务会注册到这里(注册中心),当服务需要调用其它服务时,就这里找到服务的地址,进行调用。到底什么是服务治理?SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂、所以需要进行服务治理,管理服务与服务之间依赖关联,以实现服务调用,负载均衡、容错等,实现服务发现与注册。原创 2022-11-11 15:37:12 · 4156 阅读 · 59 评论 -
SpringCloud入门案例
com.zyh.springcloud.controller.PaymentControllercom/zyh/springcloud/service/PaymentService.javacom/zyh/springcloud/service/impl/PaymentServiceImpl.javacom/zyh/springcloud/mapper/PaymentMapper.java (将cloud-provider-payment8001工程下的entities包下的两个实体类复制原创 2022-11-04 10:15:59 · 1916 阅读 · 5 评论 -
Spring Cloud基本介绍
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。原创 2022-10-24 16:25:19 · 3641 阅读 · 30 评论 -
Spring Cloud:微服务基础知识
而且,我们应尽量避免统一的、集中式的服务管理机制,对具体的一个来说,应该要根据业务上下文,选择合适的语言、工具来进行构建。在企业发展的初期,一般公司的网站流量都比较小,只需要一个应用,将所有的功能代码打包成一个服务,部署到服务器上就能支撑公司的业务。随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,对于容量的评估,小服务资源的浪费等问题比较严重。原创 2022-10-21 20:01:53 · 8324 阅读 · 72 评论 -
RabbitMQ:发布确认高级
在application.properties全局配置文件中添加spring.rabbitmq.publish-confirm-type属性,这个属性有以下几种值。交换机收到两条信息,但是消费者只能消费一条消息,因为第二条消息的路由key和交换机的binding key不一样,也没有其他队列可以接收这条消息,所以就被丢弃了。正常运行结果如图所示,如果rabbitmq出现故障的话,那么结果是不会显示出来的,我们可以通过回调接口来监测运行结果。原创 2022-10-17 13:35:35 · 2325 阅读 · 18 评论 -
RabbitMQ:延迟队列
一般队列中的元素总是希望能够早点被取出来进行处理,但是延迟队列中的元素则是希望可以在指定时间内被取出和处理,延迟队列中的元素都是带有时间属性的。延迟队列就是用来存放需要在指定时间被处理的元素的队列延迟队列就是想要消息延迟一段时间后被处理,TTL可以让消息在延迟一段时间后变成死信。变成死信的消息都会被投递到死信队列中,这样的话,只要消费者一直消费死信队列里面的消息就可以了,因为里面的消息都是希望被马上处理的消息。原创 2022-10-17 13:29:17 · 2397 阅读 · 5 评论 -
rabbitmq入门
✨ rabbitmq入门1.工程搭建1.1步骤分析1.2创建工程1.3添加依赖2.编写生产者3.编写消费者4.入门案例总结5.AMQP5.1基本介绍5.2rabbitmq运转流程📃个人主页:不断前进的皮卡丘🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记🔥个人专栏:消息中间件专栏1.工程搭建1.1步骤分析官网https://www.rabbitmq.com/tutorials/tutorial-one-java.html需求:使用简单原创 2022-09-25 19:18:43 · 852 阅读 · 0 评论 -
RabbitMQ:简单模式(Hello World)
先来看看RabbitMQ架构图Broker:接收和分发消息的应用, RabbitMQ Server 就是 Message Broker: 出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似 于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出 多个 vhost ,每个用户在自己的 vhost 创建 exchange / queue 等Connection。原创 2022-10-01 15:24:25 · 906 阅读 · 1 评论 -
RabbitMQ:死信队列
队列中不能被消费的消息称为死信队列有时候因为特殊原因,可能导致队列中的某些信息无法被消费,而队列中这些不能被消费的消息在后期没有进行处理,就会变成死信队列,死信队列中的消息称为死信。应用场景:未来保证订单业务的消息数据不丢失,我们需要使用到RabbitMQ的死信队列机制,当消息消费发生异常的时候,我们就把消息投入到死信队列中,比如说用户买东西,下单成功后去支付,但是没有在指定时间支付的时候就会自动失效。死信队列,英文缩写:DLX。原创 2022-10-12 14:57:11 · 8504 阅读 · 77 评论 -
RabbitMQ:发布确认模式
生产者把信道设置成为confirm(确认)模式,一旦信道进入confirm模式,所有在这个信道上面发布的消息都会被指定唯一的一个ID(ID从1开始).一旦消息被投递到所有匹配的队列以后,broker就会发送一个确认给生产者(包含ID),这样使得生产者知道消息已经正确到底目的队列了。如果消息和队列是可持久化的,那么确认消息就会在消息被写入磁盘以后发出,broker回传给生产者的确认消息中delivery-tag包含了确认消息的序列号。原创 2022-10-09 15:00:48 · 2341 阅读 · 7 评论 -
RabbitMQ:路由模式
在路由工作模式中,我们需要配置一个类型为direct的交换机,并且需要指定不同的路由键(routing key),把对应的消息从交换机路由到不同的消息队列进行存储,由消费者进行消费。P:生产者,向交换机发送消息的时候,会指定一个routing keyX:Exchange(交换机),接收生产者的消息,然后把消息传递给和routing key完全匹配的队列C1:消费者,它所在队列指定了需要routing key为error的信息。原创 2022-10-06 15:24:19 · 4040 阅读 · 7 评论 -
Spring整合RabbitMQ
RunWith注解的作用:让测试在spring容器环境下执行,如果测试类没有这个注解,会导致service,dao等注入失败。在resources目录下面创建rabbitmq.properties属性配置文件。在resources目录下面创建rabbitmq.properties属性配置文件。原创 2022-09-27 15:19:59 · 1217 阅读 · 6 评论 -
RabbitMQ工作模式
多个消费者共同消费同一个队列中的消息,可以实现快速消费,避免消息积压,但是多个消费者消费队列的消息的时候,是互斥的,同一个消息只能被一个消费者消费,不可以被多个消费者消费。应用:对于一些任务比较多的情况,使用工作队列可以提高任务处理的速度P:生产者,向交换机发送消息的时候,会指定一个routing keyX:Exchange(交换机),接收生产者的消息,然后把消息传递给和routing key完全匹配的队列C1:消费者,它所在队列指定了需要routing key为error的信息。原创 2022-09-26 15:18:27 · 1626 阅读 · 3 评论 -
RabbitMQ:Topics主题/通配符模式
Topic类型与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert通配符规则:#:匹配0个或者多个词*:刚好可以匹配一个词。原创 2022-10-07 22:46:48 · 1601 阅读 · 3 评论 -
RabbitMQ:工作队列模式
任务队列)背后的主要思想是避免立即执行资源密集型任务并等待其完成。相反,我们将任务安排在以后完成。我们将_任务_封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当您运行多个工作线程时,任务将在它们之间共享。这个概念在 Web 应用程序中特别有用,因为在 Web 应用程序中,不可能在较短的 HTTP 请求窗口中处理复杂的任务。原创 2022-10-03 14:43:24 · 3952 阅读 · 53 评论 -
RabbitMQ:发布订阅模式
P:生产者,发送消息给交换机C:消费者,接收消息X:交换机,一方面接收生产者发送的消息,另一方面知道怎么处理消息,是否应将其附加到特定队列?是否应将其附加到多个队列中?或者它应该被丢弃。其规则由交换类型定义。Queue:消息队列,接收消息,缓存消息每个消费者都监听自己的队列生产者把消息发送给broker,然后交换机把消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。原创 2022-10-06 14:39:22 · 3747 阅读 · 1 评论 -
消息中间件概述
MQ(Message Queue),消息队列(MQ)是一种应用程序对应用程序的通信方法消息队列是一种先进先出的数据结构消息传递:指的是程序直接通过消息发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是拥有远程调用的技术不同进程之间传递消息的时候,两个进程之间耦合度过高,一个进程的改变就会引发另外一个进程的改变。为了让它们不会互相干扰,我们需要在两个进程之间抽离出一个模块,两个进程之间传递的消息通过消息队列来传递。单独修改某一个进程不会影响另外一个。原创 2022-09-24 14:38:51 · 1061 阅读 · 0 评论 -
rabbitmq安装
(根据自身需求及匹配关系,下载对应rpm包)rabbitmq-server-3.8.1-1.el7.noarch.rpm。链接:https://pan.baidu.com/s/1S31oVSB-ki_FjQZinsIvjw?可以采用yum安装方式:yum install socat,我们这里采用rpm安装方式。rabbitmq安装依赖于socat,所以需要下载socat。在安装rabbitmq之前需要先安装socat,否则,报错。(根据自身需求及匹配关系,下载对应rpm包)原创 2022-09-25 11:32:24 · 613 阅读 · 1 评论 -
Nginx配置——负载均衡
浏览器地址栏输入地址 http://xxx/edu/a.html,负载均衡效果,平均 8080和 8081 端口中。对nginx的配置文件进行修改。原创 2022-09-22 15:38:27 · 1067 阅读 · 2 评论 -
Nginx配置实例——反向代理
然后通过xftp连接Linux,在tomcat8080安装目录下的webapps中新建文件夹edu。同样,在tomcat8081安装目录中的webapps创建新的文件夹,然后传输文件。修改完nginx的配置文件以后,记得重新加载一下nginx的配置文件。然后把压缩文件分别解压到这两个目录下(参照前面的演示)然后向edu中传输文件。原创 2022-09-22 12:46:53 · 1554 阅读 · 0 评论 -
Nginx常用命令和配置文件
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。原创 2022-09-22 08:46:09 · 327 阅读 · 1 评论 -
Nginx在Linux下的安装
安装成功以后,在usr中多出一个文件夹local/nginx,在nginx中有sbin启动脚本。然后这个时候,我们在浏览器输入Linux服务器地址就可以访问nginx。然后等一会,就会出现下面的截图。测试一下,看看安装是否成功。原创 2022-09-21 20:59:39 · 656 阅读 · 1 评论 -
Nginx基本介绍
Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。原创 2022-09-21 17:13:32 · 2235 阅读 · 4 评论 -
Redis哨兵模式
👀哨兵是一个分布式系统,用来对主从结构中的每一台服务器进行监控,当出现故障的时候,通过投票机制来选择出新的master,并且把所有slave连接到新的master🔥哨兵有监控,通知(提醒),自动故障转移的作用1️⃣监控:不断的检查master和slave是否正常运行。master存活检查、master和slave运行情况检测2️⃣通知:当被监控的服务器出现问题的时候,向其他(哨兵、客户端)发送通知。原创 2022-09-21 13:38:22 · 1252 阅读 · 5 评论 -
Redis主从复制
在学习主从复制之前,我们先来了解一下什么是互联网的三高架构——高并发,高性能,高可用1️⃣高并发:通常指的是系统能够同时并行处理很多请求。2️⃣高性能:指程序处理速度非常快,所占内存少,cpu占用率低。高性能的指标经常和高并发的指标紧密相关,想要提高性能,那么就要提高系统发并发能力3️⃣高可用:通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。高可用注意如果使用单机,一旦挂机将导致服务不可用,可以使用集群来代替单机,一台服务器挂了,还有其他后备服务器能够顶上。🕶️。原创 2022-09-20 14:24:32 · 790 阅读 · 5 评论 -
Redis持久化
1️⃣在生活中,有时候我们在写文档的时候,可能遇到断电的情况,如果数据就这样消失了,我们肯定很崩溃,毕竟自己写了那么久,所以为了防止数据的意外丢失,我们要对数据进行持久化。2️⃣持久化:利用永久性的存储介质对数据进行保存,在特定的时间把保存的数据进行恢复的工作机制叫做持久化3️⃣client redis[内存] -----> 内存数据- 数据持久化–>磁盘快照(RDB):保存当前数据状态,快照形式,存储数据结果,存储格式简单,关注点在数据。原创 2022-09-18 08:06:55 · 2679 阅读 · 65 评论 -
猿创征文|Redis删除策略
📖上面讲的三种删除策略是基于数据库中key的有效时间有关的,如果说有新的数据要进入redis,但是内存不足怎么办?📖Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足。如果内存不满足新加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理存储空间。清理数据的策略称为逐出算法。📖注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行。当对所。原创 2022-09-13 15:06:47 · 992 阅读 · 5 评论 -
猿创征文|Redis事务问题
1️⃣redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。2️⃣一个队列中,一次性、顺序性、排他性的执行一系列命令3️⃣redis事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。4️⃣Redis事务的主要作用就是串联多个命令防止别的命令插队。原创 2022-09-11 09:26:02 · 1317 阅读 · 97 评论 -
SpringBoot整合Redis
Spring Boot Data(数据) Redis 中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子类,两个方法基本一致,不同之处主要体现在操作的数据类型不同,原创 2022-09-10 19:40:23 · 447 阅读 · 11 评论 -
猿创征文| Redis的发布订阅
redis的发布订阅原创 2022-09-10 19:38:13 · 373 阅读 · 4 评论 -
猿创征文|Redis配置文件介绍
LINUX后台进程也叫守护进程(Daemon),是运行在后台的一种特殊进程。但是后台进程的文件描述符依然继承于父进程,例如父进程shell,所以后台进程依然可以将信息输出到当前终端上,但是此时的后台进程同样是依附在终端下的,也就是父进程依然是shell。后台的进程拥有两种状态,运行与停止。对访问客户端的一种心跳检测(比如我们连接上redis以后,但是很长时间没有进行任何操作,我们可能以后也不进行操作了,redis就会进行心跳检测,看我们是否进行操作,如果没有进行操作,就结束连接),每隔n秒检测一次。原创 2022-09-10 19:37:32 · 361 阅读 · 1 评论 -
使用jedis模拟手机验证码发送
使用jedis模拟手机验证码发送。原创 2022-09-10 14:50:50 · 609 阅读 · 3 评论