美文网首页
SpringCloud第一章:什么是SpringCloud?

SpringCloud第一章:什么是SpringCloud?

作者: Heitaokei | 来源:发表于2022-05-18 15:21 被阅读0次

微服务是什么

微服务(MicroServices)最初是由 Martin Fowler 于 2014 年发表的论文 《MicroServices》 中提出的名词,它一经提出就成为了技术圈的热门话题。

微服务,我们可以从字面上去理解,即“微小的服务”。

    “服务”是指项目中的功能模块,它可以帮助用户解决某一个或一组问题,在开发过程中表现为 IDE(集成开发环境,例如 Eclipse 或 IntelliJ IDEA)中的一个工程或 Moudle。

     “微小”则强调的是单个服务的大小,主要体现为以下两个方面:

        1.微服务体积小,复杂度低:一个微服务通常只提供单个业务功能的服务,即一个微服务只专注于做好一件事,因此微服务通常代码较少,体积较小,复杂度也较低。

        2.微服务团队所需成员少:一般情况下,一个微服务团队只需要 8 到 10 名人员(开发人员 2 到 5 名)即可完成从设计、开发、测试到运维的全部工作。

微服务架构

微服务架构是一种系统架构的设计风格。与传统的单体式架构(ALL IN ONE)不同,微服务架构提倡将一个单一的应用程序拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间使用轻量级通信机制(通常是 HTTP RESTFUL API)进行通讯。通常情况下,这些小型服务都是围绕着某个特定的业务进行构建的,每一个服务只专注于完成一项任务并把它做好 ,即“专业的人做专业的事”。每个服务都能够独立地部署到各种环境中,例如开发环境、测试环境和生产环境等,每个服务都能独立启动或销毁而不会对其他服务造成影响。这些服务之间的交互是使用标准的通讯技术进行的,因此不同的服务可以使用不同数据存储技术,甚至使用不同的编程语言。

微服务架构与单体架构优缺点

在当今的软件开发领域中,主要有两种系统架构风格,那就是新兴的“微服务架构”和传统的“单体架构”。

单体架构是微服务架构出现之前业界最经典的软件架构类型,许多早期的项目采用的也都是单体架构。单体架构将应用程序中所有业务逻辑都编写在同一个工程中,最终经过编译、打包,部署在一台服务器上运行。

在项目的初期,单体架构无论是在开发速度还是运维难度上都具有明显的优势。但随着业务复杂度的不断提高,单体架构的许多弊端也逐渐凸显出来,主要体现在以下 3 个方面:

随着业务复杂度的提高,单体应用(采用单体架构的应用程序)的代码量也越来越大,导致代码的可读性、可维护性以及扩展性下降。

随着用户越来越多,程序所承受的并发越来越高,而单体应用处理高并发的能力有限。

单体应用将所有的业务都集中在同一个工程中,修改或增加业务都可能会对其他业务造成一定的影响,导致测试难度增加。

由于单体架构存在这些弊端,因此许多公司和组织都开始将将它们的项目从单体架构向微服务架构转型。

微服务的特点

服务按照业务来划分,每个服务通常只专注于某一个特定的业务、所需代码量小,复杂度低、易于维护。

每个微服都可以独立开发、部署和运行,且代码量较少,因此启动和运行速度较快。

每个服务从设计、开发、测试到维护所需的团队规模小,一般 8 到 10 人,团队管理成本小。

采用单体架构的应用程序只要有任何修改,就需要重新部署整个应用才能生效,而微服务则完美地解决了这一问题。在微服架构中,某个微服务修改后,只需要重新部署这个服务即可,而不需要重新部署整个应用程序。

在微服务架构中,开发人员可以结合项目业务及团队的特点,合理地选择语言和工具进行开发和部署,不同的微服务可以使用不同的语言和工具。

微服务具备良好的可扩展性。随着业务的不断增加,微服务的体积和代码量都会急剧膨胀,此时我们可以根据业务将微服务再次进行拆分;除此之外,当用户量和并发量的增加时,我们还可以将微服务集群化部署,从而增加系统的负载能力。

微服务能够与容器(Docker)配合使用,实现快速迭代、快速构建、快速部署。

微服务具有良好的故障隔离能力,当应用程序中的某个微服发生故障时,该故障会被隔离在当前服务中,而不会波及到其他微服务造成整个系统的瘫痪。

微服务系统具有链路追踪的能力。

SpringBoot SpringCloud

那么通过什么来完成微服务架构呢?那么主流的技术就是SpringBoot + SpringCloud

SpringBoot即为单个服务,多个SpringBoot通过SpringCloud组合在一起即为微服务架构,再没了解SpringCloud之前可能不清楚它是什么,它其实是一站式解决方案。多个微服务之间怎么通讯?怎么调用?怎么管理?SpringCloud的产生就是为了解决这些问题的,因此SpringCloud组件就产生了。

SpringCloud通过这些年的发展大致可分为两代,到目前为止使用第一代组件的已经非常少了,一是组件停止更新,二是随着技术更新升级出现了比它们更好用的组件替代它们。

第一代:

Spring Cloud Eureka:注册中心 Spring Cloud Netflix 中的服务治理组件,包含服务注册中心、服务注册与发现机制的实现。

Spring Cloud Ribbon:负载均衡 Spring Cloud  Netflix 中的服务调用和客户端负载均衡组件。

Spring Cloud Feign:服务调用 基于 Ribbon 和 Hystrix 的声明式服务调用组件。

Spring Cloud Hystrix:断路器 人称“豪猪哥”,Spring Cloud Netflix 的容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。

Spring Cloud Zuul:路由 Spring Cloud Netflix 中的网关组件,提供了智能路由、访问过滤等功能。

Spring Cloud Config:配置管理,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。

第二代:

参考网址

SpringCloud中文网:https://www.springcloud.cc/

SpringCloud官网:https://spring.io/projects/spring-cloud

点击【LEARN】即可查看SpringCloud的版本,带有【CURRENT】为当前最新的稳定版本,点击右侧【Reference Doc.】可查看对应SpringBoot对应的版本。

学习SpringCloud组件非常简单,总结起来就是三步

1.导入组件依赖

2.编写配置文件

3.添加注解 + 编写少量代码

相关文章

网友评论

      本文标题:SpringCloud第一章:什么是SpringCloud?

      本文链接:https://www.haomeiwen.com/subject/zuzourtx.html