您现在的位置是: 网站首页 > 程序设计  > 分布式系统 

微服务架构之一(什么是微服务架构)

2020年6月25日 08:00 1381人围观

简介作为互联网中的热点,越来越多的项目在谈论微服务,那什么是微服务?本文从微服务的定义入手,了解下什么是微服务

微服务的定义

要说微服务的定义,先要从两人说起,马丁.富勒和andrew 2014年,马丁.富勒发表了一篇论文,马丁认为微服务是一种架构风格,对于中大型软件项目来说,它们都是有风格的,常见的是模块划分,封装接口或者提供动态库。马丁在论文中定义了微服务的架构风格特点。

一组小的服务

现代软件都在追求小的服务,一个项目可能会有几十个团队共同开发,小模块化的是必须的。但是“小”是没有明确定义的,一般来说,一个模块能被开发很容易理解,那这个服务可以认为是“小”了。

独立的进程

不同的模块功能之间不再是打包成单个进程,而是部署到不同的进程,可以是Apache、Tomcat也可是是docker。

轻量级的通信

传统项目在调用时一般会定义自己的私有协议,或者用一些比较重的协议。微服务主张轻量级的协议,比如使用Http协议,减小服务之间过耦合。

基于业务能力

不同的模块要求的可用性不一样,当发生故障时,我们会提供有损服务,保证核心功能的正常使用。

独立部署

独立部署是微服务最重要的特征,模块之间完全独立,团队各自维护各自的项目升级。

无集中式管理

传统老项目一般会有专门的架构师来规划项目架构和项目技术栈,项目中必须使用同一个技术栈。微服务中不同业务可以根据自己的业务特点选取不同的技术栈,甚至是不同的存储。

andrew对微服务下了个比较抽象的定义

松散耦合

服务之间不能强依赖,扩展一下就是团队之间不能有依赖

服务面向的架构

微服务本质是把大型服务拆分成小服务,所以大型服务用到的架构技术微服务也同样适用

有界上下文

这个比较重要,每个团队可以维护自己的数据源,而不再是共同维护一份数据源,单个团队中有明确的输入输出,能形成一个链路闭环。