本文共 4929 字,大约阅读时间需要 16 分钟。
目录
近年来,微服务受到了广泛的欢迎,大多数系统都采用这种新架构来开发业务线应用程序。但是,微服务可能不是针对每个人或每个问题的单一解决方案。假设您有一个独立的团队来构建和管理系统中的独立模块,那么它可能是一种理想的方法。尽管如此,对于单个团队项目来说,开发复杂的分布式应用程序并将其部署到任何云环境中都是更好的架构。
您可以找到有关微服务的更多信息的良好资源。
在本系列中,我将带您了解如何使用ECS Fargate在AWS中部署dotnet核心微服务。
我喜欢AWS lambda和Azure功能等无服务框架。但是,它们在内存,超时和框架版本方面几乎没有限制。假设您有一个需要3 GB以上内存来处理其工作的组件和/或它可能需要10多分钟和/或它使用较旧的.NET Core Framework或Node js框架。AWS fargate是一个无服务框架,用于在ECS容器上部署应用程序,而无需我们维护主机。我们可以自由选择这些容器的框架和内存分配。
我为车辆保险用例创建了。任何客户都可以对元数据服务进行REST调用,以创建/更新客户,车辆信息和车辆保险报价请求。报价将在服务器上生成并发送回客户端。选择报价后,客户应调用策略服务来处理和创建策略。
我们将使用fargate将这些简单的微服务部署到AWS ECS集群。
让我们首先了解ASP.NET Core webapi服务中能够在ECS集群中部署的必要部分。
services.AddStackExchangeRedisCache(options =>{ options.Configuration = Configuration["Cache:AWSRedisEndPoint"];});
//this line in ConfigureServices method of Startup.csservices.AddHealthChecks();//this line in Configure method of Startup.cs app.UseHealthChecks("/health");
[Route("metadataapi/[controller]")]public class CustomersController : ControllerBase[Route("metadataapi/[controller]")]public class VehiclesController : ControllerBase
app.UseSwagger(c =>{ c.RouteTemplate="policyapi/swagger/{documentName}/swagger.json";\});app.UseSwaggerUI(c =>{ c.SwaggerEndpoint("/policyapi/swagger/v1/swagger.json","APIdoc"); c.RoutePrefix = "policyapi/swagger";});
docker-compose up -d --build
aws ecr create-repository --repository-name metadata-api
docker tag metadataapi:latest875373411184.dkr.ecr.us-west1.amazonaws.com/insurancemetadata:latest
aws ecr get-login --no-include-email --region us-west-2
docker push 875373411184.dkr.ecr.us-west-1.amazonaws.com/insurancemetadata
将docker镜像推送到ECR存储库后,我们就可以使用以下两个cloud-formation 模板来部署服务。
我们需要通过传递必要的参数为应用程序中的每个服务创建一个堆栈。
aws cloudformation deploy --template-file /path_to_template/microservice-cluster-elb.yaml --stack-name my-new-stack--parameter-overrides EnvironmentName=mycluster vpcid=...
我们学习了如何使用cloudformation在AWS ECS Fargate中部署dotnet微服务。在本节中,我们将使用AWS控制台部署以了解每个AWS服务。
在Container弹出窗口中填写此服务的名称,镜像URL和端口等信息。您可以将其余设置保留为默认值,除非您有特定要求。
对您的微服务应用程序中的所有其他服务重复步骤3,它们应该在具有不同路由的相同ELB DNS URL上可用。
使用此方法,您可以部署微服务而不会影响其他服务。显然,这种UI方法只是为了理解各种服务。大多数情况下,我们应该使用某种类型的基础架构作为代码技术,如Cloud-formation或Terraform或AWS Code Deploy,以与我们的CI / CD工具集成。
原文地址:
转载地址:http://qjzhj.baihongyu.com/