微服务|初识微服务技术栈


目录

        • 什么是微服务?
        • 注册中心
        • 配置中心
        • 服务网关
        • 分布式缓存和数据库
        • 分布式搜素
        • 消息队列
        • 分布式日志服务
        • 系统的监控链路追踪
        • 持续集成
        • 1.认识微服务
        • 1.0.学习目标
          • 1.1.单体架构
          • 1.2.分布式架构
          • 1.3.微服务
          • 1.4.微服务技术对比
          • 1.5.SpringCloud
          • 1.6.总结

什么是微服务? 微服务等于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是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

    推荐阅读