一止长渊

微服务基础概念

N 人看过
字数:1.2k字 | 预计阅读时长:3分钟

1.微服务

拒绝大型单体引用,基于业务边界进行服务微化拆分,各个服务独立部署运行,,每个服务之间相互调用

例如:订单服务 -》商品服务 -》仓库服务

2.集群

例如:京东就是一个分布式系统,众多业务运行在不同的机器上,所有业务构成了一个大型的业务集群。

集群是一个物理形态,分布式是一个工作方式

分布式的每一个结点,都可以做集群,而集群并不一定就是分布式的

结点:集群中一个服务器

3.远程调用

在分布式系统中,各个服务会处于不同主机,但是服务之间不可避免的会产生相互调用,我们称之为远程调用。SpringCloud中使用HTTP + JSON的方式完成调用

4.负载均衡

订单服务需要查询商品服务,如果商品服务有很多的结点,为了不让商品服务每个服务器太忙或者太闲,通过负载均衡的调用每一个服务器,提高网站的健壮性。

常见负载均衡算法:

轮询:为第一个请求选择健康池中的第一个服务器,然后按照顺序依次往后进行选择

最小连接:选择连接最少的后端服务器,在会话比较长的时候可以采取考虑此种方式

散列:通过请求源的IP地址的hash来选择对应的服务器

5.服务注册/发现

A服务有三台机器,A服务被B服务调用,A服务三台机器需要去注册中心进行注册,B服务调用并不知道A服务有哪几台可用,这时就去注册中心询问A服务有几台可用。

注册中心:维护哪些服务在哪些机器

6.配置中心

每个服务都有很多的配置,例如A服务有服务配置,A服务运行在三台机器上,如果服务配置发生修改,此时就需要对这三台服务同时进行下线然后逐个修改,如果服务器数量过多,这样肯定是不行的。这时候就引入了配置中心,A服务配置发生修改,我们只需要修改配置中心A服务的配置,A服务的三台机器都会自动获得修改的值,实现改一处配置即可更新所有机器的配置

7.服务熔断&服务降级

在服务相互调用过程中,例如商品服务查询仓库服务是否有库存时,如果网络不可靠或者仓库服务宕机了,商品服务源源不断接收到上层的请求,商品服务就会阻塞等待,就会导致请求积压,过多请求阻塞会导致商品服务内存耗尽,商品服务不可用了,上层的订单服务也会导致请求积压也会发生连锁反应,这就是雪崩现象,由于一个服务的不可用导致整个上游服务调用链均不可用

解决办法

  • 服务熔断:设置服务的超时,如果被调用的服务达到一个阈值,就开启短路保护机制,后来的请求就不会调用下游的服务,直接本地返回默认的数据或者NULL
  • 服务降级:系统处于高峰期是,系统资源紧张,这是可以让非核心业务降级运行,让某些服务不处理请求或者处理简单【抛异常、返回NULL、调用Mock数据、调用Faaback处理逻辑】

8.API网关

前端发送的请求都是HTTP的形式,这个HTTP请求不会直接流向后端的服务集群,而是先通过API网关,比如对所有请求进行验证哪些合法哪些非法,非法的请求就拦截不放行到后端的业务集群,API网关抽象了微服务中都需要的公共功能,同时提供了客户端负载均衡、服务自动熔断、灰度发布、限流流控、日志统计等功能。通过API网关的请求后端服务群才进行处理,当大量请求时,网关还有以一定恒定的速率对请求进行放行,防止后端服务集群收到瞬时过大的请求将后端服务集群压垮,可以帮助我们解决很多API管理难题。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。