微服务架构 | 1. 微服务相关基础知识 #yyds干货盘点#
Posted 多氯环己烷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务架构 | 1. 微服务相关基础知识 #yyds干货盘点#相关的知识,希望对你有一定的参考价值。
@[TOC](第1篇 微服务相关基础知识)
前言
参考资料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》
本篇主要介绍一些通用概念概述、组件对比与系列笔记的目录结构说明;
1. 分布式相关理论
1.1 分布式计算系统的 CAP 理论
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
1.2 BASE 理论
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
2. 微服务架构发展历程
2.1 单体架构
- 通常来说,如果一个 war 包或者 jar 包里包含一个应用的所有功能,则称为单体架构;
- 优点:架构简单、能快速开发与上线;
- 缺点:后端服务器负载越来越高、业务场景复杂;
2.2 集群与垂直化
- 当业务量扩大时,服务负载过高,维护和部署成本增加,可以从两个方面优化:
- 横向增加服务器,把单台机器变成多机集群;
- 按照业务的垂直领域进行拆分,减少业务的耦合度,以及降低单个 war 包带来的伸缩性困难问题;
2.3 SOA(面向服务架构)
- SOA 核心目标是把一些通用的、会被多个上层服务调用的共享业务提取成独立的基础服务,这些被提取出来的共享服务相对来说比较独立,并且可以重用;
- SOA 架构主要解决了两个问题:信息孤岛、共享业务的重用;
2.4 微服务架构
- 面向服务(SOA)和微服务本质上都是服务化思想的一种体现;
- 如果 SOA 是面向服务开发思想的雏形,那么微服务就是针对可重用业务服务的更进一步优化;
- 可以把 SOA 看成微服务的超集,也就是多个微服务可以组成一个SOA服务;
- 实施微服务的前提是软件交付链路及基础设施的成熟化;
- 因此微服务本质上是服务化思想的最佳实践方向;
2.4.1 SOA 与微服务架构的关注点
- SOA:服务的重用性及解决信息孤岛问题;
- 微服务架构:解耦,降低业务之间的耦合度。微服务会更多地关注在 DevOps 的持续交付上,微服务与容器化技术的结合更加紧密;
3. 云计算概述
3.1 云计算的几种模式
三种核心基本模式:
- 基础设施即服务(Infrastructure as a Service, IaaS);
- 平台即服务(Platform as a Service, PaaS);
- 软件即服务(Software as a Service, SaaS);
- Spring Cloud 讨论的是基于 IaaS 的微服务;
两种新兴模式:
- 函数即服务(Functions as a Service, FaaS);
- 容器即服务(Container as a Service, CaaS)
4. 微服务架构概述
4.1 一个简单的微服务架构图
4.2 微服务架构的五大特性
- 位置透明;
- 大小适当;
- 可伸缩;
- 可重复;
- 有弹性;
4.3 微服务架构讨论了什么
- 服务粒度;
- 通信协议;
- 接口设计;
- 配置管理;
- 事件处理;
4.4 按模式分的微服务组件
4.5 微服务架构的优点与挑战
4.6 本系列笔记将讨论什么
五大核心功能及其组件:
- 配置中心;
- 注册中心;
- 服务调用;
- 服务容灾与降级;
- 网关路由;
其他特色扩展功能及其组件:
- 安全保护;
- 事件驱动;
- 服务总线;
- 分布式追踪;
- 分布式事务;
- RPC 通信;
- 等...
5. 主流 Spring Cloud 组件
- Spring Cloud 不是一个框架,而是一套规范。其对 Spring Boot 在次封装后屏蔽复杂的配置,给开发者提供了良好的开箱即用的微服务规范;
- Spring Cloud Netflix、Spring Cloud Condul、Spring Cloud Alibaba 才是 Spring Cloud 规范的实现;
- 目前主流的 Spring Cloud 治理方案主要由 Spring Cloud Netflix 和 Spring Cloud Alibaba 提供;
- 相比 Spring Cloud Netflix,Spring Cloud Alibaba 在服务治理方面更适用于国内技术场景;
5.1 组件对比图
5.2 Spring Cloud五大组件:
- 注册中心 Netflix Eureka;
- 客服端负载均衡 Netflix Ribbon;
- 断路器 Netflix Hystrix;
- 服务网关 Netflix Zuul;
- 布式配置 Config;
5.3 Spring Cloud Alibaba 技术架构图
5.4 各厂商 Spring Cloud 技术架构图
6. 一些资源链接
- Spring Cloud 官网:https://spring.io/projects/spring-cloud;
- 《微服务架构设计模式》系列学习笔记:https://blog.csdn.net/dlhjw1412/article/details/119428533;
- Spring Boot 系列学习笔记:https://blog.csdn.net/dlhjw1412/article/details/118882230;
- Spring 系列学习笔记:https://blog.csdn.net/dlhjw1412/article/details/117886685;
7. 本系列笔记的编写思想
7.1 目录结构
- 主要分有一级标题和二级标题,一二级标题都是一篇文章;
- 为方便说明,下面用 XXX 代表:配置中心、注册中心、服务调用等功能;
- 用 YYY 代表:Eureka、Spring Cloud Config、Zuul 等细分组件;
- 其中一级标题表示概述,目录结构如下:
- XXX 基础知识:对微服务(注册中心、配置、网关等)做系统的概述;
- YYY 组件分析:里面有个链接,可以跳转至对应细分文章;
- 二级标题为组件实战,目录结构如下:
- YYY 基础知识:介绍一些 YYY 组件的理论知识与面试考点;
- 使用 YYY 组件构建服务:实战部分;
- 其中 YYY 组件实战部分又可大致总结为:
- 引入 pom.xml 依赖文件;
- 修改 .yml 配置文件;
- 在主程序类上添加注解;
- 编写业务类(Config、Service、Controller 等);
最后
::: hljs-center
新人制作,如有错误,欢迎指出,感激不尽!
:::
::: hljs-center
欢迎关注公众号,会分享一些更日常的东西!
:::
::: hljs-center
如需转载,请标注出处!
:::
::: hljs-center
:::
以上是关于微服务架构 | 1. 微服务相关基础知识 #yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构 | 6.1 使用 Zuul 进行服务路由 #yyds干货盘点#
《微服务架构设计模式》读书笔记 | 第2章 服务的拆分策略 #yyds干货盘点#
《微服务架构设计模式》读书笔记 | 第3章 微服务架构中的进程间通信 #yyds干货盘点#
微服务架构 | 10.3 使用 Zipkin 可视化日志追踪 #yyds干货盘点#