微服务
文章平均质量分 84
Fairy要carry
欲戴其冠,必承其重
展开
-
Sa-Token
类似于Security的认证授权的解决方案,但是使用起来非常方便,1.支持登录认证,授权权限验证,踢人;2.支持自定义Token,并且能够结合Redis完成前后端分离认证方案;3.支持单点登录(前端同域,后端同Redis+前端不同域,后端不同Redis+两者都不同)原创 2022-11-25 18:52:36 · 1804 阅读 · 0 评论 -
nacos和Apollo命名空间的使用
Spring Boot项目都有一个默认配置文件application.yml。在这里application.yml就等同于“application”的Namespace。对于90%的应用来说,“application”的Namespace已经满足日常配置使用场景了。原创 2022-10-24 14:12:41 · 845 阅读 · 0 评论 -
Apollo
一句话:Apollo集成了数据库+Eureka+版本控制+权限管理等配置中心保存到数据库中,Eureka作注册中心,版本控制可以作灰度发布nacos和apollo和eureka的比较nacos的部署方式与springcloud eureka不太一样,euraka是需要创建springboot项目,然后将euraka服务端通过gav的方式加载进来,然后部署项目。nacos是直接从阿里巴巴nacos的官网下载jar包,启动服务。原创 2022-10-24 01:23:37 · 973 阅读 · 0 评论 -
Sentinel的限流和GateWay的限流有什么差别(算法)
则采用了基于Redis实现的令牌桶算法由服务端决定生成token的速度,然后请求从令牌桶中获取token,这里面有个类似于Sentinel中流控效果中的warmup,生成token的速度会慢慢递增防止请求一下增大打死服务器。假设我们的窗口拆分成了3个小窗口,小窗口都是20秒,同样基于上面的例子,当在第三个20秒的时候来了100个请求,可以通过;指的是以一定速度往令牌桶里面丢令牌。,如果桶已经满了就不再加了(说明令牌桶算法和漏桶算法相反,漏桶算法是按照客户请求的数量往漏桶中加水的,而。...原创 2022-08-02 12:49:36 · 2665 阅读 · 0 评论 -
面试-SpringCloud常见组件和注册表结构+nacos
Nacos原创 2022-08-01 23:09:09 · 918 阅读 · 0 评论 -
nacos实战项目中的配置
像这种集群搭建,多个节点使用配置文件肯定是类似的,所以我们可以在配置中心读取我们的配置文件,或者说,利用变量分离的思想,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。nacos配置中心系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。bootstrap.yml可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。里面的配置的dataId是配置中心的一个节点。...原创 2022-07-29 17:27:34 · 1672 阅读 · 0 评论 -
Seata的几种事务模式
目录XA模式实现XA模式 AT模式 AT模式的脏写问题 其他事务不获取全局锁的一个情况(AT模式写隔离的实现)实现AT模式 TCC模式 TCC实现 提交成功:提交失败:第一阶段:RM资源管理器向TC事务协调者注册分支事务,然后发送执行sql(不提交)后的状态(失败/就绪),有利于保证ACID——>第二阶段:TC根据状态来判断是否要回滚,如果都成功就让RM事务管理器提交事务,如果失败就回滚;具有强一致性seata相当于是在RM上做了一层封装;XA模式优点:1.事务的强一致性,只要有失败的,TC事务协调者就会发原创 2022-06-11 01:41:08 · 1629 阅读 · 0 评论 -
分布式服务理论基础
目录前言微服务和分布式的区别CAP定理BASE理论 Seata流程:seata部署微服务集成seata 单体架构:1.项目过于臃肿,所有服务在一起,一个业务挂了,整个项目就不能用了;2.资源不能隔离,所有业务用一个资源,共享一个数据库,如果说一个业务突然增大——>导致数据库宕机了,那么其他业务就会受到影响;3.扩展不灵活,如果我们要对一个服务进行扩展,会将整个系统水平扩展;4.所有功能得一起上限,一起部署;分布式:1.数据一致性:我们先说有个最明显的案例:之前我们的单体架构中,数据库是多个服务共享的,所以事原创 2022-06-10 13:36:03 · 292 阅读 · 2 评论 -
授权规则以及Sentinel服务规则持久化
目录授权规则自定义异常结果 规则持久化实现Push模式 根据来源名称对请求进行拦截 ——>我们需要解析来源名称(RequestOriginParser默认解析都为default),所以我们要自定义一个实现类(根据请求头解析,给运行访问的来源+一个请求头) 防止绕过,请求我们的服务,对请求来源进行授权1.对于我们客户端请求过来的资源,服务需要进行判断是浏览器还是网关自定义实现RequestOriginParser请求解析器来获取请求的来源2.尝试在request请求头中加一个origin请求头,给网关加一个从原创 2022-06-02 20:37:13 · 428 阅读 · 1 评论 -
隔离和降级
回顾我们的限流——>目的:在并发请求的情况下服务出现故障,避免因为服务故障的出现而导致级联失败;所以说限流也就是对服务故障的一种预防措施(毕竟咱是先设置了,再请求的嘛);隔离和降级回顾雪崩:比如说服务之间的依赖,当服务C出问题而导致服务A调用不了时,如果大量请求涌入A服务调用C服务,此时会导致服务A中的资源被大量占用——>导致服务A宕机;解决——>我们采用线程隔离(舱壁模式),将服务A中的业务进行隔离,每一个业务分配线程池,比如说我请求A需要用到C服务,那么就只能占原创 2022-06-02 13:30:28 · 248 阅读 · 0 评论 -
Sentinel
微服务中的雪崩现象首先,我们介绍一下微服务中雪崩现象:因为微服务中服务是互相调用的,错综复杂,当一个服务D出现问题时,那么调用D的服务请求就会失败,当请求累积到一定的量时,请求D的服务也会出问题——>(因为我们内置的tomcat连接数是有限制的,如果一直请求那个失败的服务,当请求达到一定的数量),服务A也会炸掉,从而引起整个链路服务不可用;解决:超时处理我们可以设置超时时间,超过了就会返回错误信息,释放tomcat资源劣势:起到了缓解雪崩问题,当服务请求的时间比超时时..原创 2022-05-30 15:06:51 · 956 阅读 · 0 评论 -
SpringAMQP
介绍:好处:什么connection:消息队列的连接、channel:服务发送接收消息的通道、Queue:消息队列——>这些你都不需要自己编写入门案例:消息发送与消息接收消息发送package cn.itcast.mq.spring;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.amqp.rabbit.annotation.EnableRabbit...原创 2022-05-15 12:39:36 · 1139 阅读 · 0 评论 -
RabbitMQ入门-02
安装介绍运行镜像产生MQ容器进行访问:发布者Publisher会把消息->给到交换机,交换机路由给到指定的消息队列,queue把消息保存起来,然后消费者consumer会从queue将消息拿出来VirtualHost:各个虚拟主机是不一样的,相当于对操作进行分组——>不同用户访问是不同的虚拟主机,体现隔离性;常见消息模型HelloWorld简单队列模型...原创 2022-05-13 16:22:02 · 346 阅读 · 0 评论 -
初识MQ-01
目录同步调用:异步调用初识MQ同步调用:比如这里的支付服务,需要等待订单服务、短信服务...执行完毕才能执行,这样支付整个流程完毕需要500ms然后如果订单、仓储等其中一个服务挂掉了,那么支付服务请求请求不了,挂掉的服务越来越多,级联失败;——>服务提供者出现问题,那么整个微服务都会出现故障;资源浪费:消费者需要等待服务提供者响应,不能干其他事情只能干等;耦合度较高:每次加入新的需求,还需要动原来的代码——>比如:订单加了一个用户积分...原创 2022-05-12 22:38:26 · 413 阅读 · 0 评论 -
私有镜像仓库的搭建管理
# 1、拉取私有仓库镜像 docker pull registry# 2、启动私有仓库容器 docker run -id --name=registry -p 5000:5000 registry# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功# 4、修改daemon.json vim /etc/docker/daemon.json # 在上述文件中添加一个key,保存.原创 2022-05-12 13:06:41 · 422 阅读 · 0 评论 -
DockerCompose部署多个镜像
目录初始DockerCompose安装DockerComposeCompose部署微服务demo初始DockerCompose作用:快速部署多个容器,而无序一个个docker run介绍:DockerCompose是一个文本文件,里面通过指令定义了每个容器如何运行的下面是两种方式:不用端口是因为集群,自己访问就行了,所以端口不需要暴露;version:"3.8"services:mysql:image:mysql:5.7...原创 2022-05-11 22:51:22 · 4192 阅读 · 2 评论 -
Dockerfile自定义镜像
目录镜像结构什么是Dockerfile常见的镜像在DockerHub能找到,但是我们自己写项目得自己构造镜像;镜像结构作用:提高复用性,当应用需要更新时,不再是整个系统重装进行更新,而是对需要更新的部分进行更新,其他地方不动——>这就是分层的好处每做一次新的操作会产生新的一层简单来说,镜像就是在系统函数库、运行环境的基础上添加应用程序文件、配置文件,然后合并后+编写好的启动脚本(镜像运行的入口)一起形成的文件所以说,构建镜像,就是实现上述打包过程;...原创 2022-05-11 18:10:07 · 472 阅读 · 0 评论 -
Docker基本操作
练习:基于镜像创建容器,完成容器操作容器三种状态:运行、暂停、停止暂停:容器进程被储存起来,cpu不再调度,内存被保存起来停止:直接回收,直接kill掉当前进程,当重新生成时(start),是一个全新的进程命令:docker exec:进入容器执行命令docker logs:查看容器运行日志,一些比较细节的地方docker ps:查看运行的容器状态docker rm 指定容器:删除容器案例:创建并且运行Nginx容器使用指南:在Doc...原创 2022-05-11 15:12:07 · 641 阅读 · 0 评论 -
Gateway网关
作用:身份认证:用户能不能访问服务路由:用户访问到那个服务中去负载均衡:一个服务可能有多个实例,甚至集群,负载均衡就是你的请求到哪一个实例上去还一个请求限流功能:对请求进行流量限制,对服务进行请求限制;两种网关实现:流程:1.首先咱们先将服务以及网关注册到Nacos注册中心;2.然后用户请求,网关路由进行判断地址是不是以/user或者/order开头的,如果是,则跳转路由目标地址uri,然后请求地址则会代理到userservice或者是orderse...原创 2022-05-09 21:45:43 · 4863 阅读 · 2 评论 -
http客户端Feign
目录Feign注册使用Feign日志配置Feign性能优化Feign最佳实践怎样优化FeignClient与消费者服务之间的调用?因为FeignClient不在订单服务中了,所以是扫描不到它的,问怎样扫描?Feign注册使用Feign作用:用来代替RestTemplate,来调用远程服务的;Fegin内部集成了负载均衡ribbon使用步骤1.先在主启动类中加@EnableFeignClients,声明开启Feign,可以调用其他服务...原创 2022-05-08 14:15:45 · 768 阅读 · 0 评论 -
Nacos注册中心
目录Nacos服务搭建:配置搭建总结服务多级存储(给服务的实例配置集群):Nacos负载均衡-实现集群优先服务实例权重的配置nacos环境隔离Nacos和EureKa的总结区别:对服务配置文件进行更新场景:如何配置实现热更新:多环境(测试+开发+生产)配置共享1.先配置全局环境配置(支持多环境)2.分别在具体环境的配置文件和全局环境配置文件中增加属性配置3.在配置类中将这些新属性注入,并在控制器中获取json数据,看谁优先级更高Naco...原创 2022-05-07 01:57:44 · 3156 阅读 · 0 评论 -
微服务01-基本介绍+注册中心EureKa+Ribbon负载均衡
基本介绍服务集群:一个请求由多个服务完成,服务接口暴露,以便于相互调用;注册中心:每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务;配置中心:这些服务的配置我们都放在配置中心中配置,方便拉取配置信息,减少代码冗余;微服务优点:耦合度高,所有代码量放在一个里面,打包编译时间会很长,动一个模块中的代码,其他的可能会受影响;分布式架构:对功能进行拆分,每个业务作为独立的项目作为独立项目开发,称为一个服务;方便升级,修改;...原创 2022-05-06 14:10:03 · 458 阅读 · 0 评论