ABP vNext微服务架构详细教程——架构介绍
总体架构
所有应用服务、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微服务架构详细教程——架构介绍相关推荐
- ABP vNext微服务架构详细教程——结束语
ABP vNext微服务架构详细教程--简介 ABP vNext微服务架构详细教程--架构介绍 ABP vNext微服务架构详细教程--身份管理服务 ABP vNext微服务架构详细教程--基础服务层 ...
- abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- 【转】abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- ABP vNext微服务架构详细教程——项目部署
1 基础配置 在之前的文章中,我们已经配置了Kubernetes集群并安装了管理工具Kubesphere,文章地址为:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN7 ...
- ABP vNext微服务架构详细教程——分布式权限框架(上)
1 简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...
- ABP vNext微服务架构详细教程——简介
简介 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext 基于ASP.NET C ...
- ABP vNext微服务架构详细教程——身份管理服务
1 框架搭建 ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户.角色.权限管理,ABP基础配置IdentityServer的基础配置数据等功能.module模 ...
- ABP vNext微服务架构详细教程——基础服务层
1 服务创建 在除身份管理相关服务以外的其他业务服务中,我们不需要包含用户角色权限管理功能模块,ABP vNext框架为我们提供了模块模式,其默认模板不包含身份管理相关模块,更适合用于搭建普通的业务微 ...
- ABP VNext 微服务演示,项目状态和路线图
在ABP vNext上的第一个公告之后,我们对代码库进行了很多改进(GitHub存储库上的1100多次提交).我们已经创建了功能,示例,文档等等.在这篇文章中,我想告诉你一些新闻和项目的状态. ABP ...
最新文章
- php过滤手机特殊字符,php过滤特殊字符实用函数
- 第一个 Dubbo 应用
- java pdf添加透明水印_如何在PDF文件中添加透明水印
- java 中的sql.date_SQL DATE中的时区vs java.sql.Date
- Android中的广播Broadcast详解
- 使用promise解决回调地狱_「每日一题」Promise 是什么?
- cesium js 路径_vue2.0项目集成Cesium的实现方法
- Git 操作总结整合篇
- 字体怎么转换html代码,如何设置下列html代码的字体大小和 font-family 以进行水平转换?_html_开发99编程知识库...
- Druid Monitor监控JavaSE,杀cmd端口进程
- python网络编程基础知识_python网络编程基础
- 树莓派pi 4 编译 linuxcnc
- linux node安装菜鸟教程,Node.js 安装配置
- python---录制音频
- Dataphin帮助企业构建数据中台系列之--萃取数据中心
- 一个android控件资源网站
- 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
- Java 后端自学之路之小白
- Android IMS 语音通话 vs 视频通话 vs 视频彩铃
- 20230210英语学习
热门文章
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good
- 嵌入式linux面试题解析(二)——C语言部分三
- 测试并发应用 (一)监控Lock接口
- 深度优先搜索——八皇后问题
- 无线安全***--启程
- STB 上Linux软件系统解决方案
- 深入浅出自定义标签(二)生成javascript
- Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
- es6拼接字符串的方式。
- Android下强制打开软键盘