在介绍微服务之前,不得不先先介绍一下单体系统
单体系统
在以往传统的企业中,针对一个复杂的业务需求,通常使用对象或业务类型来构建一个单体项目。在项目中将需求分为三部分:数据库、服务端处理、前端展现。
在业务发展初期,由于所有的业务逻辑在一个应用中,开发、测试、部署都还比较容易且方便。但是,随着企业的发展,系统为了应对不同的业务需求会不断为单体项目加入不同的业务模块;随着移动端设备得的进步,前端展现模块已经不仅仅局限于web的形式。所以维护成本会越来越大,且难以控制
微服务
微服务是一种构架风格
微服务架构的系统是一个分布式的系统,按业务划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求
每个微服务仅关注与完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力
微服务的特点
微服务就是将一个单体架构的应用按业务划分为一个个独立运行的程序已服务,它们之间通过HTTP协议的进行通信。可以采用不同的编程语言,使用不同的存储技术,自动化部署,减少人为控制,降低出错概率。
当然,服务数量越多,管理起来越复杂。
微服务的优势
- 将复杂的业务拆分成多个小的业务,每一个业务拆分成一个服务,将复杂的问题简单化。利于分工,减低新人的学习成本。
- 微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集中化部署,加强系统的负载能力
- 服务采用HTTP协议通信,服务与服务之间完全独立。每一个服务可以根据业务场景选取合适的编程语言和数据库
- 微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响