微服务架构笔记

312 阅读3分钟

前言

服务器端开发的历史比较长,应该有几十年史了吧,所以很多问题都有现成的解决方案。在JavaWeb中,我们都很少能够绕开Spring家族,它提供了很多稳健可复用的代码,简化了开发工作,让开发者更多地去关注业务层面代码逻辑的实现。以下是SpringCloud的学习笔记,理清一些基本的概念以及微服务开发的流程。

微服务架构

  • 什么是微服务(分布式架构的一种解决方案)

单体应用(所有功能都打包在一个jar或者war文件在服务器中运行)适用于小型项目,缺点是:承担职责多,不利于扩展。一旦项目变得庞大和复杂,由众多的业务构成,就必须考虑可扩展、易于部署的架构。微服务是将功能拆分成一系列微服务的架构模式,可以理解成分治的策略。

  • 微服务设计需要考虑的一些因素
    • 服务粒度(承担的职责、业务划分)
    • 拆分原则(单一职责原则、共同封闭原则:将需要修改范围限制在同一个包中)
    • 自治原则(每个微服务拥有的业务领域对象相互独立)
    • 交互原则(REST协议:用HTTP作为服务的调用协议、JSON数据格式等)
  • 微服务架构的核心点(微服务架构是思想,SpringCloud可以说是提供了一套实现和解决方案,为开发者提供了一套基础设施,让我们不必再从零进行构建)

  • SpringCloud概述

对已有微服务组件的封装和集成,为快速构建微服务架构应用提供一套基础设施工具和开发支持,是众多子项目的集成。版本名称是使用伦敦地铁站名称发布。子项目大致可分为两类:一是对现有第三方开源项目SpringBoot化(每个微服务都是一个独立的应用,需要快速启动、提供服务接口等,Spring Boot刚好符合这些要求),使得基于Spring开发容易集成和使用。二是新增微服务开发所需要的基础设施:如统一配置中心、Stream充当消息中间件快速集成的桥梁。

SpringCloud基本组件

服务治理

服务与服务之间是如何通信的?知道对方的地址,就可以进行通信了。但是如果每个服务都要自己管理一堆的通信地址,这样就显得很不灵活,万一又上线了一些服务,有些已经运行的服务就不知道新上线的这个服务的地址了。所以就引入了第三方中介:服务治理服务器用来统一管理这些服务。目前主流的实现框架有:ConsulEureka

客户端负载均衡

  • 主要的解决方案

集中式、进程内、主机独立负载均衡


参考:《Spring Cloud微服务开发架构实战》、Spring Cloud官网