认识微服务 SpringCloud (史上最全学习路线)
前言
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。本专栏是关于 SpringCloud 的学习心得。
1、什么是微服务?
一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
2、架构演进
3、单体架构
优点:
简单:开发部署都很方便,小型项目首选
缺点:
项目启动慢
可靠性差
可伸缩性差
扩展性和可维护性差
性能低
4、垂直架构
垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。
单体架构存在的问题:
项目启动慢
可靠性差
可伸缩性差
扩展性和可维护性差
性能低
垂直架构存在的问题:
重复功能太多
5、分布式架构
分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。
RPC: Remote Procedure Call 远程过程调用。有非常多的协议和技术来都实现了 RPC 的过程。比如:HTTP REST 风格,Java RMI 规范、WebService SOAP 协议、Hession 等等。
垂直架构存在的问题:
重复功能太多
分布式架构存在的问题:
服务提供方一旦产生变更,所有消费方都需要变更。
6、SOA 架构
SOA:(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
ESB:(Enterparise Servce Bus) 企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。
分布式架构存在的问题:
服务提供方一旦产生变更,所有消费方都需要变更。
7、微服务架构
微服务架构是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务架构 = 80%的 SOA 服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想
微服务的架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
特点:
服务实现组件化:开发者可以自由选择开发技术。也不需要协调其他团队
服务之间交互一般使用 REST API
去中心化:每个微服务有自己私有的数据库持久化业务数据
自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维
Dubbo 是 SOA 时代的产物,SpringCloud 是微服务时代的产物
8、总结
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
微服务:一种良好的分布式架构方案
①优点:拆分粒度更小、服务更独立、耦合度更低
②缺点:架构非常复杂,运维、监控、部署难度提高
SpringCloud 是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件
9、SpringCloud
SpringCloud 集成了各种微服务功能组件,并基于 SpringBoot 实现了这些组件的自动装配,从而提供了良好的开箱即用体验。SpringCloud 是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。
其中常见的组件包括:
服务注册发现
Eureka、Nacos、Consul
统一配置管理
SpringCloudConfig,Nacos
服务远程调用
OpenFeign、Dubbo
统一网关路由
SpringCloudGateway,Zuul
服务链路监控
Hystix、Sentinel
流控、降级、保护
Zipkin、Sleuth
学习路线:
总结
微服务架构,是一种架构性的应用开发方式或风格,通常称为微服务。 它需要将大的应用软件拆分为能够独立完成功能和通信的小功能单元。
版权声明: 本文为 InfoQ 作者【斯】的原创文章。
原文链接:【http://xie.infoq.cn/article/7438953835ab76154fe75a211】。文章转载请联系作者。
评论