Spring Cloud:什么是微服务
Posted JianYang100
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud:什么是微服务相关的知识,希望对你有一定的参考价值。
系列目录(持续更新。。。)
Spring Cloud之一:注册与发现-Eureka工程的创建
Spring Cloud之二:服务提供者注册到Eureka Server
Spring Cloud之三:Eureka Server添加认证
Spring Boot 之四:使用Feign实现微服务间的交互
目录
本文只是帮助新手朋友更好的理解微服务,仅此而已!
什么是微服务
什么是微服务呢?我不会使用太多的专业术语来阐述这个概念,以下纯属本人拙见!
说起微服务,得先从单体应用开始说起。比如,我们开发了一套商城系统,我们把这个商城系统打包成war或jar部署到线上服务器,我们就可以说这个商城系统是一个单体应用!多数项目初期都是从单体应用开始的。
商城系统里面包括用户模块、订单模块等,这时候我们把商城系统拆分成用户模块和订单模块(实际会拆分成更多的模块,我只是举个栗子。。。),也就是用户模块可以单独打包成一个war或jar包,订单模块也可以单独打包成一个包。这时候我们就可以称用户模块就是一个微服务,订单模块也是一个微服务!
我们可以这样理解:微服务就是从一个大模块中分离出来的一个个小的模块,但也表示我们需要布署更多的应用,以支撑我们的系统功能。
为什么要使用微服务
那么为什么要使用微服务呢?或者,换句话说:为什么我们宁可部署多个应用,也不愿只部署一个应用呢?
还是得从单体应用说起,单体应用包括了系统的所有功能,复杂性高,维护难度大,去改个Bug,可能产生新bug的几率非常高。而经过功能划分后的微服务(用户模块、订单模块)功能单一、代码量小,从而大大减少系统的开发难度,提高了系统的可维护性,并且微服务可以各自独立,各自有自己的技术栈(比如用户模块我可以使用mysql数据库,订单模块可以使用Oracle数据库)。
Spring Cloud是什么
尽管微服务方案大大优于单体应用,但是细化成更多的模块就表示我们需要维护和部署更多的应用,运维成本大大提高!并且微服务与微服务之间会有一定的通信,那如何通信?如何处理通信时产生的异常呢?微服务多了,怎么查看各个微服务的状态呢?我怎么知道哪个微服务挂了?
Spring Cloud就是基于上述问题,应运而生的一套分布式开发框架。它是由众多的组件组成,各个组件都有各自的使命。常用的组件大概如下:
Eureka: 注册中心, 负责服务的注册和发现
Ribbon: 负载均衡, 实现服务调用的负载均衡
Hystrix: 熔断器
Feign: 远程调用
Gateway: 网关
Spring Cloud Config: 配置中心
Spring Cloud——什么是微服务?
一、什么是微服务架构?
1.系统拆分
2.服务各自独立运行、独立部署
3.服务之间基于HTTP的Restful API通信协作
二、为什么选择Spring Cloud?
1.基于Spring Boot实现的微服务架构工具。
2.组成
Config:配置中心,支持git存储配置,实现应用配置外部化,客户端动态修改配置信息
Eureka:服务的注册与发现
Hystrix:容错管理组件,实现服务间降级和熔断
Ribbon:实现客户端负载均衡
Feign:基于Ribbon和Hystrix的声明式服务调用组件
Zuul:网关,提供路由,服务过滤拦截
Sleuth:服务链路跟踪,整合ZipKin
以上是关于Spring Cloud:什么是微服务的主要内容,如果未能解决你的问题,请参考以下文章
什么是微服务最佳实践?大咖带你深入了解Spring Cloud Alibaba