视频封面 · 热门壁纸推荐 / Bilibili
883 字
4 分钟
SpringCloud01-微服务简介
简单的介绍了SpringCloud中的微服务技术栈。
微服务技术栈
原理示意:业务服务负责各自能力,网关处理统一入口,注册与配置中心提供治理信息,缓存、搜索与消息队列提供运行能力。日志、监控和部署贯穿这些服务的生命周期;图按职责归类,不表示所有组件都属于 Spring Cloud,也不要求小型系统一次性引入全部组件。
- 微服务拆分,形成微服务集群
- 注册中心:拉取活注册服务信息(记录微服务的ip端口等,微服务调用关系访问注册中心获得对方信息)
- 配置中心:拉取配置信息(统一的管理所有微服务的配置,实现配置的热更新)
- 服务网关组件:身份校验,将请求路由到服务,可以进行负载均衡
- 分布式缓存:实现高并发
- 分布式搜索:进行复杂的搜索
- 消息队列:异步通信,提高服务并发
- 分布式日志服务:统计整个集群的日志,统一存储,统计进行分析
- 系统监控链路追踪:实时监控整个集群中每个节点的运行状态,一旦出现问题可以快速定位异常所在
- 自动化部署(Jenkins)
- 打包(Docker) kuebernetes RANCHER
微服务简介
单体架构
将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:
- 架构简单
- 部署成本低
缺点:
- 耦合度高
分布式架构
根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
优点:
- 降低服务耦合
- 有利于服务升级拓展
缺点:
- 服务治理
- 服务拆分粒度?
- 服务集群地址如何维护?
- 服务之间如何实现远程调用?
- 服务健康状态如何感知?
微服务架构特征
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立、技术独立、数据独立、部署独立
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
微服务结构
技术框架
- SpringCloud
- Dubbo
- SpringCloudAlibaba
差异对比
| Dubbo | SpringCloud | SpringCloudAlibaba | |
|---|---|---|---|
| 注册中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
| 服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
| 配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
| 服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
| 服务监控和保护 | Dubbo-admin,功能弱 | Hystrix | Sentinel |
SpringCloud
SpringCloud是目前国内使用最广泛的微服务框架。
SpringCloud基于SpringBoot
Spring Boot 负责单个服务的应用组织与启动,Spring Cloud 则围绕多个服务协作提供治理组件。可以沿一条调用链理解它们:服务先注册实例信息,消费者按服务名发现实例,再通过 HTTP 客户端发起调用;外部请求由网关统一路由,跨服务的配置、监控与容错由相应组件配合。前面的组件对照表属于本文学习时的技术背景,实际选型还应核对 Spring Boot、Spring Cloud 与 Alibaba 组件的版本兼容关系。