总体架构

  • 所有应用服务、API网关、身份认证服务均部署在Kubernetes容器中,由Kubernetes提供应用配置、服务治理、服务监控等功能。

  • 客户端所有访问均通过Kubernetes的Nginx-Ingress接入服务集群,并由API网关负责路由匹配和身份认证后转发至相应的应用服务处理。应用微服务中不需要二次做身份认证。

  • 身份认证服务用户登录、验证的相关接口。所有请求只在网关做身份认证,下层服务不需要做二次身份认证。

  • 数据库、缓存、日志服务等服务建议部署于独立的服务器上,按需求也可以部署于容器中。

具体架构如下图:

分层架构

这里我们主要讲述服务端,服务分层架构如下:

网关层作为业务服务的总出入口,所有服务调用均需要通过API网关。这里我们使用.Net Core中常用的Ocelot网关

身份认证服务我们采用ABP vNext框架模板提供的身份服务模块,其核心为封装了IdentityServer4.0框架用于提供OAuth2.0协议各种接口。身份认证服务所需数据直接来自数据库或缓存。

聚合服务层主要用于聚合、调度服务层一个或多个微服务。客户端访问的所有接口(除身份认证服务接口以外)均由聚合服务层提供。应用层服务不直接访问数据库,而是通过调用服务层对应服务实现数据操作。通常我们做详细的接口权限管理,也是应用层接口与权限做对应。应用层服务我们采用WebApi+ABP vNext框架实现。

基础服务层,建议依据领域驱动设计思想划分,每个领域设计为一个微服务。该层服务提供具体的领域模型、领域业务的实现。通常每个微服务对应一个数据库,通过仓储实现数据库操作。基础服务层服务不直接提供客户端访问接口,收到请求时也不需要做身份认证、鉴权处理。这里我把基础服务层服务分为两类:第一种是身份管理服务,负责用户角色权限管理,使用ABP vNext框架Application模板构建;第二种是其他业务微服务,提供用户角色权限管理以外的其他业务功能,使用ABP vNext框架Module模式构建。

数据库这里我们采用MySQL、缓存这里采用Redis、日志服务采用Elasticsearch+Logstash+Kibana(ELK)。

具体服务图中服务划分以Demo为例,实际开发中请依据各自项目实际需求对服务进行拆分设计。

由于Demo中设计的应用场景相对简单,更多技术及ABP框架详细用法请参考ABP官方文档。

ABP vNext微服务架构详细教程——架构介绍相关推荐

  1. ABP vNext微服务架构详细教程——结束语

    ABP vNext微服务架构详细教程--简介 ABP vNext微服务架构详细教程--架构介绍 ABP vNext微服务架构详细教程--身份管理服务 ABP vNext微服务架构详细教程--基础服务层 ...

  2. abp vNext微服务框架分析

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

  3. 【转】abp vNext微服务框架分析

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

  4. ABP vNext微服务架构详细教程——项目部署

    1 基础配置 在之前的文章中,我们已经配置了Kubernetes集群并安装了管理工具Kubesphere,文章地址为:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN7 ...

  5. ABP vNext微服务架构详细教程——分布式权限框架(上)

    1 简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...

  6. ABP vNext微服务架构详细教程——简介

    简介 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext 基于ASP.NET C ...

  7. ABP vNext微服务架构详细教程——身份管理服务

    1 框架搭建 ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户.角色.权限管理,ABP基础配置IdentityServer的基础配置数据等功能.module模 ...

  8. ABP vNext微服务架构详细教程——基础服务层

    1 服务创建 在除身份管理相关服务以外的其他业务服务中,我们不需要包含用户角色权限管理功能模块,ABP vNext框架为我们提供了模块模式,其默认模板不包含身份管理相关模块,更适合用于搭建普通的业务微 ...

  9. ABP VNext 微服务演示,项目状态和路线图

    在ABP vNext上的第一个公告之后,我们对代码库进行了很多改进(GitHub存储库上的1100多次提交).我们已经创建了功能,示例,文档等等.在这篇文章中,我想告诉你一些新闻和项目的状态. ABP ...

最新文章

  1. php过滤手机特殊字符,php过滤特殊字符实用函数
  2. 第一个 Dubbo 应用
  3. java pdf添加透明水印_如何在PDF文件中添加透明水印
  4. java 中的sql.date_SQL DATE中的时区vs java.sql.Date
  5. Android中的广播Broadcast详解
  6. 使用promise解决回调地狱_「每日一题」Promise 是什么?
  7. cesium js 路径_vue2.0项目集成Cesium的实现方法
  8. Git 操作总结整合篇
  9. 字体怎么转换html代码,如何设置下列html代码的字体大小和 font-family 以进行水平转换?_html_开发99编程知识库...
  10. Druid Monitor监控JavaSE,杀cmd端口进程
  11. python网络编程基础知识_python网络编程基础
  12. 树莓派pi 4 编译 linuxcnc
  13. linux node安装菜鸟教程,Node.js 安装配置
  14. python---录制音频
  15. Dataphin帮助企业构建数据中台系列之--萃取数据中心
  16. 一个android控件资源网站
  17. 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
  18. Java 后端自学之路之小白
  19. Android IMS 语音通话 vs 视频通话 vs 视频彩铃
  20. 20230210英语学习

热门文章

  1. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good
  2. 嵌入式linux面试题解析(二)——C语言部分三
  3. 测试并发应用 (一)监控Lock接口
  4. 深度优先搜索——八皇后问题
  5. 无线安全***--启程
  6. STB 上Linux软件系统解决方案
  7. 深入浅出自定义标签(二)生成javascript
  8. Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
  9. es6拼接字符串的方式。
  10. Android下强制打开软键盘