ocelot

基于Docker的Consul服务发现集群搭建

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-09 21:00:09
在去年的 .NET Core微服务系列文章 中,初步学习了一下Consul服务发现,总结了 两篇文章 。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。 一、示例整体架构   此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《 .NET Core微服务之基于Consul实现服务治理 》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gateway则从Consul中获取到服务的IP和端口号,并返回给服务消费者。这里的API Gateway是基于Ocelot来实现的,它不是这里的重点,也就不过多说明了,不了解的朋友请移步我的另一篇:《 .NET Core微服务之基于Ocelot实现API网关服务 》。 二、Consul集群搭建 2.1 Consul镜像拉取 docker pull consul:1.4.4   验证:docker images    2.2 Consul Server实例创建   以下我的实践是在一台机器上(CentOS 7)操作的

.NET Core 微服务—API网关(Ocelot) 教程 [二]

血红的双手。 提交于 2020-08-09 13:31:45
上篇文章( .NET Core 微服务—API网关(Ocelot) 教程 [一] )介绍了Ocelot 的相关介绍。 接下来就一起来看如何使用,让它运行起来。 环境准备  为了验证Ocelot 网关效果,我们先创建3个webapi项目:目录api(Api.Catalog)、订单api(Api.Ordering)、Ocelot网关(ApiGateway.Ocelot);并为每个WebApi项目添加Values控制器(ValuesController),用于区分最终调用效果   如下图:    Ocelot使用    1、添加 Ocelot包依赖:    接下来使用Nuget包管理工具为ApiGateway.Ocelot项目添加Ocelot包引用:      当然也可用使用命令方式添加Ocelot包: Install-Package Ocelot   2、添加Ocelot配置文件:(重点)      向ApiGateway.Ocelot项目添加一个Ocelot.json配置文件,并修改配置文件为如下内容:   { " GlobalConfiguration " : { }, " Routes " : [ { " DownstreamPathTemplate " : " /api/{everything} " , " DownstreamScheme " : " http " , "

.NET Core微服务部分知识点

≯℡__Kan透↙ 提交于 2020-08-07 19:56:30
领域模型:这个是微服务的基础,可以说是基础模型; GateWay:实现服务的认证和授权,可以实现服务的聚合; 代表项目:Ocelot; 使用:添加Ocelot包,添加Ocelot配置,添加配置读取代码,注册Ocelot服务,注册Ocelot中间件; JWT的认证和授权; JWT有三部分组成:Header(令牌类型和加密类型等信息),Payload(支持自定义部分),Signature(Header和Payload和私有密钥计算出来的签名), 要同时部署到gateway和微服务; 服务熔断,服务降级,服务重试,服务限流; 代表项目:Polly; 使用:添加Polly包,服务注册以及使用Polly API配置; 内部服务间通讯--GRPC 优势:默认使用Protocol Buffers序列化,性能相对于Restful Json好很多;基于Http/2;支持双向流式的请求和响应,对批量处理和低延时场景友好。 CQRS:实现领域事件和领域事件处理程序隔离,让服务层独立出来实现服务的认证和授权,以及一些与基础服务相关的业务; 代表项目:MediatR; 来源: oschina 链接: https://my.oschina.net/u/4373992/blog/4405876

基于Docker的Consul服务发现集群搭建

痞子三分冷 提交于 2020-08-06 13:18:47
在去年的 .NET Core微服务系列文章 中,初步学习了一下Consul服务发现,总结了 两篇文章 。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。 一、示例整体架构   此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《 .NET Core微服务之基于Consul实现服务治理 》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gateway则从Consul中获取到服务的IP和端口号,并返回给服务消费者。这里的API Gateway是基于Ocelot来实现的,它不是这里的重点,也就不过多说明了,不了解的朋友请移步我的另一篇:《 .NET Core微服务之基于Ocelot实现API网关服务 》。 二、Consul集群搭建 2.1 Consul镜像拉取 docker pull consul:1.4.4   验证:docker images    2.2 Consul Server实例创建   以下我的实践是在一台机器上(CentOS 7)操作的

基于Docker的Consul服务发现集群搭建

风格不统一 提交于 2020-08-06 09:23:02
在去年的 .NET Core微服务系列文章 中,初步学习了一下Consul服务发现,总结了 两篇文章 。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境。 一、示例整体架构   此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《 .NET Core微服务之基于Consul实现服务治理 》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gateway则从Consul中获取到服务的IP和端口号,并返回给服务消费者。这里的API Gateway是基于Ocelot来实现的,它不是这里的重点,也就不过多说明了,不了解的朋友请移步我的另一篇:《 .NET Core微服务之基于Ocelot实现API网关服务 》。 二、Consul集群搭建 2.1 Consul镜像拉取 docker pull consul:1.4.4   验证:docker images    2.2 Consul Server实例创建   以下我的实践是在一台机器上(CentOS 7)操作的

ocelot Failed to match Route configuration for upstream path

冷暖自知 提交于 2020-08-06 08:37:35
错误信息 warn: Ocelot.Responder.Middleware.ResponderMiddleware[0] requestId: 0HM0HJIOPIQDV:00000001, previousRequestId: no previous request id, message: Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /users, verb: GET. errors found in ResponderMiddleware. Setting error response for request path:/paymodes, request method: GET 错误原因 ocelot版本的配置问题,本人使用的是16.0.1版本,ocelot.json中配置节点应该为Routes,15版本及之前为ReRoutes 15.x 16.x { " ReRoutes ": [ { "DownstreamPathTemplate": "/api/getusers", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host"

微服务框架Demo.MicroServer运行手册

丶灬走出姿态 提交于 2020-08-06 03:38:34
一.背景说明: 之前分享过一个微服务开发框架, “ 享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架 ”,前两天在Github上收到一个Issues,是想我这边提供下完整的运行文档和配置文件,因为之前想法是弄清楚这几个东西的职责之后,对于运行的先后顺序,和需要的配置key应该都会有了解,所以README编写只是介绍了用到了哪些东西,没有说如何运行,但是既然有人问起,我还是满足一下,就当成是自己回顾了。 二.回顾下项目结构 项目结构比较简单: MicroServer.Instance文件夹下面存放的是微服务实例,至于微服务颗粒度的拆分得结合实际的业务情况 Demo.MicroServer.IdentityServer4 统一鉴权中心 Demo.MicroServer.Infrastructure 基础设施,可以自行在里面添加内容 Demo.MicroServer.Ocelot 这一层是Api网关 Demo.MicroServer.Repository 通用的数据访问层,包含MySQL,Mongo,Redis等,之所以抽离出来,是方便各个服务实例可是直接使用这些通用方法。 而上面说的 ".NET Core+Swagger+Consul

[从0到1搭建ABP微服务]

眉间皱痕 提交于 2020-08-05 12:29:00
简介 在 《Abp vNext微服务实践》 系列文章中笔者逐一介绍了ABP微服务架构实践应用的过程,但是由于微服务架构过于复杂且配置十分繁琐,读者在亲自体验中往往不太顺利。在本章系列中我将基于ABP微服务架构重新整理构建更轻量实用的微服务,此外我还会会搭配多种微服务组合方式以提高大家对ABP微服务的理解,构建过程中我会将代码发布至GitHub。 本章系列只是将ABP微服务架构进行重新组合搭建,并不会修改ABP任何应用模块代码,也不会违背ABP设计原则,重构的目的只是为了让大家更好的理解微服务拆分,重构后微服务会更加轻量化可以开箱即用。 架构方案 ABP架构是基于DDD设计,基于模块化实现,所以使用ABP搭建微服务是十分灵活的,目前我会介绍两种架构方案。这两种方案均是基于ABP设计原理,大家可以根据喜好选择一种架构尝试,也可以根据本系列文章的分析和自己理解自主搭建。 基于ABP应用模块的服务和若干个基于ABP的微服务 这种模式实际上和ABP微服务架构是一致的,在这种模式中我会对ABP应用层逐一构建成微服务发布,并且这些微服务将有独立的解决方案。架构图如下: 架构分析 网关服务:基于Ocelot提供所有微服务API接口聚合、限流、熔断等功能,此外网关还提供权限聚合服务。 授权服务:为所有客户端(client)提供身份授权,给所有微服务包括网关提供身份认证。 ABP用户服务

使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服务网关:Step by Step(一)

落爺英雄遲暮 提交于 2020-08-05 04:02:30
网上这部分的文章和资料很多,有一篇非常不错的文章(《 Net Core 基于Ocelot+IdentityServer4+Eureka的搭建高性能网关介绍 》),也介绍了这个内容,我也是参考了其中的某些步骤,一步一步演练下来,感觉.NET Core在微服务生态方面也是越来越成熟,功能也越来越强大。因此,我也撰写记录一下整个步骤,通过Step by Step的形式,加上一些注解,以及对于一些遇到的坑的描述,将整个实践过程记录下来,以便帮到有需要的读者,也为自己的学习做个记录。我不会再在概念性的问题上多费笔墨,比如什么是API网关、Ocelot、IdentityServer4、Eureka又是什么之类的问题,我不会做过多的说明,我会争取用最简单快捷的方式,将相关的实践内容描述清楚,虽然本文的标题后面加了一个“(一)”的字样,代表还会有后续的文章,因为我觉得一篇估计讲不完。 案例场景 在我之前写的《 .NET Core中Ocelot的使用 》系列文章中,我设计了一个场景,同时涉及了两个微服务的RESTful API,当时使用两个微服务,不仅是为了介绍API网关的主要功能,而且还引入了服务发现的内容,因此,使用两个微服务来演示会比较合理。当然,今天我们已经学习过API网关和服务发现的基本知识了,我就进一步将案例场景简化,我们只做一个API:Countries API,在这个API中

ASP.NET Core中Ocelot的使用:基于服务发现的负载均衡

て烟熏妆下的殇ゞ 提交于 2020-08-04 23:27:57
本系列相关文章: 《ASP.NET Core中Ocelot的使用:API网关的应用》 《ASP.NET Core中Ocelot的使用:基于Spring Clound Netflix Eureka的动态路由》 本文将基于前两篇文章所述内容,继续介绍如何在服务发现和动态路由的基础上,使用Ocelot实现负载均衡。Ocelot本身是带有负载均衡功能的,这一点其实跟Nginx提供的 HTTP load balancer 是类似的功能(我觉得整个Ocelot提供的功能,通过Nginx也都可以实现,不过Ocelot更加.NET化,对于.NET开发人员来说更为简单和容易接受)。根据官方文档,Ocelot支持如下几种负载均衡策略: LeastConnection:根据服务当前正在处理的请求个数来决定将使用哪个服务来处理新接收到的请求,将请求转发给当前连接数最少的服务 RoundRobin:经典模式,轮询法,逐个选择可用的服务来处理接收到的请求 NoLoadBalancer:仅使用第一个可用的服务来处理接收到的请求 CookieStickySessions:通过使用Cookie,确保特定的请求能够被分配到特定的服务上进行处理 今天我们选择RoundRobin来看看如何基于服务发现来实现负载均衡。同样,首先需要对架构进行调整。 调整架构 与上文中的架构相比,这里不会引入新的服务