网站整改建设安全设备方案,哪个网站可以做效果图,石家庄网站制作福州,杨凌企业网站建设通过上篇我们知道#xff0c;网关是外部访问的统一入口#xff0c;本文采用Ocelot作为Api网关。环境要求#xff1a;vs2019.NetCore3.1Ocelot16.0.1创建一个产品服务Api站点#xff08;AAStore.ProductCatalog.Api#xff09;添加一个ProductController[Route(api/[… 通过上篇我们知道网关是外部访问的统一入口本文采用Ocelot作为Api网关。环境要求vs2019.NetCore3.1Ocelot16.0.1创建一个产品服务Api站点AAStore.ProductCatalog.Api添加一个ProductController [Route(api/[controller])][ApiController]public class ProductController : ControllerBase{[HttpGet(template:Get)]public string GetProductById(){return Product service;}}
运行浏览然后再创建一个订单服务Api站点AAStore.Orde.Api添加一个OrderController [Route(api/[controller])][ApiController]public class OrderController : ControllerBase{[HttpGet(template:Get)]public string GetOrder(){return Order Service;}}
运行浏览两个服务已经已经准备好了最后创建一个网关站点AAStore.WebApiGateway安装Ocelot创建一个json配置文件ocelot.json{Routes: [{DownstreamPathTemplate: /api/Product/get,DownstreamScheme: http,DownstreamHostAndPorts: [{Host: localhost,Port: 8081}],UpstreamPathTemplate: /api/Product/{everything},UpstreamHttpMethod: [ Get ]},{DownstreamPathTemplate: /api/Order/get,DownstreamScheme: http,DownstreamHostAndPorts: [{Host: localhost,Port: 8082}],UpstreamPathTemplate: /api/Order/get,UpstreamHttpMethod: [ Get ]}]
}ocelot api网关的主要功能是接收传入的HTTP请求并将其转发到下游服务目前作为一个HTTP请求。Ocelot将一个请求到另一个请求的路由描述为Routes。DownstreamPathTemplate、Scheme 和 DownstreamHostAndPorts 构成要将此请求转发到的内部微服务 URL。端口是服务使用的内部端口。使用容器时在其 dockerfile 中指定端口。Host 是一个服务名称取决于使用的服务名称解析。使用 docker-compose 时服务名称由 Docker 主机提供它使用 docker-compose 文件中提供的服务名称。如果使用 Kubernetes 或 Service Fabric 等业务流程协调程序则应通过每个业务流程协调程序提供的 DNS 或名称解析来解析该名称。DownstreamHostAndPorts 是一个数组包含要将请求转发到的任何下游服务的主机和端口。通常这只包含一个条目但有时可能想要将均衡请求加载到下游服务而通过 Ocelot 即可添加多个条目然后选择负载均衡器。但是如果使用 Azure 和任何业务流程协调程序那么通过云和业务流程协调程序基础结构进行负载均衡可能会更好。UpstreamPathTemplate 是一个 URLOcelot 将其用来识别用于客户端中给定请求的 DownstreamPathTemplate。最后使用了 UpstreamHttpMethod因此 Ocelot 可区分对相同 URL 的不同的请求GET、POST、PUT。注意 ocelot16.x版本之后的配置节点写为Routes而非ReRoutes 否则会报错Failed to mat ch Route configuration for upstream path。在Program.cs 通过AddJsonFile方法向生成器提供ocelot.json文件、添加Ocelot服务AddOcelot和添加ocelot中间件UseOcelot .ConfigureWebHostDefaults(webBuilder {webBuilder.ConfigureAppConfiguration((hostingContext, config) {config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath).AddJsonFile(ocelot.json).AddEnvironmentVariables();;}).ConfigureServices(services {services.AddOcelot();services.AddHttpContextAccessor();}).Configure(app {app.UseOcelot().Wait();});});
然后运行网关通过网关访问产品、订单微服务如果运气好的话跟着一步一步做你也可以运行成功。当然ocelot还有很多功能如路由、请求聚合、服务发现、WebSockets、认证、授权、LB、K8S、限流、熔断等等。参考https://docs.microsoft.com/zh-cn/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot