Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yt7589/imsa

工业互联网平台微服务云架构
https://github.com/yt7589/imsa

industrial-internet-platform intelligent-manufacturing java8 message-bus microservice

Last synced: 2 months ago
JSON representation

工业互联网平台微服务云架构

Awesome Lists containing this project

README

        

# 工业互联网微服务架构(IMSA)

工业互联网是新一代信息通信技术和现代工业技术深度融合的产物,是制造业数字化、网络化、智能化的重要载体,是全球产业竞争的制高点。工业互联网通过建立连接机器、物料、人、信息系统的基础网络,实现工业数据的全面感知、动态传输、实时分析,形成科学决策和智能控制,提高制造资源配置效率,正成为领先企业竞争的新赛道,全球产业布局的新方向,制造大国竞争的新焦点。工业互联网平台是工业全要素链接的枢纽,是工业资源配置的核心。
工业互联网平台在理念上非常具有前瞻性,但是在具体落地实现上,还没有成熟的经验可以借鉴。尤其在工业互联网平台技术架构方面,由于工业互联网固有的复杂性,现有平台在具体应用中都会出现各种问题,迫切需要一种全新的架构来处理工业互联网平台的特殊需求。Imsa正是基于这一背景,提出的基于微服务的新一代工业互联网平台。

## 技术选型概述
在系统架构上,我们选择采用基于消息总线机制的异步消息处理机制,实现微服务之间的松耦合和容错性,同时通过具有有限状态机的微服务控制器,实现跨微服务的分布式事务处理功能,业务逻辑实现基于总线机制,使系统具有更好的可扩展性,可以不改变现有软件架构,实时动态的支持未来的新业务,这一点对复杂的工业互联网应用非常重要,因为技术在快速发展,不断会有新子系统加入,如果按照之前系统集成方式,不仅耗时耗力,而且会使系统越来越庞大复杂难以维护。

微服务就是将原来工业互联网应用中的服务或者系统,拆成更小的单位,例如采用微服务之前,企业采用面向服务(SOA)架构,会有采购服务、生产计划服务、成品服务、销售服务等,由于这种服务基本基于企业的组织架构,所以每种服务体积特别庞大,业务特别复杂,使得维护和升级十分不便。而采用微服务之后,会将这些服务做进一步拆分,形成几十、几百甚至上千个微服务,而每个微服务业务逻辑和实现都非常简单,维护和升级非常方便,可以快速响应业务逻辑的变化,同时可以根据技术的发展情况,持续采用最新技术框架,甚至转换到更新的编程语言。

IMSA采用Java8作为底层实现语言,选择Java主要是因为Java目前是大型企业应用的首选语言,技术上比较成熟。采用Java8版本,是因为在互联网时代,Java8之前的版本,由于受到(Struts+Spring+Hibernate)和JBOSS等架构的制约,发展十分缓慢,逐渐被像PHP、Python、C#、Javascript等抢去了风头,如果不是Android平台,Java可能会跌出编程语言排行榜的前10名。但是2015年推出的Java8,充分吸收了其他语言的发展成果,一改之前Jdk的保守习惯,引入基于Lambda的函数式编程、流式Stream API、新型接口规范等内容,成为2015年度的年度语言,重新成为极具竞争力的编程语言。可惜Java8在实际项目中的应用还很少,本项目完全基于Java8,是想通过在实际项目中,使用Java8最新技术,为Java8的推广普及做出一些贡献。
## 项目概述
项目是以Eclipse作为集成开发环境,采用Maven作为项目构建工具,由以下几个子项目构成:
### 根项目Universe
主要是引入项目中所需要的公共类,避免在子项目中重复引用的空间浪费及版本冲突的问题。
### 工具类项目Common
实现系统的通用功能:例如通过连接池操作数据库、Redis,加密解密算法实现等。
### 门户Facade
虽然我们系统内部采用基于消息总线异步消息处理机制,但是与外部系统进行交互,还需要提供类REST的接口,门户Facade接收外部系统的REST请求,将其转换为系统消息并发送到消息总线上来,并将系统的处理结果,以REST响应形式发送给外部调用者。
facade:与REST类客户端交互项目
### 消息总线Plato
消息总线Plato实质上与传统消息中间件中的主题(Topic)类似,所有微服务控制器,需要向消息总线Plato注册感兴趣的消息类型。当有消息发送到消息总线上时,消息总线会将通知监听此类消息的微服务控件器,从而完成最终的业务逻辑。
### 微服务控制器项目Caesar
向消息服务器注册感兴趣的消息,同时会接收来自消息总线的消息通知,调用相应的微服务,来实现特定的业务逻辑。微服务控制器会为每个业务过程建立一个有限状态机,通过消息机制完成有限状态机状态的更新,如果其中某一个微服务调用失败,则会按照预定义的路径,调用相应的微服务,实现事务的回滚。

微服务控制器是所有具体的微服务控件器的基础功能项目,具体的微服务控制器项目,会依赖于此项目。
### 微服务基类项目Apollo
微服务用来实现具体的原子性的业务逻辑,同时实现当事务中其他微服务失败时,回滚已执行的业务逻辑。