微服务基础
1. 什么是微服务?
微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。
摘自百度
- 单体架构
之前通常使用的就是单体架构,所有的业务功能全部集中在一个项目中开发,打成一个包部署;优点主要是部署成本低,架构简单。
缺点主要是耦合度高,代码修改困难。
- 分布式架构
根据业务功能对系统进行拆分,每个业务模块作为独立项目进行开发,称之为一个服务,使用是通过服务间的调用进行处理。优点主要是耦合度低,有利于系统升级。
缺点主要是业务的区分粒度很难把握,远程调用可能存在问题,即运维、监控 、部署的难度可能更大。
微服务架构特征:
- 单一职责:微服务拆分力度更小,每一个服务都对应一项业务,借此避免业务的重复开发。
- 面向服务:由于不同业务之间可能存在业务调用,所以相关的业务接口必须要对外暴露。
- 自治:所有的服务需要做到独立。
- 隔离性:不同的服务之间要做好隔离、容错、降级、避免出现级联问题,就是如果调用的其它服务出现问题,不能导致自己这边的服务也出现问题。
2. 微服务技术结构
dubbo | SpringCloud | SpringCloudAlibaba | |
---|---|---|---|
注册中心 | Zookeeper、redis | Eureka、Consul | Nacos、Eureka |
服务远程调用 | Dubbo协议 | Feign(http协议) | dubbo、Feign |
配置中心 | 无 | SpringCloudconfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateWay、Zuul | SpringCloudGateWay、Zuul |
服务监控和保护 | dubbo-admin,功能弱 | Hystrix | Sentinal |