【微服务笔记】
文章平均质量分 92
Spring Cloud和Spring Alibaba Cloud微服务相关笔记,包含Eureka、Ribbon、OpenFeign、Hystrix、Config、Gateway、Nacos、Sentinel等组件,源码获取在GitCode的【micro_service_code】仓库。
Mr.小朱同学
Java 开发工程师,从事 Web 应用程序的研发,擅长 Spring、SpringBoot 等技术。
热爱编程,业余时间学习新知识,通过 CSDN 记录学习心得和笔记内容。
展开
-
【微服务笔记24】微服务组件之Sleuth + Zipkin实现服务调用链路追踪功能
在微服务环境下,一个服务可能调用多个其他的微服务,调用的微服务有可能会去调用其他的微服务,依次类推,这样就会存在一个微服务的调用链,那么这种情况下,就会存在一个问题,当某个接口调用出现报错的时候,我们应该要怎么去排查问题???传统的方式就是:从第一个微服务开始,找到接口下一个调用的微服务,一个一个查找,这种方式虽然可以找到调用链路,但是却需要我们开发人员逐个定位,显然有些不合适。链路追踪:可以知道每一个请求的完整调用链路。性能分析:可以清楚的知道每一个微服务调用链路的耗时情况。原创 2023-04-27 14:21:50 · 1253 阅读 · 0 评论 -
【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程
这里主要是使用的Spring Cloud Netflix微服务组件搭建工程,其中需要搭建下面这些组件工程:注册中心:采用Eureka实现注册中心。配置中心:采用Spring Cloud Config实现配置中心。API网关:采用Spring Cloud Gateway作为网关。服务调用:采用OpenFeign实现服务之间的调用。负载均衡:采用Ribbon实现服务的负载均衡。原创 2023-04-27 08:51:37 · 1139 阅读 · 0 评论 -
【微服务笔记22】微服务组件之Sentinel控制台的使用(Sentinel Dashboard)
Sentinel提供了一个Dashboard控制台,通过控制台也可以实现服务熔断、服务降级、流量控制等规则的配置,并且这种可视化界面的配置方式更加的友好,不需要编写任何Java代码,可能这也是Sentinel的强大之处吧。首先需要去下载Sentinel Dashboard对应的应用程序Jar包【Sentinel控制台下载】,下载完成之后,直接打开CMD窗口,执行【javar -jar】启动应用即可。原创 2023-04-26 11:20:11 · 1728 阅读 · 0 评论 -
【微服务笔记21】微服务组件之Sentinel服务熔断、服务降级、流量控制介绍
Sentinel是Spring Cloud Alibaba提供的一个专门用于服务容错、服务熔断、服务限流的微服务组件,它和hystrix组件的作用是类似的,但是Sentinel提供的功能比hystrix更加强大,Sentinel分为两部分,一部分是Sentinel核心库,另外一部分是Dashboard控制台,Dashboard控制台可以查看监控的信息,接口的调用情况等。第一种:引入Sentinel核心库依赖,然后通过Java代码的方式编写流控规则。第二种:通过Dashboard控制台直接添加流控规则。原创 2023-04-25 17:56:38 · 2690 阅读 · 0 评论 -
【微服务笔记20】微服务组件之Nacos配置中心基础环境搭建、配置持久化、动态刷新配置
Nacos是Spring Cloud Alibaba微服务生态中,一个可以实现服务发现、配置管理的组件,也就是说Nacos同时具备了注册中心、配置中心的功能,和Spring Cloud Config的配置中心不同的是,Nacos实现的配置中心可以将内容保存在Git仓库里面,也可以将配置信息保存到MySQL数据库里面,默认情况下,配置信息是采用嵌入式的数据库保存的。原创 2023-04-22 18:00:39 · 812 阅读 · 0 评论 -
【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建
Nacos是Spring Cloud Alibaba微服务组件之一,因为Spring Cloud Netflix中有些组件停止更新维护了,所以Alibaba就基于Spring Cloud Netflix第一代微服务组件之上,开发出了自己的一套微服务组件,即:第二代微服务组件Spring Cloud Alibaba。Nacos就是Spring Cloud Alibaba中的一个组件,这个组件不仅具备了注册中心的作用,而且还具备配置中心的,此外Nacos提供了一个可视化的管理界面,可以方便的管理服务、服务配原创 2023-04-22 10:32:11 · 917 阅读 · 1 评论 -
【微服务笔记18】微服务组件之Gateway实现服务限流(计数器算法、漏桶算法、令牌桶算法)
令牌桶算法,是对漏桶算法的一个改进,它的思想是:对每次请求都需要获取一个令牌,只要拿到令牌的请求才能够继续执行,没有拿到令牌的请求,要么被阻塞,要么快速失败,令牌桶算法会有一个桶专门用于保存令牌,这个令牌会按照规则自动生成并放入令牌桶里面。原创 2023-04-20 14:36:51 · 1560 阅读 · 0 评论 -
【微服务笔记17】微服务组件之Gateway实现动态路由、配置路由规则、路由过滤器
前一篇文章介绍了Gateway服务网关的基础环境搭建,在基础环境中,我们的路由地址uri是直接在application.yml配置文件中写死的,这种方式不太灵活,因为一旦微服务的IP和端口改变,此时就需要修改Gateway工程中的配置文件,然后重新启动网关工程。为了解决能够让路由不依赖于具体的IP和端口,这里就需要实现一个动态路由的功能。动态路由,借助于eureka注册中心就能够实现,在Gateway工程中引入eureka-client客户端依赖,从注册中心获取微服务可用列表,根据微服务名称实现路由的配原创 2023-04-20 09:15:00 · 6305 阅读 · 0 评论 -
【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建
在微服务架构里面,会存在很多的微服务应用程序,这些服务集群部署在一起对外提供服务,一般实际开发中,都会通过一个公共的入口地址将微服务应用暴露给客户端,这个公共的入口将其单独作为一个微服务应用,这个应用程序就叫做:服务网关,常见的网关有:zuul、Gateway等,其中Gateway的出现就是为了替代zuul网关。基于网关,可以实现统一用户认证、统一权限校验、接口限流、服务降级、接口调用统计、协议适配等功能。第一种:nginx + Lua。第二种:Kong。第三种:Traefik。原创 2023-04-19 16:02:45 · 2869 阅读 · 0 评论 -
【微服务笔记15】微服务组件之Config配置中心实现用户认证、配置属性加解密
前面两篇文章主要介绍了如何搭建Config配置中心的运行环境,那种环境下,任意的用户都可以访问Config配置中心的配置文件,这在实际开发中是不允许的,容易导致安全问题,所以一般都需要进行用户认证操作,只有授予了访问权限的用户才能够访问Config配置中心。Config配置中心的配置属性,目前都是采用明文的形式保存在Git上面,但是针对一些隐私数据,实际开发中肯定是要进行加密存储的,这样可以避免因为配置文件泄露,导致安全问题。修改配置中心的password属性值,将其替换成非对称加密之后的密文内容。原创 2023-04-15 18:04:51 · 681 阅读 · 0 评论 -
【微服务笔记14】微服务组件之Config配置中心高可用环境搭建
前一篇文章介绍了Config配置中心基础环境的搭建,这种环境存在一个问题,那就是一旦Config Server服务端发生故障之后,那么整个微服务系统就将无法使用,也就是没办法实现微服务的高可用。如何解决Config配置中心的高可用问题呢???要解决Config配置中心的高可用性,可以结合Eureka注册中心实现。原创 2023-04-15 14:59:36 · 651 阅读 · 0 评论 -
【微服务笔记13】微服务组件之Config配置中心基础环境搭建
在微服务系统中,某一个微服务中,都具备一个application.yml配置文件,但是你可以发现,很多的微服务里面存在一些相同的配置内容,例如:连接的注册中心相关配置信息等等。假设现在我们的注册中心地址变了,那么就需要去某一个微服务项目中修改application.yml配置文件内容,然后重新启动某一个应用程序,这显然不太方便,所以为了解决这个问题,提出了配置中心的概念。原创 2023-04-13 21:46:32 · 900 阅读 · 0 评论 -
【微服务笔记12】微服务组件之Hystrix和OpenFeign结合使用
在实际开发中,Hystrix都是和OpenFeign组件一起结合使用的,OpenFeign组件中已经包含了Hystrix,但是默认情况下,OpenFeign是没有开启Hystrix的功能,我们需要在application.yml配置文件中手动的开启Hystrix的功能。原创 2023-04-13 12:20:48 · 1536 阅读 · 0 评论 -
【微服务笔记11】微服务组件之Hystrix服务监控的三种方式
Hystrix组件提供了服务监控的功能,它可以监控每一次接口的调用情况,并且提供了一些可视化的查看界面,有三种方式可以查看监控情况,分别是:1、使用 Actuator 方式查看监控。2、使用Hystrix提供的dashboard查看监控。3、使用Hystrix提供的turbine查看监控。原创 2023-04-12 22:20:13 · 865 阅读 · 0 评论 -
【微服务笔记08】微服务组件之Hystrix实现请求合并功能
微服务和微服务之间的调用,都是需要建立通信连接的,就拿HTTP接口来说,每一次的通信都需要建立和断开连接,如果微服务之间的调用非常频繁,那就会有很多的连接在建立和断开,为了减少请求连接的数量,Hystrix提出了请求合并的功能。请求合并,也就是将多个相同的请求合并成一个请求,然后只调用一次接口将所有的数据获取到,数据拿到之后,还需要将数据一次分发给合并之前的请求,这样每一个请求才能够正常的拿到属于自己的那一个返回结果。原创 2023-04-09 11:04:15 · 945 阅读 · 0 评论 -
【微服务笔记10】微服务组件之Hystrix实现服务降级和服务熔断
服务降级:发生在客户端侧,当某个微服务自身出现大量的请求,从而没办法处理过来的时候,这个时候可以采取某种策略,将那些不重要的请求直接中断,返回事先定义好的fallback方法(可以叫做兜底方法),这样就可以为那些核心业务接口提供更多的资源。服务降级是最简单的一种实现方式,那什么情况下会出发服务降级呢???第一种情况:当出现【HystrixBadRequestException】之外的异常时候,就会触发服务降级。第二种情况:当接口方法调用超时,触发服务降级。第三种情况:熔断器开启的时候。原创 2023-04-10 22:19:43 · 1364 阅读 · 0 评论 -
【微服务笔记09】微服务组件之Hystrix实现线程池隔离和信号量隔离
在一个微服务中,所有的接口如果都是运行在同一个线程池里面,那么如果其中某一个接口出现大量的请求,并且这个接口又没办法处理过来,这个时候服务就可能会出现资源耗尽的情况,从而导致整个服务崩溃。所以,Hystrix为了解决这个问题,提出了线程池隔离的方案,将不同的接口放到不同的线程池里面进行管理,并且不同的线程池互不干扰,这样即使其中一个线程池发生故障,也不会影响其他的线程池,也就降低了服务崩溃的可能性。原创 2023-04-09 20:32:28 · 2682 阅读 · 0 评论 -
【微服务笔记07】微服务组件之Hystrix实现请求缓存功能
在微服务环境下,服务和服务之间的调用可能会非常的频繁,如果某个微服务的请求非常多,并且这个微服务又无法处理过来,那么此时就可能导致这台服务器出现宕机的情况,一旦出现宕机,那么调用这个微服务的其他微服务系统,也将受到影响,微服务中的请求一直积压,就会导致所有的微服务系统发生崩溃,我们把这种情况称作是:服务雪崩。为了避免服务雪崩,以及提高微服务的高可用性,于是就出现了Hystrix服务容错组件,Hystrix提供了多种功能,例如:请求缓存、请求合并、线程池隔离、信号量隔离、服务降级、服务熔断、服务监控等等。原创 2023-04-07 21:47:47 · 678 阅读 · 0 评论 -
【微服务笔记06】微服务组件之OpenFeign配置信息及RequestInterceptor请求拦截器
@EnableFeignClients 注解:启用OpenFeign组件,可以设置一个扫描路径,这样在启动工程的时候,OpenFeign就会扫描工程中指定的包路径下,所有包含【@FeignClient】的类,将其作为OpenFeign客户端。这个注解中含有下面几个属性:原创 2023-04-05 09:13:21 · 3757 阅读 · 0 评论 -
【微服务笔记05】微服务组件之Ribbon负载均衡器组件介绍及其使用
上一篇文章介绍了OpenFeign组件,这个组件主要是用于实现微服务之间的调用,既然微服务之间可以调用了,那么问题又来了,假设在某个时间里面,微服务A的访问请求非常多,导致微服务A无法处理过来,从而导致微服务A宕机,对于这种情况,我们应该专门避免呢???对于上面这种情况,我们可以这样解决,既然一台微服务A无法处理那么多的请求,那如果是多台微服务A应用程序呢,这样子是不是就可以将请求平均分配到不同的微服务A机器上面,从而减少某一台微服务A的请求处理量,避免服务宕机情况的出现,这里介绍的思想就是:负载均衡。原创 2023-01-11 22:47:34 · 1592 阅读 · 1 评论 -
【微服务笔记04】微服务组件之OpenFeign服务调用组件的介绍及其使用方法
OpenFeign是Spring Cloud微服务中的一个服务调用组件和负载均衡组件,OpenFeign是起源于Feign的,Feign是最开始的一个服务调用组件,但是由于Feign组件的功能单一,并且它不能够和SpringMVC注解一起使用,所以这个时候就出现了OpenFeign,OpenFeign组件不仅可以很方便的使用SpringMVc注解实现服务的调用,而由于OpenFeign集成了Ribbon、Hystrix组件,所以OpenFeign也具备了负载均衡和服务熔断、服务降级的功能。原创 2023-01-07 22:38:04 · 988 阅读 · 0 评论 -
【微服务笔记03】微服务组件之Eureka注册中心高可用集群环境搭建
前面两篇文章,主要介绍了Eureka单机环境的搭建以及Eureka相关概念及其配置属性,这里在介绍一下如何搭建Eureka集群环境,实现微服务的高可用。首先要了解什么是集群和高可用这里个概念。前面搭建的Eureka的是只有一台注册中心的服务,也就是单机模式,这种模式有个缺点,那就是如果这台eureka注册中心宕机之后,那么整个微服务环境将全部不可用了,只能够重新启动Eureka注册中心以及所有的微服务应用。既然一台eureka注册中心不够用,那我们就多添加几台eureka注册中心呗,例如:这里添加三台原创 2023-01-03 14:23:29 · 940 阅读 · 1 评论 -
【微服务笔记02】微服务组件之Eureka常见的几个配置属性及其常见的几个概念
这篇文章,主要介绍以下Eureka注册中心中常见的一些配置属性及其含义,Eureka注册中心大致可以分为三部分的配置属性,分别是:instance、client、server三部分,下面分别介绍三部分的配置属性。服务注册、服务发现、服务续约、服务剔除、自我保护机制。原创 2022-12-31 19:06:11 · 1754 阅读 · 0 评论 -
【微服务笔记01】微服务组件之Eureka注册中心的介绍及其基础环境的搭建
微服务架构中,会有很多的服务,每个服务都有对应的IP地址和端口,以及相关的服务信息,这里就存在一个问题???就是服务A调用服务B的时候,怎么知道B的IP地址和端口信息呢???可以有多种解决方案,比如:将服务A的IP地址和端口,直接在服务B配置文件中写死,这样,调用服务的时候,通过配置文件就可以获取到IP和端口。上面这种方式不太灵活,如果服务A部署到另外一台机器上面,那么就需要修改服务B中的配置文件,这显然是不可取的方式。为了解决上面这种情况,于是就出现了注册中心???原创 2022-12-30 15:24:44 · 931 阅读 · 0 评论