开篇
在微服务之前,所有系统都是为单体架构,例如一个商城系统,包含了:
- 用户管理
- 商品管理
- 订单管理
等功能,全部代码都在一块,使用同一个数据库:
随着时间的推移,单体服务的问题也逐渐的暴露了出来:
1:如果并发大了,只能通过负载均衡方式增加并发,同时数据库只能增加配置
2:数据库始终是个瓶颈,所有功能都依赖于同一个数据库,如果数据库出现问题,所有服务都将无法访问
3:如果程序出错了,将会导致整个系统无法访问
4:开发协作困难,所有开发人员共同维护一个项目
这个时候,就出现了微服务架构
微服务架构
面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
微服务即是SOA的演进架构,但是SOA不绑定实际的技术,不同的服务可以用不同的语言方式实现
这里可以看到 用户服务其实有多个,类似于单体架构,每个服务之间可以扩展成多个服务,同时提供业务支持,增加并发
微服务的定义
1:微服务是基于SOA的演进架构,核心点在于拆分功能
2:拆分的服务应该需要单一职责的,每个服务只负责做好一件事情
3:拆分的服务相互之间可以通信,也可以直接对外提供服务,例如订单服务需要从用户服务获取用户信息
微服务完整的生态
从用户入口开始来说,微服务整个生态包含了:
1:微服务网关 服务统一入口
2:服务注册发现 用于统一管理服务地址,
3:配置中心 统一管理微服务配置
4:服务监控 监控服务的运行状态
5:服务调用链追踪 服务互相之间调用链日志
6:服务统一日志
微服务可以干啥
微服务架构实现后,可以很好的扩展拆分服务功能,分配开发任务,各个服务直接可额外的开启多个服务,增加可用性,并发性能提升,还可以装逼