这一章节,我来介绍一下Asp.Net Boilerplate框架在微服务开发中所用到的技术及其大体的组织架构。由于本系列仅讨论ABP框架在微服务架构下的应用方案,不涉及具体的业务逻辑,所以在文中,不讨论服务拆分方案等细节,也未采用中台架构等复杂架构方案,此类方案可依据业务需求进行设计,与Asp.Net Boilerplate框架本身无关。

虽然Asp.Net Boilerplate和AbpvNext从框架层面有很大区别,会影响到微服务的分层和模块组织方式等细节实现,但是对于微服务的总体架构及技术选型方面差别不大。

这里,我借用ABPvNext的一张微服务架构示意图:

我们会用到图中提及的一下技术:

  • API网关作为服务调用的总入口,同时负责了负载均衡、身份认证、熔断、限流等功能,Ocelot是基于.NetCore实现的一个主流API网关,对于以.Net技术为主的研发人员来说,更容易使用及修改。

  • IdentityServer也是基于.NetCore开发,是ABP官方推荐的身份认证框架。在这里,我们也同样以IdentityServer4作为身份认证中心。

  • ELK(Elasticsearch、Logstash、Kibana)是目前最常用的日志服务之一(不仅限于.Net技术栈),实际使用中,我们通常会有直接写入lasticsearch、使用ELK+Filebeat、ELK+Kafuka等多种方式。

  • 微服务间通讯方式有同步和异步两种方式,需要依据不同业务场景进行选择。其中同步通讯有多种实现方式,这里我使用了和AbpvNext微服务Demo相同的内外双网关方式,服务间调用通过内网关调用WebAPI接口方式实现。

  • AbpvNext提供了跨服务的事件总线机制,但是Asp.Net Boilerplate未对此进行封装和支持,需要我们额外进行开发。

除此之外,我们还会用到其他一些组成微服务架构必须的技术组件:

  • 服务注册和发现采用Consul

  • 配置中心采用Apollo

  • 应用性能监测采用Skywalking

在此基础上,我们会发现即使我们按照业务聚合拆分了不同的网关,单一网关能够承载的服务数量依旧非常有限。通常我会使用Nginx作为作为上层负载均衡机制,组成网关集群。或依据项目访问量需求,使用云服务提供商提供的SLB组成更加复杂的负载均衡方案。

最终我们用到的技术模块如下:

后面几期,我会按照各个模块分别对Asp.Net Boilerplate在微服务架构中的应用细节进行分享,敬请期待……

服务间调用要通过网关吗_Asp.Net Boilerplate微服务实战(二)架构解析相关推荐

  1. SpringCloud Alibaba微服务实战(二) - Nacos服务注册与restTemplate消费

    说在前面 基础环境搭建,理论,请看上一篇,在这就不扯理论了,直接上代码. 项目结构 代码实现 第一步:在父pom的项目中引入dependencyManagement 在引入父pom之前咱们先来回顾下d ...

  2. controller调用controller的方法_SpringCloud Alibaba微服务实战三 - 服务调用

    导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...

  3. SpringCloud Alibaba微服务实战(三) - Nacos服务创建消费者(Feign)

    什么是Feign Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单.使用 Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用 Feign 注解和 ...

  4. Spring Cloud微服务之Feign——声明式服务间调用

    目录 写在前面 服务间调用常见的方案 方案一:HttpClient 方案二:RestTemplate 方案三:Feign 框架版本问题及可能遇到的坑 搭建服务注册中心 搭建服务1--service-a ...

  5. springCloud - 第10篇 - 服务间调用追踪 (zipkin 的使用)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一. 在微服务系统中,不同应用服务可能会有各种不同的相互调用 . springcloud 集成了 z ...

  6. 怎么看调用的接口_SpringCloud服务间调用

    本篇简介 在上一篇我们介绍了SpringCloud中的注册中心组件Eureka.Eureka的作用是做服务注册与发现的,目的是让不同的服务与服务之间都可以通过注册中心进行间接关联,并且可以通过注册中心 ...

  7. 再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配!

    在微服务项目中,如果我们想实现服务间调用,一般会选择Feign.之前介绍过一款HTTP客户端工具Retrofit,配合SpringBoot非常好用!其实Retrofit不仅支持普通的HTTP调用,还能 ...

  8. spring-Cloud-netflix-快速入门(三)-服务间调用

    目录 环境准备 服务结构 基于(Eureka)服务注册中心的服务间调用 RestTemplate OpenFeign pom依赖 新建客户端类 消费者通过客户端类调用生产者接口 环境准备 使用上一篇的 ...

  9. SpringCloud Alibaba微服务实战三 - 服务调用

    SpringCloud Alibaba微服务实战三 - 服务调用 通过前面两篇文章我们准备好了微服务的基础环境并运行注册服务到nacos上了 统一接口返回结构 在开始今天的正餐之前我们先把上篇文章中那 ...

最新文章

  1. android 去锯齿
  2. php put 参数,php – 如何在Guzzle 5中发送PUT请求的参数?
  3. java sha1加密ascii码_如何使用加密芯片完成SHA1摘要运算
  4. iOS界面设计之基础控件的学习 --- UITextField
  5. android 自定义加载动画效果,Android 自定义View修炼-自定义加载进度动画LoadingImageView...
  6. python网络虫营销_python与sem,大数据降低竞价推广成本利器
  7. pcb文件转成原理图_初学PCB设计,到底该学习哪款软件?
  8. 实践两个servlet小项目
  9. MATLAB 2017a 中文破解版安装教程
  10. ubuntu硬盘序列号怎么查询_如何在Linux中查找硬盘的详细信息?
  11. HPSocket C++控制台版DEMO
  12. 赵小楼《天道》《遥远的救世主》深度解析(38)丁元英的“自嘲”和作者豆豆的深意
  13. 机器学习案例(三):未来销售预测
  14. iOS证书(p12)获取解密公私钥
  15. 网络安全框架知多少?
  16. Qt常见make编译错误:/usr/bin/ld:cannot find -lxxx
  17. 运动目标检测跟踪主流算法
  18. 【cx_Oracle】记录一次 python cx_Oracle出现 ORA-00911: 无效字符
  19. 2021年Java发展怎么样?现在学了Java技术出来是否还能找到工作?
  20. 彻底掌握 Javascript(八)正则表达式【讲师辅导】-曾亮-专题视频课程

热门文章

  1. Nmap扫描参数解析(转)
  2. [bbk5128]第12集 - Chapter 06- Working with Composite Data Types -01-4998(Record)
  3. 逻辑分析仪抓取CAN总线数据
  4. STM32 Option Bytes位 重置为出厂设置
  5. STM32之CAN---中断管理浅析
  6. AB1601继电器干扰问题
  7. 操作系统习题8—设备管理
  8. 聚类算法(3):DBSCAN密度聚类
  9. C++ Primer 5th笔记(chap 15 OOP)继承的构造函数容器
  10. 《研磨设计模式》chap14 迭代器模式(3) 举例