Spring Cloud 学习笔记整理

Spring Cloud微服务架构集大成者

  • 1、微服务 [^1]
    • 1.1 传统MVC架构之殇
    • 1.2 什么是微服务?
    • 1.3 微服务特点
    • 1.4 微服务架构与面向服务架构SOA的区别
    • 1.5 微服务架构的缺点
  • 2、Spring Cloud简介
  • 3、Sring Cloud基础篇

  • Spring Cloud学习资源
    英文网站
    中文网站
    Spring Cloud中国社区
    重新定义Spring Cloud实战 pdf 百度网盘提取码xpj8
  • . Martin Fowler博客

1、微服务 1

1.1 传统MVC架构之殇

Spring Cloud 学习笔记整理_第1张图片
Spring Cloud 学习笔记整理_第2张图片
Spring Cloud 学习笔记整理_第3张图片
Spring Cloud 学习笔记整理_第4张图片
Spring Cloud 学习笔记整理_第5张图片
Spring Cloud 学习笔记整理_第6张图片
Spring Cloud 学习笔记整理_第7张图片
Spring Cloud 学习笔记整理_第8张图片
Spring Cloud 学习笔记整理_第9张图片
Spring Cloud 学习笔记整理_第10张图片
Spring Cloud 学习笔记整理_第11张图片

缺点一: 项目过于臃肿当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变 得臃肿,让开发者难以维护。

缺点二: 资源无法隔离就像刚刚小灰的经历一样,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。

缺点三: 无法灵活扩展当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群:

Spring Cloud 学习笔记整理_第12张图片

但是这种扩展并非灵活的扩展。比如我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,这一点在单体系统是做不到的。

Spring Cloud 学习笔记整理_第13张图片
Spring Cloud 学习笔记整理_第14张图片

1.2 什么是微服务?

微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。

在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

谷歌翻译如下:

简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并以轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。


1.3 微服务特点

1.独立部署,灵活扩展传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。

用一张经典的图来表现,就是下面这个样子:

Spring Cloud 学习笔记整理_第15张图片

什么意思呢?比如根据每个服务的吞吐量不同,支付服务需要部署20台机器,用户服务需要部署30台机器,而商品服务只需要部署10台机器。这种灵活部署只有微服务架构才能实现。

而近几年流行的Docker,为微服务架构提供了有效的容器。


2.资源的有效隔离微服务设计的原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

Spring Cloud 学习笔记整理_第16张图片

同时,由于每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离。


3.团队组织架构的调整微服务设计的思想也改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端有前端的团队,后端有后端的团队,DBA有DBA的团队,测试有测试的团队

Spring Cloud 学习笔记整理_第17张图片

而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。

Spring Cloud 学习笔记整理_第18张图片

当然,这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对。


1.4 微服务架构与面向服务架构SOA的区别

Spring Cloud 学习笔记整理_第19张图片
Spring Cloud 学习笔记整理_第20张图片

SOA是什么样子的?
可以是这样:

Spring Cloud 学习笔记整理_第21张图片

也可以是这样:

Spring Cloud 学习笔记整理_第22张图片

总之,SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署

Spring Cloud 学习笔记整理_第23张图片
Spring Cloud 学习笔记整理_第24张图片
Spring Cloud 学习笔记整理_第25张图片

1.5 微服务架构的缺点

Spring Cloud 学习笔记整理_第26张图片
Spring Cloud 学习笔记整理_第27张图片
Spring Cloud 学习笔记整理_第28张图片
Spring Cloud 学习笔记整理_第29张图片
Spring Cloud 学习笔记整理_第30张图片

2、Spring Cloud简介

Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和 Spring Boot 开发框架的集成
Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式
Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

3、Sring Cloud基础篇

  • Spring Cloud基础篇之Spring Boot学习

  1. 参考文章 ↩︎

你可能感兴趣的:(java,Spring,Cloud)