总体架构

    本平台从技术上采用ABP vNext.NET Core编写的微服务架构。客户端层主要以现代浏览器为主,适配了PC端和移动端的访问,采用API和应用程序进行交互,同时提供第三方使用的API,支持通过Web服务或消息代理与其他应用程序集成。数据工厂用于整合数据,将分散数据整合到一起,并进行汇总计算,采用统一数据接口向服务层提供数据支撑。如果您之前了解过数据仓库技术,就可以把数据工厂理解为ETL工具。应用支撑层采用Docker部署集群,使用 Kubernetes 进行容器编排和集群管理,静态文件资源使用第三方提供的 CDN 服务进行加速。

  • ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

微服务概念

    微服务体系架构(简称微服务)是开发软件系统的一种架构风格,该架构试图集中精力构建具有明确定义的接口和操作的单功能模块。它将应用程序构建为以业务领域为模型的小型自治服务集合。近年来,随着企业希望变得更加敏捷并朝着DevOps和持续测试迈进,这一趋势变得越来越流行。

微服务的利与弊

    微服务不是灵丹妙药,通过微服务的实施,将暴露出团队沟通、合作以及其它以前可能隐含但现在被迫公开的问题。但是微服务中的API网关可以大大减少构建和质量检查的时间和精力。微服务体系结构是否适合您取决于您的业务场景复杂度,当业务不复杂,团队规模不大的时候,单块架构比微服务架构具有更高的生产率,因为它们各有优缺点。以下是一些优点和缺点:

  • 优点:

    • 微服务架构使开发人员可以自由地独立开发和部署服务;
    • 可以由相当小的团队来开发微服务;
    • 易于集成和自动部署(使用开源持续集成工具,例如Jenkis);
    • 易于扩展并与第三方服务集成;
    • 可以使用不同的语言来编写用于不同服务的代码;
    • 故障隔离:如果一个微服务失败,则另一个将继续工作。
  • 缺点:
    • 由于分布式部署,测试可能变得复杂;
    • 服务数量的增加可能会导致信息壁垒;
    • 作为分布式系统,可能会导致重复工作;
    • 当服务数量增加时,整个产品的集成和管理可能会变得复杂;
    • 开发人员必须付出额外的努力来实现服务之间的通信机制。

系统架构

    微服务层中提供了各种服务,服务之间使用http相互通信或者通过队列服务进行调度来支撑整个业务系统。其中基础服务提供了应用中心、模板中心、表单和流程引擎等功能;数据可视化服务提供数据展示分析包含模板管理、组件管理等功能;二、三维服务提供组件管理、图层管理、三维模型管理及空间分析等功能;Iot管控服务提供设备接入管理、协议解析、设备网关管理等功能;第三方服务与阿里云、腾讯云、华为云等服务商提供的云服务功能进行融合,并与钉钉、企业微信集成;系统管理服务提供整体系统管理功能包含租户管理、功能管理、权限管理、单点登录、企业组织管理等功能。同时系统提供统一日志、消息列队、定时任务、文件处理等服务。日志采用ELK(Elasticsearch、Logstash、Kibana)进行管理,Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;Logstash是一个用来搜集、分析、过滤日志的工具;Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。消息队列服务主要提供了各类通知消息的推送,使用队列的方式防止因消息过多导致推送服务过载。定时任务服务主要用于定时提醒、定时推送等功能。文件处理服务主要用于PDF打印、数据文件导入导出和二维码生成等功能。

持续集成(CI)、自动化构建

    个人理解持续集成是为了配合敏捷开发的速度和效率而产生的一个用于编译、测试、发布、部署的工具。为什么叫持续呢?其实就是编码人员提交了源码,那么该工具就可以进行编译,测试等一系列运作。怎么能够让编码人员很快的知道编码的异常。

工作流程:

