概述
一个应用从零开始一般会经历单例应用,垂直应用到分布式服务架构的演化。
图示
三种应用区别单体应用
当应用规模,团单规模比较小的时候,只需要一个包括了所有功能的应用。这样可以减少部署节点,也减少部署成本。此时,对数据库的ORM操作是架构实现的关键点
优点
- 方便调试,代码都在一起;
- 没有分布式开销,所有服务都在本地容器内;
- 中小型项目可以快速迭代,不需要太多资源
问题
- 版本管理难:当项目规模变大时,代码容易产生冲突。
- 稳定性差:局部服务有问题,可能会影响整体;
- 可维护性差:规模扩大复杂性直线上升,造成系统不易理解;
- 可扩展性差:无法满足高并发下对应用的要求,不利于较高利用率的横向扩展;
- 可复用性差:服务被打包在应用中,功能不易复用;
- 灵活性差:服务不容易灵活调配、升降级等。
适用
垂直应用
当应用对的用户规模变大,请求量越来越高的时候,单体应用增加节点带来的资源浪费会凸显出来,因为绝大多数接口请求量不是特变大,根本没必要扩充到每个多个节点,完全可以将单体应用拆分成几个互不相关的应用,分别对外提供提供服务,此时,加速每个应用开发的mvc框架是架构实现的关键点
分布式服务
当垂直应用越来越多,应用之间的交互不可避免。要考虑抽离核心业务单独部署,逐渐形成稳定的服务中心。而随着团队规模的相应扩大,服务会随着团队的增多而增多,粒度越来越小,也就逐步形成了分布式服务的架构,而当服务粒度细到一定程度、服务数量躲到一定程度,则可以称之为微服务。即在设计好业务边界之后将原来的单体应用分解成一个个细粒度的服务,彼此之间通过某种方式进行通信。微服务架构的关键在于如何做好服务治理、调度、维护工作。目前,Dubbo算是微服务架构中用的表较多的框架,单Dubbo仅仅解决了微服务架构中额一部分问题。另外,Spring Cloud则基本上涵盖了微服务架构的各个方面。
优点
- 应用由一系列服务组成;
- 独立的开发业务;
- 单独部署;
- 分布式管理
网友评论