微服务架构是一种架构模式,提倡将单位应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。
每个服务运行在一个独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API的风格)。
每个服务都是围绕着具体业务进行构建,并且能够被独立地部署到生成环境。
另外应当尽量避免统一的集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。
比如医院中眼科、化验科等就一个小的服务,而对外提供一个大的服务就是医院。
微服务优点与缺点:
●优点:每个服务足够内聚,够小,代码容易理解这样能够明确地指定一个业务功能或者是业务需求。一个微服务开发简单,开发效率高,因为一个微服务就是专一地只做一个事情能够被小团队进行独立的开发。微服务是松耦合的,是有功能意义的服务,无论是开发阶段或者是在部署阶段都是独立的。微服务可以使用不同的语言进行开发。容易与第三方的技术进行集成,允许容易灵活的方式集成自动部署,通过持续集成工具进行集成如Jenkins Hudson 等微服务容易让开发人员理解,修改访问维护微服务允许利用融合新的技术微服务只专注业务逻辑的代码,不会和HTML/CSS等前台技术以及组件混合每个微服务都有直接的存储的能力,可以拥有自己的数据库,也可以用拥有同一个数据库。
●缺点:开发人员要处理分布式系统的复杂性。多服务运维难度加大。系统部署依赖。机器之间的通信成本加大。数据的一致性,系统的集成测试难度加大。性能的监控难度加大。