基于 abp vNext 微服务开发的敏捷应用构建平台 - 框架分析的更多相关文章

  1. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 文章目录

    系列文章: <基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想> [点击查看] <基于 abp vNext 微服务开发的敏捷应用构建平台 - 文章目录> [ ...

  2. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 项目介绍

    缘起 目前使用ABP框架已经将近3年了,大大小小的项目也陆陆续续做了很多.由于现有信息系统的架构模式是在底层的技术平台上直接构建信息系统并采用技术主导,使用业务无关的编程工具来开发信息系统的缺陷使得系 ...

  3. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想

    许多中小企业的管理模式都是在自身的发展过程中不断摸索,逐步建立起来的,每一家都有其独有的管理模式,而且随着企业的不断发展,管理模式也在不断变化中.企业在发展壮大的过程中离不开信息化系统的支撑,企业在构 ...

  4. [Abp vNext微服务实践] - vue-element-admin管理Identity

    一.简介 abp vNext微服务框架中已经提供通用权限和用户角色管理模块,管理UI使用的是MVC模式,不适用于国内主打的MVVM开发模式.在前端框架选型后笔者决定改造abp vNext微服务框架中原 ...

  5. [Abp vNext微服务实践] - 业务开发

    前几篇分别介绍了abp vNext微服务框架.开发环境搭建和vue element admin前端框架接入,在vue element admin中实现用户角色管理基本功能后就可以开始进行业务开发了,本 ...

  6. abp vNext微服务框架分析

    本文转载自:https://www.cnblogs.com/william-xu/p/11245738.html abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了 ...

  7. [Abp vNext微服务实践] - 框架分析

    一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...

  8. [Abp vNext微服务实践] - 文章目录

    简介 ABP vNext是volosoft的新一代框架,ABP(vNext)完全使用.NET CORE和DDD(领域驱动)打造,目前GitHub已有6K+次提交,发布版本超过40次,Nuget包下载量 ...

  9. [Abp vNext微服务实践] - 租户登录

    简介 Abp vNext微服务授权验证基于ids4,实现租户登录需要在授权服务中获取token,和之前的介绍的登录方式一样,只是多了tenant参数.本篇将介绍在Abp vNext授权服务中启用多租户 ...

随机推荐

  1. 关于Dockerfile

    在Docker中创建镜像最常用的方式,就是使用Dockerfile.Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A.B.C.D-的步骤.Dockerfile其内部包含 ...

  2. 第十七章 nginx动静分离和rewrite重写

    一.动静分离 动静分离,通过中间件将动静分离和静态请求进行分离:通过中间件将动态请求和静态请求分离,可以减少不必要的请求消耗,同时能减少请求的延时.通过中间件将动态请求和静态请求分离,逻辑图如下: 1 ...

  3. JavaSE学习笔记02运算符、帮助文档生成与Scanner输入

    1. 运算符 1. 算术运算符:+,-,*,/,%,++,-- //二元运算符 int a = 10; int b = 20; int c = 25; int d = 25; System.out.p ...

  4. Prometheus入门教程(三):Grafana 图表配置快速入门

    文章首发于[陈树义]公众号,点击跳转到原文:https://mp.weixin.qq.com/s/sA0nYevO8yz6QLRz03qJSw 前面我们使用 Prometheus + Grafana ...

  5. 实用!8个 chrome插件玩转GitHub,单个文件下载小意思

    作为程序员对 GitHub 应该都不会陌生,我经常沉迷其中,找一些惊艳的项目或者工具.不过用的时间久了,发现它的用户体验实在是不敢恭维,有时候会让你做很多重复操作,浪费不少时间. 比如我想单独下载一个 ...

  6. Redis---09Redis集群(二)

    一.集群的Jedis开发: 1.导入jar包 jedis-2.8.1.jar commons-pool2-2.4.2.jar 2.代码 public class TestCluster { publi ...

  7. APIO2008免费道路

    题目大意 给定一张n个点m条边的图,图上有两种边,求保证有k条第一种边的情况下的最小生成树 传送门 题解 考虑最小生成树kruskal算法 先找到不含限制的最小生成树,然后就可以知道哪些第一种边是必选 ...

  8. CodeForces 916D Jamie and To-do List

    题意 你需要维护一个任务列表,有 \(q\) 次操作,每次操作形如以下四种: set a x:设置任务 \(a\) 的优先级为 \(x\),如果任务列表中没有 \(a\) 则加进来. remove a ...

  9. 使用Azure静态Web应用部署Blazor Webassembly应用

    上一次演示了如何使用Azure静态web应用部署VUE前端项目(使用 Azure静态web应用+Github全自动部署VUE站点).我们知道静态web应用支持VUE,react,angular等项目的 ...

  10. 用 Java 训练深度学习模型,原来可以这么简单!

    本文适合有 Java 基础的人群 作者:DJL-Keerthan&Lanking HelloGitHub 推出的<讲解开源项目> 系列.这一期是由亚马逊工程师:Keerthan V ...