883 字
4 分钟
SpringCloud01-微服务简介
2023-06-28
2023-12-20

简单的介绍了SpringCloud中的微服务技术栈。

微服务技术栈#

微服务请求入口、服务治理、业务集群与运行支撑的分层关系

原理示意:业务服务负责各自能力,网关处理统一入口,注册与配置中心提供治理信息,缓存、搜索与消息队列提供运行能力。日志、监控和部署贯穿这些服务的生命周期;图按职责归类,不表示所有组件都属于 Spring Cloud,也不要求小型系统一次性引入全部组件。

  • 微服务拆分,形成微服务集群
  • 注册中心:拉取活注册服务信息(记录微服务的ip端口等,微服务调用关系访问注册中心获得对方信息)
  • 配置中心:拉取配置信息(统一的管理所有微服务的配置,实现配置的热更新)
  • 服务网关组件:身份校验,将请求路由到服务,可以进行负载均衡
  • 分布式缓存:实现高并发
  • 分布式搜索:进行复杂的搜索
  • 消息队列:异步通信,提高服务并发
  • 分布式日志服务:统计整个集群的日志,统一存储,统计进行分析
  • 系统监控链路追踪:实时监控整个集群中每个节点的运行状态,一旦出现问题可以快速定位异常所在
  • 自动化部署(Jenkins)
  • 打包(Docker) kuebernetes RANCHER

微服务简介#

单体架构#

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

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高

分布式架构#

根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

优点:

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

缺点:

  • 服务治理
    • 服务拆分粒度?
    • 服务集群地址如何维护?
    • 服务之间如何实现远程调用?
    • 服务健康状态如何感知?

微服务架构特征#

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

微服务结构#

技术框架

  • SpringCloud
  • Dubbo
  • SpringCloudAlibaba

差异对比

DubboSpringCloudSpringCloudAlibaba
注册中心zookeeper、RedisEureka、ConsulNacos、Eureka
服务远程调用Dubbo协议Feign(http协议)Dubbo、Feign
配置中心无SpringCloudConfigSpringCloudConfig、Nacos
服务网关无SpringCloudGateway、ZuulSpringCloudGateway、Zuul
服务监控和保护Dubbo-admin,功能弱HystrixSentinel

SpringCloud#

SpringCloud是目前国内使用最广泛的微服务框架。

SpringCloud基于SpringBoot

Spring Boot 负责单个服务的应用组织与启动,Spring Cloud 则围绕多个服务协作提供治理组件。可以沿一条调用链理解它们:服务先注册实例信息,消费者按服务名发现实例,再通过 HTTP 客户端发起调用;外部请求由网关统一路由,跨服务的配置、监控与容错由相应组件配合。前面的组件对照表属于本文学习时的技术背景,实际选型还应核对 Spring Boot、Spring Cloud 与 Alibaba 组件的版本兼容关系。