{"id":13754034,"url":"https://github.com/yt7589/imsa","last_synced_at":"2025-04-10T17:15:16.716Z","repository":{"id":100994562,"uuid":"116621517","full_name":"yt7589/imsa","owner":"yt7589","description":"工业互联网平台微服务云架构","archived":false,"fork":false,"pushed_at":"2018-02-06T15:18:20.000Z","size":110,"stargazers_count":163,"open_issues_count":4,"forks_count":13,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-09-26T01:39:12.605Z","etag":null,"topics":["industrial-internet-platform","intelligent-manufacturing","java8","message-bus","microservice"],"latest_commit_sha":null,"homepage":"http://blog.csdn.net/yt7589","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yt7589.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-01-08T02:54:54.000Z","updated_at":"2024-06-25T02:00:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"811d1d78-5924-454f-b046-1d27ff44c7de","html_url":"https://github.com/yt7589/imsa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt7589%2Fimsa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt7589%2Fimsa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt7589%2Fimsa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt7589%2Fimsa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yt7589","download_url":"https://codeload.github.com/yt7589/imsa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219876941,"owners_count":16554806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["industrial-internet-platform","intelligent-manufacturing","java8","message-bus","microservice"],"created_at":"2024-08-03T09:01:37.703Z","updated_at":"2024-09-29T13:41:09.278Z","avatar_url":"https://github.com/yt7589.png","language":"Java","funding_links":[],"categories":["java8"],"sub_categories":[],"readme":"# 工业互联网微服务架构（IMSA）\u003cbr /\u003e\n工业互联网是新一代信息通信技术和现代工业技术深度融合的产物，是制造业数字化、网络化、智能化的重要载体，是全球产业竞争的制高点。工业互联网通过建立连接机器、物料、人、信息系统的基础网络，实现工业数据的全面感知、动态传输、实时分析，形成科学决策和智能控制，提高制造资源配置效率，正成为领先企业竞争的新赛道，全球产业布局的新方向，制造大国竞争的新焦点。工业互联网平台是工业全要素链接的枢纽，是工业资源配置的核心。\n工业互联网平台在理念上非常具有前瞻性，但是在具体落地实现上，还没有成熟的经验可以借鉴。尤其在工业互联网平台技术架构方面，由于工业互联网固有的复杂性，现有平台在具体应用中都会出现各种问题，迫切需要一种全新的架构来处理工业互联网平台的特殊需求。Imsa正是基于这一背景，提出的基于微服务的新一代工业互联网平台。\u003cbr /\u003e\n## 技术选型概述\n在系统架构上，我们选择采用基于消息总线机制的异步消息处理机制，实现微服务之间的松耦合和容错性，同时通过具有有限状态机的微服务控制器，实现跨微服务的分布式事务处理功能，业务逻辑实现基于总线机制，使系统具有更好的可扩展性，可以不改变现有软件架构，实时动态的支持未来的新业务，这一点对复杂的工业互联网应用非常重要，因为技术在快速发展，不断会有新子系统加入，如果按照之前系统集成方式，不仅耗时耗力，而且会使系统越来越庞大复杂难以维护。\u003cbr /\u003e\n微服务就是将原来工业互联网应用中的服务或者系统，拆成更小的单位，例如采用微服务之前，企业采用面向服务（SOA)架构，会有采购服务、生产计划服务、成品服务、销售服务等，由于这种服务基本基于企业的组织架构，所以每种服务体积特别庞大，业务特别复杂，使得维护和升级十分不便。而采用微服务之后，会将这些服务做进一步拆分，形成几十、几百甚至上千个微服务，而每个微服务业务逻辑和实现都非常简单，维护和升级非常方便，可以快速响应业务逻辑的变化，同时可以根据技术的发展情况，持续采用最新技术框架，甚至转换到更新的编程语言。\u003cbr /\u003e\nIMSA采用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的推广普及做出一些贡献。\n## 项目概述\n项目是以Eclipse作为集成开发环境，采用Maven作为项目构建工具，由以下几个子项目构成：\n### 根项目Universe\n主要是引入项目中所需要的公共类，避免在子项目中重复引用的空间浪费及版本冲突的问题。\n### 工具类项目Common\n实现系统的通用功能：例如通过连接池操作数据库、Redis，加密解密算法实现等。\n### 门户Facade\n虽然我们系统内部采用基于消息总线异步消息处理机制，但是与外部系统进行交互，还需要提供类REST的接口，门户Facade接收外部系统的REST请求，将其转换为系统消息并发送到消息总线上来，并将系统的处理结果，以REST响应形式发送给外部调用者。\nfacade：与REST类客户端交互项目\n### 消息总线Plato\n消息总线Plato实质上与传统消息中间件中的主题（Topic）类似，所有微服务控制器，需要向消息总线Plato注册感兴趣的消息类型。当有消息发送到消息总线上时，消息总线会将通知监听此类消息的微服务控件器，从而完成最终的业务逻辑。\n### 微服务控制器项目Caesar\n向消息服务器注册感兴趣的消息，同时会接收来自消息总线的消息通知，调用相应的微服务，来实现特定的业务逻辑。微服务控制器会为每个业务过程建立一个有限状态机，通过消息机制完成有限状态机状态的更新，如果其中某一个微服务调用失败，则会按照预定义的路径，调用相应的微服务，实现事务的回滚。\u003cbr /\u003e\n微服务控制器是所有具体的微服务控件器的基础功能项目，具体的微服务控制器项目，会依赖于此项目。\n### 微服务基类项目Apollo\n微服务用来实现具体的原子性的业务逻辑，同时实现当事务中其他微服务失败时，回滚已执行的业务逻辑。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyt7589%2Fimsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyt7589%2Fimsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyt7589%2Fimsa/lists"}