分布式系统的概念
大型互联网项目架构目标
集群,指的是一个业务模板,部署在不同的服务器上
分布式,一个大的业务模块,拆分成多个不同的子模版,分别部署在不同的服务器上
架构的演进
单体架构
单体架构存在的问题:
- 项目启动慢
- 可靠性差
- 可伸缩性差
- 扩展性和可维护性差
- 性能底
垂直架构是指将单体架构的多个模块拆分为多个独立的项目,形成多个独立的单体架构
垂直架构的存在的问题
- 重复的功能太多
分布式架构是指在垂直的架构的基础上、将公共业务模块抽取处理,作为独立的服务,供其他调用者消费,以实现服务的共享和重用
RPC: 远程调用过程,通过协议和技术老实现RPC的过程
分布式架构存在的问题
- 服务提供房一旦产生变更,所有消费放都需要变更
SOA架构 :是一个组件模型,它将应用程序的不同的功能单元进行拆分,
并通过这些服务之间定义良好的的接口和锲约联系起来。
ESB 企业服务总线,服务中介,主要提供了一个服务于服务之间的交互,
ESB包含功能如:负载均衡,流量控制,加密处理,服务的监控。异常处理,监控告急
微服务架构:是在SOA上做的升华,微服务架构强调的一个重点是业务需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成。
微服务架构 = 80% 的SOA服务架构的思想 + 100%的组件化架构思想 + 80 %的领域建模思想
特点:
- 服务实现了组件化:开发者可以自由的选择开发技术。也不需要协调其他团队
- 服务之间交互一般使用REST API
- 去中心化:每个服务都有自己私有的数据库持久化业务数据
- 自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维
Dubbo 是SOA时代的产物, springCloud 是微服务时代的产物