初识微服务技术栈

什么是微服务?

微服务等于Spring Cloud的吗?

不等于,Spring Cloud仅仅是其中一部分。

将一个单体的项目拆分为一个个独立的项目,每个项目完成一部分业务功能,将来独立开发和部署。我们把这样一个独立的项目称为一个微服务。一个大型的互联网项目往往包含成百上千个服务,最终形成一个服务集群。
在这里插入图片描述

注册中心

一个业务往往由多个服务共同完成。比如说,当一个请求来了,她可能先调用了服务a,服务a调用了服务b,服务b又调用了服务c。当服务越来越多时,这些调用关系就越来越复杂。这么复杂的一个调用关系,靠人去维护记录就没有必要。那怎么处理呢,这就有组件—注册中心。

记录微服务中每一个服务的ip、端口、以及她们能干什么
当有一个服务需要去调用另一个服务时,她不需要自己去记录对方的ip信息,只需要去找注册中心,从她那拉取。

在这里插入图片描述

配置中心

同时,随着服务越来越多,每一个服务都有她自己的配置文件,当我们要更改配置,如果我们逐一修改,那就太麻烦了,所以在微服务里还有一个组件—配置中心。

统一管理服务群里成千上百的配置
假设以后有微服务的配置需要更新,只需要找到配置中心,
它会去通知相关的微服务,实现配置的热更新。

在这里插入图片描述

服务网关

当我们的微服务运行起来之后,用户就可以来访问我们了,这时候我们的主角—服务网关就登场了。因为我们有那么多微服务,用户怎么知道访问哪一个呢?而且也不是随便一个人就可以访问我们的微服务的。

一部分对用户的身份做校验
另一部分就是将用户的请求路由到具体的服务,同时实现负载均衡

在这里插入图片描述

分布式缓存和数据库

首先,数据库肯定也是一个集群,但是数据库再多也没有用户多,如何提高效率和抗住高并发呢?这就需要—分布式缓存了。

分布式的缓存也是一个集群
请求先到缓存,缓存未命中,再去查询数据库

在这里插入图片描述

分布式搜素

简单数据可以用缓存,但是一些复杂数据的搜索和分析,缓存也做不了,这时候就需要用到—分布式搜索。

那么数据库做什么呢?

主要是做一些写操作还有对数据库要求高的数据存储。

消息队列

为什么要有它呢?微服务中一个业务往往跨用了多个服务,整个业务的链路就很长。调用时长就会等于每个服务的调用时长之和,所以其实性能是有一定的下降的。
那么什么是异步通信呢?
就是说我服务a不是去调用服务b,而是去通知服务b,然后我服务a就结束了。所以业务链路就变短了,响应时间也变短了。它的吞吐能力就变强了。可以大大提高并发量。

分布式日志服务

在如此庞大的一个微服务中,如果出现了问题,好排查吗?不太好排查,所以需要引进两个组件来解决这个问题。一个便是—分布式日志服务。

它可以去统计整个微服务中成千上百的服务的运行日志,统一地去做一个存储、分析。将来出现问题便好定位了。

在这里插入图片描述

系统的监控链路追踪

另一个便是—系统的监控链路追踪

它可以去实时地监控我们系统中每一个结点的运行状态、cpu的负载、内存的占用等。一旦出现任何问题,直接可以定位到具体的某一个方法。

持续集成

这么大一个微服务,如何部署呢?还采用人工部署,显然不行。因此,我们需要一种自动化的部署。

利用Jenkins工具对微服务进行自动化编译,基于docker再进行打包,形成镜像在基于kubernetes或RANCHER等技术进行自动化部署。这一套我们称之为持续集成。
结合微服务技术再加上持续集成,这才是完整的微服务技术栈。

在这里插入图片描述

接下来我们来系统得认识一下微服务

1.认识微服务

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

1.0.学习目标

了解微服务架构的优缺点

1.1.单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

在这里插入图片描述
单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)
1.2.分布式架构

分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

分布式架构的优缺点:

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

  • 服务拆分的粒度如何界定?
  • 服务集群地址如何维护?
  • 服务之间如何调用?远程调用
  • 服务的调用关系如何管理?
  • 服务健康状态如何感知?

人们需要制定一套行之有效的标准来约束分布式架构。----出现了一系列技术
近几年出现的最火的莫过于微服务?什么是微服务?

1.3.微服务

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

1.4.微服务技术对比

在这里插入图片描述

在这里插入图片描述

但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。

其中在Java领域最引人注目的就是SpringCloud提供的方案了。什么是SpringCloud呢?

1.5.SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

其中常见的组件包括:

在这里插入图片描述

另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

在这里插入图片描述

接下来学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。

1.6.总结
  • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

  • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

  • 微服务:一种良好的分布式架构方案

    ①优点:拆分粒度更小、服务更独立、耦合度更低

    ②缺点:架构非常复杂,运维、监控、部署难度提高

  • SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

猜你喜欢

转载自blog.csdn.net/weixin_47138646/article/details/122320644