1、服务演进
架构演进可以看这个图:https://dubbo.apache.org/zh-cn/docs/user/preface/background.html
1)单体应用
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
2)垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
3)分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
4)流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。
2、SOA简介
参考:https://blog.csdn.net/zdyueguanyun/article/details/60135059
SOA全英文是Service-Oriented Architecture,即面向服务编程,是一种架构思路。系统中其中包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能,各个服务通常以独立的形式部署运行,服务之间通过网络进行调用。
提到SOA就要提到ESB(企业服务总线),ESB 就是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。
SOA和ESB的关系:SOA的实现是依赖与ESB的。
3、微服务简介
参考:https://www.cnblogs.com/wintersun/p/6219259.html
微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。
微服务是组件化、松耦合、自治、去中心化的,微服务和SOA的区别在于,服务粒度更细,一个应用可能由几十上百个微服务实例。那么这些服务直接是怎么关联的呢?一种思路是引入一个类中心化的服务管理中心,还有一种思路是服务归类分层,这个问题可以参考:https://baijiahao.baidu.com/s?id=1571898753665699&wfr=spider&for=pc
微服务特点:
-
一组小的服务
服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。 -
独立部署运行和扩展
每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。 -
独立开发和演化
技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。 -
独立团队和自治
团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。