dream21st
这个作者很懒,什么都没留下…
展开
-
【微服务实战系列】Gateway整合Sentinel实现服务限流三种实现(硬编码,读取文件,从nacos中读取)
Gateway整合Sentinel实现服务限流三种实现(硬编码,读取文件,从nacos中读取)原创 2022-06-16 13:48:19 · 483 阅读 · 0 评论 -
【微服务实战系列】RestTemplate和Feign使用Sentinel限流熔断
本章节主要讲解了RestTemplate和Feign使用Sentine进行l限流熔断原创 2022-06-15 22:37:54 · 325 阅读 · 0 评论 -
【微服务实战系列】Seata的AT模式实现分布式事物
分布式事物根据追求的一致性程度及业务场景可以分为:强一致性、弱一致性、最终一致性。 强一致性:任何一次读都能读到某个数据的最近一次写的数据; 弱一致性:数据更新之后,如果能容忍的访问只能访问到部分或者全部访问不到,则是弱一致性; 最终一致性:不保证在任何时刻数据是完整的(状态一致),但是随着时间的推移,数据和最终达成一致(有一个时间度)。 AT模式是一种两阶段提交的策略,需要一个全局协调器来协调处理各个分支任务,是⽆侵⼊的分布原创 2022-06-14 08:44:29 · 550 阅读 · 0 评论 -
【微服务实战系列】 Seata单机及高可用集群安装(配置和注册中心采用nacos,数据保存到mysql)
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,其内部版本在阿里经济体内部一直扮演着应用架构层数据一致性的中间件角色,帮助经济体平稳的度过历年的双11,对上层业务进行了有力的技术支撑。经过多年沉淀与积累,其商业化产品先后在阿里云、金融云上售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助用户快速落地分布式事务解决方案。 官网地址:h原创 2022-06-13 23:10:17 · 422 阅读 · 0 评论 -
【微服务实战系列】 Spring Cloud Sleuth 和 Zipkin搭建分布式链路追踪
1 Zipkin下载和启动2 项目改造整合Zipkin和Spring Cloud Sleuth3 Zipkin数据持久化到Mysql4 Zipkin采用kafka收集数据5 Sleuth收集比率原创 2022-06-09 22:59:33 · 244 阅读 · 0 评论 -
【微服务实战系列】从数据库读取用户和认证信息jwt改造实现
上面的实现,将token都存储到了数据库里面,同时资源服务器每次请求都需要到认证服务器来授权和验证,如果请求量比较大,会消耗性能。这部分将进行jwt方式的改造,适合生产访问量大的场景,同时数据信息都是从数据库中读取。 将上述搭建的模块中的OauthServerConfiger的代码修改如下,代码中的修改主要是将JdbcTokenStore改成JwtTokenStore: 上述代码用到了一个自定义的Dream21thAccessTokenConvertor(AccessTok原创 2022-06-08 09:42:37 · 220 阅读 · 0 评论 -
【微服务实战系列】基于JdbcTokenStore搭建统一认证中心(使用mysql及mybaties-plus)
上面两个例子中的用户信息和认证信息都是写死到代码里面的,这样做显然是有问题的,因为用户和认证的clientId是可以变化的,这部分就是实现从数据库中读取认证需要的clientId和用户的相关信息。 新建项目模块micro-app-authserver-jdbc,该项目的pom.xml文件的代码内容如下,相比上面的两个认证模块,本部分增加了mysql数据库的连接和操作(mybaties-plus)的一些依赖: 编写OauthServerConfiger代码,原创 2022-06-07 21:21:14 · 230 阅读 · 0 评论 -
【微服务实战系列】基于JWT搭建认证中心(采用JwtTokenStore实现)
通过上一部分的讲解,我们实现了一个基于内存的存储的认证中心,细心的你可能已经发现,上面方式实现的认证,每次访问资源服务器的受限资源的时候,都要带着token先去认证中心认证(通过http的方式发送请求),认证通过之后才能正常访问资源。如果系统的访问量较⼤将会影响系统的性能。 可以采⽤JWT格式即可解决上边的问题,⽤户认证通过会得到⼀个JWT令牌,JWT令牌中已经包括了⽤户相关的信 息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法⾃⾏完成令牌校验,⽆需每次都原创 2022-06-07 11:09:24 · 513 阅读 · 0 评论 -
【微服务实战系列】搭建统一认证中心(认证和用户信息保存到内存中的实现方式)
创建模块成功之后,pom.xml中的内容如下: 编写OauthServerConfiger类,代码内容如下: 编写代码SecurityConfiger,代码内容如下: 项目启动类的代码如下: 项目的配置文件内容如下: 启动项目,项目启动成功之后,我们用postman来进行测试: 可以在postman中通过下面地址进行token的获取,http://127.0.0.1:9996/oauth原创 2022-06-06 22:46:23 · 809 阅读 · 0 评论 -
【微服务实战系列】Springboot Admin搭建和使用(服务下线发邮件和自定义服务下线操作)
本部分来实现SpringBoot Admin监控平台的开发,新建一个项目micro-app-springboot-admin。项目的pom.xml代码内容如下: 编写的配置文件的内容如下: 编写配置项目启动类: 启动项目,在浏览器上面打开http://127.0.0.1:9998/就会出现下面界面: 点击应用墙会到达下面界面 点击上面实例可以看到应用的一些详细信息: SpringBoot Ad原创 2022-06-05 21:55:45 · 585 阅读 · 0 评论 -
【微服务实战系列】GateWay全局过滤器GlobalFilter和局部过滤器GateWayFilter
GateWay网关过滤器,全局过滤器GlobalFilter,局部过滤器GateWayFilter原创 2022-06-03 22:38:19 · 1528 阅读 · 0 评论 -
【微服务实战系列】 GateWay从Mysql中加载动态路由代码实现
GateWay从Mysql中加载动态路由代码实现原创 2022-06-02 08:31:03 · 680 阅读 · 2 评论 -
【微服务实战系列】 GateWay动态路由Nacos配置实时生效代码实现
在nacos中增加和修改路由规则及时生效代码实现原创 2022-06-01 22:36:04 · 2049 阅读 · 4 评论 -
【微服务实战系列】gateway网关路由规则详解
Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul,它基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul。官⽅测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。Spring Cloud GateWay不仅提供统⼀的路由⽅式(反向代理)并且基于 Filter(原创 2022-05-31 16:46:25 · 2235 阅读 · 0 评论 -
【微服务实战系列】Feign使用详解
文章目录1 fallback的使用2 fallbackFactory的使用3 url的使用4 path的使用5 参数配置 Feign是Netflix开发的⼀个轻量级restful的HTTP服务客户端(⽤它来发起请求,远程调⽤的),是以Java接⼝注解的⽅式调⽤Http请求,⽽不⽤像Java中通过封装http请求报⽂的⽅式直接调⽤,Feign被⼴泛应⽤在Spring Cloud 的解决⽅案中。类似于Dubbo,服务消费者拿到服务提供者的接⼝,然后像调⽤本地接⼝⽅法⼀样去调⽤,实际发出的是远程原创 2022-05-30 23:24:31 · 397 阅读 · 0 评论 -
【微服务实战系列】Hystrix熔断器工作流程及HystrixCommand注解使用
1 Hystrix工作流程 Hystrix是由Netflix开源的⼀个延迟和容错库,⽤于隔离访问远程系统、服务或者第三⽅库,防⽌级联失败,从⽽提升系统的可⽤性与容错性。Hystrix主要通过以下⼏点实现延迟和容错: 1,包裹请求:使⽤HystrixCommand包裹对依赖的调⽤逻辑,通过添加@HystrixCommand对Hystrix控制; 2,跳闸机制:当某服务的错误率超过⼀定的阈值时,Hystrix可以跳闸,停⽌请求该服务⼀段时间。原创 2022-05-29 23:11:33 · 477 阅读 · 0 评论 -
【微服务实战系列】 Ribbon基本使用及负载均衡策略配置的两种方式
文章目录1 Ribbon基本使用2 Ribbon负载均衡策略2.1 通过配置文件修改负载均衡策略2.2 通过代码的方式修改负载均衡策略1 Ribbon基本使用 通常上我们讲的负载均衡⼀般分为服务器端负载均衡和客户端负载均衡。服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些软件或者硬件来进行负载均衡,他们根据⼀定的算法将请求路由到⽬标服务器处理。客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调⽤⽅在请求前通过⼀定的负载均衡算法选择⼀原创 2022-05-29 15:11:53 · 673 阅读 · 0 评论 -
【微服务实战系列】sentinel规则持久化到mysql
在上面讲的在nacos中配置规则,比较适合规则比较少、变动不是特别频繁的场景,因为在nacos中改规则毕竟不是特别直观,如果在sentinel控制台修改规则nacos中不会更新,重启后又要重新配置。所以本部分就是尝试将规则文件持久化到数据库。 在进行操作之前,需要下载sentinel的源码,本次下载的源码地址:https://github.com/alibaba/Sentinel/archive/refs/tags/1.8.1.zip。 下载源码成功之后,原创 2022-05-27 09:45:01 · 1208 阅读 · 0 评论 -
【微服务实战系列】sentinel规则数据持久化到nacos,修改nacos中配置可以动态修改sentinel规则
通过上面的学习,会发现目前Sentinel Dashboard中添加的规则数据都是存储在内存中,如果微服务停掉规则数据就消失,这样在⽣产环境下显然是不合适的。我们可以将Sentinel规则数据持久化到Nacos配置中⼼,让微服务从Nacos获取规则数据。 首先在项目pom.xml中增加下面依赖: <!-- Sentinel⽀持采⽤ Nacos 作为规则配置数据源,引⼊该适配依赖 --> <dependency>原创 2022-05-26 17:06:28 · 278 阅读 · 0 评论 -
【微服务实战系列】 SentinelResource注解使用详解
文章目录1 blockHandler使用2 blockHandlerClass的使用3 fallback的使用4 fallbackClass的使用5 defaultFallback的使用6 exceptionsToTrace使用7 exceptionsToIgnore使用 通过前面的学习我们知道,sentinel默认情况下只会把Controller层加入到资源池中,然而在实际的使用过程中,有时候对其他方法也需要进行控制,此时就可以使用到SentinelResource这个注解,当然在Con原创 2022-05-26 15:23:50 · 438 阅读 · 0 评论 -
【微服务实战系列】sentinel降级规则(慢比率调用、异常比例,异常数)
流控是对外部来的⼤流量请求进⾏控制的,熔断降级的视⻆是对内部问题进⾏处理。Sentinel 降级会在调⽤链路中某个资源出现不稳定状态时(例如调⽤超时、异常⽐例升⾼或者单位时间异常数较高),对这个资源的调⽤进⾏限制,让请求快速失败,避免影响到其它的资源⽽导致级联错误,进而导致整个系统的雪崩不可用。当资源被降级后,在接下来的降级时间窗⼝之内,对该资源的调⽤都⾃动熔断。 在Hystrix中有一个活动时间窗口的概念,在这个窗口后,有新的请求的话Hystrix会尝试调一下接口,如果原创 2022-05-25 16:45:11 · 542 阅读 · 0 评论 -
【微服务实战系列】 sentinel流控规则(关联限流,链路限流,流控效果Warm up,排队等待)
文章目录1 sentinel安装2 sentinel初体验3 sentinel流控规则3.1 流控模式之关联限流3.2 流控模式之链路限流3.3 流控效果之Warm up3.4 流控效果之排队等待1 sentinel安装 sentinel的下载地址https://github.com/alibaba/Sentinel/releases/download/1.8.1/sentinel-dashboard-1.8.1.jar。 下载完成后将下载下来的包上传到服务器,执行下面原创 2022-05-24 18:01:49 · 453 阅读 · 0 评论 -
【微服务实战系列】nacos作为配置中心使用
文章目录1 基本使用2 公共模块配置1 基本使用 nacos除了作为注册中心来使用,还可以作为配置中心来使用。对应nacos控制台上面的配置管理菜单。在这里我们新建一个项目模块micro-app-c。本项目只需要配置一个bootstrap.yml文件,文件的内容如下:spring: profiles: active: dev application: name: micro-app-c main: allow-bean-definition-ove原创 2022-05-23 14:12:45 · 271 阅读 · 0 评论 -
【微服务实战系列】 nacos作为注册中心使用
1 新增命名空间 在应用的开发过程中往往会使用多个环境,例如在开发的时候会使用开发环境(dev),测试就会使用测试环境(test),当然还有准生产(prepare environment)及生产环境(environment)。这样做的目的就是让不同的环境隔离开来,在nacos中我们可以通过新增命名空间来实现。 我们可以在nacos中选择命名空间,选中新建命名空间创建命名空间,具体的操作步骤在下图中可以看出。2 新建两个应用 在这部分我们创建两个应用实原创 2022-05-22 23:05:58 · 801 阅读 · 0 评论 -
【微服务实战系列】nacos在linux单机及集群安装
文章目录1 单机安装1.1 解压1.2 启动nacos1.3 查看启动日志1.4 登录nacos系统2 集群安装2.1 解压2.2 配置相关参数2.3 配置nginx1 单机安装 本次安装采用的版本是nacos1.4.2,下载地址:https://github.com/alibaba/nacos/releases/download/1.4.2/nacos-server-1.4.2.tar.gz。1.1 解压tar -zxvf nacos-server-1.4.2.tar.gz1.原创 2022-05-22 15:34:26 · 414 阅读 · 0 评论