微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
一、什么是工业微服务
工业微服务是工业互联网平台的载体,是以单一功能组件为基础,通过模块化组合方式实现“松耦合”应用开发的软件架构。一个微服务就是一个面向单一功能、能够独立部署的小型应用,将多个不同功能、相互隔离的微服务按需组合在一起并通过API集实现相互通信,就构成了一个功能完整的大型应用系统。以产品生产为例,就可将其拆解为供应链管理、设备运行状态可视化、生产排程、产线数据分析、操作记录等多个微服务功能模块。
在工业互联网领域,由于工业知识繁杂、工业应用复杂程度高等问题,业内人士普遍认为,使用微服务架构将成为开发工业APP的主流方式。国外主流的工业互联网平台,如西门子的Mindsphere、施耐德Eco Struxure等,都通过云平台支持工业微服务组件的开发、部署和管理,从而达到简化工业APP开发的目的。
二、工业微服务架构和传统开发模式区别
先来看看传统的web开发方式,一般被称为Monolithic(单体式开发)。所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。
三、微服务的特点
● 解耦:同一系统内的服务大部分可以被解耦。因此应用,作为一个整体,可以轻易地被构建、修改和扩展。
● 组件化:微服务可以被看成相互独立的组件,这些组件可以被轻易地替换和升级。
● 业务能力:微服务很小,它们可以专注于某种单一的能力
● 自治:开发者和团队可以独立地工作,提高开发速度。
● 持续交付:允许持续发布软件新版本,通过系统化的自动手段来创建、测试和批准新版本。
● 职责明确:微服务不把应用看成一个又一个的项目。相反,它们把应用当成了自己需要负责的项目。
● 去中心化管理:关注于使用正确的工具来完成正确的工作。这也就是说,没有标准化的方式或者技术模式。开发者们有权选择最好的工具来解决问题。
● 敏捷性:微服务支持敏捷开发。任何新功能都可以被快速开发或丢弃。
四、 微服务架构的优势
● 独立开发:基于各个微服务所独有的功能,它们可以被轻易开发出来。
● 独立部署:基于它们所提供的服务,它们可以被独立地部署到应用中。
● 错误隔离:即便其中某个服务发生了故障,整个系统还可以继续工作。
● 混合技术栈:可以使用不同的语言和技术来为同一个应用构建不同的服务。
● 按粒度扩展:可以根据需求扩展某一个组件,不需要将所有组件全部扩展。