今天给大家分享一个关于微服务架构的服务治理的话题。很多朋友可能会觉得自己玩过微服务架构,然后你可能听说过服务治理,但是服务治理到底是什么,有哪些东西,服务治理应该怎么做呢?这可能会不知所措。那么今天就和大家聊一聊这种微服务架构下的服务治理。单体架构首先说到微服务架构,我们先说说平时大家是怎么玩微服务架构的。其实很简单。之前没有微服务的时候,可能是SpringBoot+SSM架构。只写一个新的系统就可以了。使用SpringBoot创建jar包,然后将jar包部署到线上。安装好系统后,只需使用java-jar命令启动JVM进程,运行我们的代码即可。在使用SpringBoot时,对外接收Http请求的web服务器是内嵌的Tomcat,即基于main方法启动SpringBoot后,里面嵌入了一个Tomcat,Tomcat会对外监听一个端口号,然后我们就为该端口号发起一个Http请求就可以了。如下图所示:微服务架构那么我们这个时候的系统本质上是一个单体系统,那么升级到微服务架构应该是什么样子呢?从微服务的角度来说,就是将原来的单体系统拆分成很多服务,通过Nacos+Dubbo等服务注册中心和RPC框架来调用服务。五年前,业界普遍使用的微服务基础框架是Dubbo+Zookeeper的组合,而三年前,基本过渡到SpringCloud技术栈作为微服务架构。一两年前,业界基本上已经逐渐过渡到SpringCloudAlibaba技术栈,也就是使用Nacos作为服务注册中心,使用Dubbo作为RPC框架,所以我们就以SpringCloudAlibaba的Nacos+Dubbo组合为例.在微服务的情况下,也就是说让每一个服务都注册到Nacos中,然后这个服务需要调用其他的服务,通过Nacos进行服务发现,然后通过Dubbo进行RPC调用。如下图所示:就像这张图,其实就是很多服务互相调用,可以大致理解为微服务架构,因为我们的单块系统被拆分成了很多服务。那么,我们如何对这种微服务架构进行服务治理呢?服务治理的注册、发现和负载均衡首先要告诉大家的是,服务治理的第一件事其实就是服务的注册和发现。因此,通过Nacos进行服务注册和发现,就已经做好了服务。首先要做的是治理。好的,关于服务治理的第二件事是什么?其实就是负载均衡。这个负载均衡是什么意思?其实就是说我们的每一个服务都可以部署多台机器,有多个服务实例。那么一个服务可以发现另一个服务实例的多台机器,它应该调用哪一台呢?这时候,就不得不使用负载均衡算法了。使用算法找到一台机器,然后就可以为那台机器发起RPC调用。这个负载均衡的工作是Dubbo帮我们完成的。如下图所示:服务治理限流熔断接下来这个服务治理的第三件事就是限流熔断,分为两部分,因为限流是用来防止系统不堪重负的,熔断是用来防止系统被拖垮。先说限流,假设你的系统每秒最多只能抗1000个请求,结果这个时候每秒2000个请求来了,会怎么样?当然,它会让你的系统不堪重负,所以这个时候我们必须实施限流。如果每秒请求数超过1000,后面的所有请求都会直接返回禁止访问。如下图所示:然后说熔断。熔断就是说,如果你调用一个系统,系统挂了,那么你每次调用都失败,失败,每次失败你都要阻塞一段时间。你把自己累坏了吗?因此,此时必须使用断路器。如果发现一段时间内调用别人频繁失败,此时会触发熔断器。熔断后,每次请求过来都会直接报错返回。如下图所示:那么这个限流熔断谁来给你做呢?SpringCloudAlibaba中的Sentinel可以为你做这件事,所以他做了限流和熔断的工作。服务管理的下一个任务就是配置中心,也就是我们系统的配置,通常是放在src/main/rsource目录下的各种properties和xml文件中。但是如果想在系统部署完成后修改配置,只能在代码中修改配置,然后重新打包部署上线。这也太麻烦了吧?所以如果引入配置中心,系统的一些核心配置直接从配置中心动态加载,然后如果要修改配置,直接在配置中心修改即可。那么在线系统可以直接感知到最新的配置和使用,不需要每次修改配置都打包重新部署。配置中心的工作是Nacos帮我们完成的。如下图所示:服务治理的服务监控那么服务治理的最后一个环节就是服务监控。这个监控包括很多内容,比如监控部署在线上系统中的每台服务器的CPU、内存、磁盘、网络、IO等。以及监控线上系统的JVMGC,包括监控线上系统各个接口的QPS和延迟。同时也可以监控在线微服务系统各个服务之间的调用链路。这些事情通常是在Prometheus和Skywalking两个监控系统的配合下完成的。Skywalking通常可以跟踪我们的微服务调用链接,Prometheus可以监控我们在线系统的各个层级的服务器、JVM和接口。如下图所示:好了,今天给大家介绍的微服务治理的内容就到这里了。
