导读 | 微服务
在介绍springcloud之前,先整体认识一下,什么是微服务?
一、系统演进的历程
系统演进的历程主要分为四个部分,MVC架构》RPC构架》SOA架构》微服务架构,大家可以在网上查一下前三种构架,这里咱们只是重点介绍微服务,此处省略简单介绍一下,如下是传统应用架构的主要结构图:
二、微服务与传统巨石应用的区分是什么?
传统巨石应用(monolith)
web应用程序发展的早期,大部分web工程是将所有的功能模块(service side)打包到一起并放在一个web容器中运行,很多企业的Java应用程序打包为war包部署到容器运行。其他语言(Ruby,Python或者C++)写的程序也有类似的问题。这种将所有功能都部署在一个web容器中运行的系统就叫做巨石型应用。那传统应用水平扩展后有什么效果呢,如下是传统应用架构水平扩展的主要结构图:
传统巨石应用(monolith)好处与不足之处
好处:单个应用设计编程、容易测试、因为是单体程序可直接打成一个完整的包,部署web容器中,即可运行。
不足之处:单体应用随着业务和功能不不断增加,代码量会增多,代码量增多后维护不容易,同时如果部署的话部署打包时间会增长,最麻烦的是如果业务功能有变更,修改代码成本会增大,同时单体应用对资源有一定的要求。
微服务的动机,就是为了解决单体应用的不足,从而把单体应用拆分成多个微服务的情况下产生的。
三、微服务的定义
微服务的概念源于2014年3月Martin Fowler所写的文章。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。
如下是微服务架构的主要结构图:
优点
缺点
声明:文章属于个人原创,转载请注明文章出处