您的当前位置:首页正文

微服务----从入门到入土(一)

2024-11-30 来源:个人技术集锦

微服务总体知识体系图

什么是微服务

微服务是一种经过良好架构设计的分布式架构方案,主要有以下几个特征:

微服务优势

分布式微服务解决的主要问题:单体地狱,一旦应用大起来了,所有模块都集中在单个服务上会存在以下问题:
5. 维护困难,一个项目编译打包就要花上几小时
6. 耦合度过高,牵一发动全身,修一个bug或者改一些地方会引出其他问题

这时就需要对功能模块进行拆分,每一个服务对应一个小模块。

微服务架构体系内容

一个微服务体系包含以下几个部分:

  1. 服务集群:单体根据功能进行拆分后根据不同的功能部署到不同的服务,就会组成服务集群。
  2. 注册中心:这么多服务中间肯定需要通信,那么服务的信息都由注册中心进行管理。如A服务需要与B服务进行通信,首先会访问注册中心获取B服务的地址,之后根据地址发起http或者rpc请求进行通信。
  3. 配置中心:管理各种服务的各种配置信息
  4. 数据库:这个不说了,单体,分布式都需要
  5. 分布式缓存:当并发量上去之后,就需要缓存降低数据库的压力
  6. 分布式搜索:复杂搜索,就需要分布式搜索功能
  7. 消息队列:一个请求需要过很多服务,时间为所有服务之和,消息队列就可以进行异步操作,起到削峰的作用,提高服务的并发。
  8. 服务网关:类似nginx,一个请求过来,需要看看这个请求要打到哪个服务上进行处理
  9. 分布式日志处理:当服务多起来后,查看日志成了很麻烦的事情,分布式日志就可以解决这个问题
  10. 系统链路追踪:监控每个服务的cpu,内存,负载,占用

注册中心

  1. B服务的环境地址是变化的
  2. B服务如果存在集群,那么无法进行均衡负载
  3. 消费者无法获取服务的健康状态

为了解决上述问题,就需要注册中心

Eureka

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。

  • 消费者如何获取服务提供者的具体信息?
    • 服务提供者启动时向Eureka注册自己的信息
    • 消费者根据服务名称向Eureka获取信息
  • 多个服务者如何选择
    • 使用均衡负载算法
  • 消费者如何感知服务者的健康状态
    • 服务提供者会每隔30秒发送心跳
    • 如果心跳不正常就会删除
    • 消费者可以拉取服务者最新信息

搭建EurekaServer

服务注册

在每个微服务需要做如下配置,将信息注册到server

服务发现

启动类:

Ribbon负载均衡

Eureka-client均衡负载流程

均衡负载策略

Eureka-client中使用Ribbon组件进行负载均衡

如何修改均衡负载规则?

懒加载与饥饿加载

Nacos注册中心

相较于Eureka,Nacos功能更多,使用范围更广

Nacos-server安装

具体自己看官方文档

服务注册

服务发现

同eureka

配置集群

一套微服务应用部署在多地时,某一地区的所有微服务就叫一个集群,如上海集群,杭州集群。这样做的目的主要为了容灾。

Nacos提供服务集群配置,当其中一个微服务调用另一个服务时,优先调用相同集群的服务,如果集群内服务都挂了,再访问不同集群的服务。这个策略需要进行负载均衡配置

负载均衡配置

默认为轮询策略,当这么配置时,优先进行集群内调用

统一网关

网关功能:

  1. 身份验证
  2. 均衡负载
  3. 请求限流

SpringCloudGateway

搭建步骤


断言工厂

类似于拦截器功能

网关过滤器

类似于过滤器功能,可以对请求进行拦截处理。如添加请求头。具体见官方文档

显示全文