前言
本篇仅作引导,内容较多,故分为上下两篇,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读。如下图所示:
文档官网地址:https://docs.xin-lai.com/
目录
总体介绍
- 微服务架构的好处
- 微服务架构的不足(这个时候就需要用到服务发现)
- 传统模式
- Ocelot(网关)模式
- 集成IdentityService(认证)
- 集成consul(服务发现)
基于Ocelot搭建一个简单的微服务架构
- Ocelot
- 基本集成
- 添加Ocelot
- 添加测试API项目
- 配置项目的上游请求对象(ocelot.json)
- 启动结果
- 聚合API文档(SwaggerUI)
- ConfigureServices
- Configure
- appsettings.json
- 配置Swagger的上游请求对象(ocelot.json)
- 启动结果
- IdentityServer 集成
- 添加授权服务项目
- 配置appsetting.json
- 添加IdentityServerConfig类
定义API资源
定义身份资源
定义测试客服端
- 配置Startup
- ConfigureServices
- Configure
- 启动结果
- 配置ApiGateway网关项目
- 调用Ocelot管理API
- API方法
- Consul(服务发现)
- 本地部署
- 安装
- 添加服务配置
- 添加检查配置
- docker部署(腾讯云)
- 配置Ocelot 网关
- 集成消息队列——CAP
- 简介
- 环境准备
- .Net Core 集成 CAP
Cap 发布
Cap 订阅(接收)
最后——附上总体代码
总体介绍
随着业务需求的快速发展变化,需求不断增长,迫切需要一种更加快速高效的软件交付方式。微服务可以弥补单体应用不足,是一种更加快速高效软件架构风格。单体应用被分解成多个更小的服务,每个服务有自己的独立模块,单独部署,然后共同组成一个应用程序。把范围限定到单个独立业务模块功能。分布式部署在各台服务器上。本篇我们将介绍如何使用.NET Core打造自己的微服务架构。
注意:微服务架构不是万能药,本篇仅供参考和探讨。对于大部分小项目来说,请不要为了微服务而微服务。毕竟技术不是万能的,技术是为业务服务的。
微服务架构的好处
- 单个服务很容易开发、理解和维护。
- 每个服务都可以有专门开发团队来开发。
- 每个微服务独立的部署。
- 每个服务独立扩展。
微服务架构的不足(这个时候就需要用到服务发现)
- 微服务应用是分布式系统,由此会带来固有的复杂性。
- 服务地址目录,服务健康度,部署困难,服务依赖问题,数据库分区问题。
传统模式
Ocelot(网关)模式
集成IdentityService(认证)
集成consul(服务发现)
基于Ocelot搭建一个简单的微服务架构
Ocelot
Ocelot 是一个仅适用于 .Net Core 的网关组件。Ocelot
中间件使用非常简单,难的点在于如何去配置。它的功能包括了:路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器等的集成,而这些功能都是通过配置实现。
Ocelot的开源地址:https://github.com/ThreeMammals/Ocelot
Ocelot官网地址:https://ocelot.readthedocs.io/en/latest/index.html
基本集成
添加Ocelot
新建一个 .Net core 2.2 web 项目(ApiGateway),添加以下Nuget包:
- Ocelot
- Ocelot.Administration Ocelot支持在运行时通过经过身份验证的HTTP
- API更改配置。这可以通过两种方式进行身份验证:使用Ocelot的内部IdentityServer(仅用于验证对管理API的请求)或将管理API身份验证挂钩到您自己的IdentityServer中。
- Ocelot.Cache.CacheManager CacheManager.Net扩展包
- Ocelot.Provider.Polly Polly.NET扩展包
在项目根目录添加ocelot.json,名字可以自取。
前面说了,所有功能都是通过配置实现的,所以配置也相对复杂。配置有两个部分。一组ReRoutes和一个GlobalConfiguration。ReRoutes是告诉Ocelot如何处理上游请求的对象。GlobalConfiguration顾名思义是全局配置,具体配置请查看官网。下面列举简单配置
{"GlobalConfiguration": {//外部访问路径"BaseUrl": "http://localhost:13000