《.NET 微服务:适用于容器化 .NET 应用的体系结构》关键结论
作为总结和要点,以下是本指南中最重要的结论。
1 使用容器的好处:
基于容器的解决方案有节约成本的好处,因为容器是针对生产环境中缺少依赖而导致的部署问题提出的解决方案。容器能够显著改善devops和生产操作。
2 容器将无处不在
基于Docker的容器正在成为容器领域的事实标准,而被windows和Linux生态系统中最重要的供应商的支持,包括微软、亚马逊AWS、谷歌和IBM。在不久的将来,Docker可能会在云和按需数据中心中无处不在。
3 容器作为部署单元
一个Docker容器正在成为任何基于服务器的应用程序或服务的标准部署单元。
4 Microservices
microservices体系架构正在成为分布式和大型或复杂任务关键型应用程序的首选方法,这些程序基于由自治服务形式构成的多个独立子系统。在基于microservice的体系结构中,应用程序是作为可以开发、测试、版本控制、部署和独立扩展的服务集合而构建的;这可以包括任何相关的自治数据库。
5 领域驱动的设计和SOA
microservices体系架构模式源于面向服务的体系结构( SOA )和领域驱动设计( DDD)。当您为具备不断进化的业务规则并逐渐形成特定领域的环境设计和开发microservices时,必须考虑DDD方法和模式。
6 Microservices挑战
Microservices提供了许多强大的功能,如独立部署、强子系统边界和技术多样性。然而,它们还引发了与分布式应用程序开发相关的许多新的挑战,如分散和独立的数据模型、microservices之间的弹性通信、最终的一致性,以及从多个microservices聚合日志和监控信息导致的操作复杂性。这些方面比传统的整体应用程序引入更高的复杂性。因此,只有特定的场景适合基于microservice的应用程序。这些包括具有多个演化子系统的大型和复杂的应用程序;在这些情况下,值得投资于更复杂的软件体系结构,因为它将提供更好的长期敏捷性和应用程序维护。
7 任何应用程序的容器
容器对microservices很方便,但并不专为它们。容器还可以与整体应用程序一起使用,包括基于传统的net框架遗留应用程序和通过windows容器实现现代化。使用Docker的好处,例如解决许多部署到生产环境的问题,提供完美的开发和测试环境,以及适用于许多不同类型的应用程序。
8 CLI与IDE
使用Microsoft工具,您可以使用您的首选方法开发集装箱化.NET应用程序。您可以使用Docker CLI和Visual Studio Code开发基于CLI和基于编辑器的环境。或者您可以使用visual studio及其独特的功能来使用基于IDE的方法,例如能够调试多容器应用程序。
9 实现具有恢复能力的云应用程序
在基于云的系统和分布式系统中,总是存在部分故障的风险。由于客户端和服务是单独的流程(容器),服务可能无法及时响应客户的请求。例如,由于部分故障或维护,服务可能会关闭;该服务可能会超载,并对请求作出极其缓慢的反应;或者,由于网络问题,短时间内可能无法访问。因此,基于云的应用程序必须包含这些故障,并制定应对这些故障的策略。这些策略可以包括重试策略(重新发送消息或重试请求)和实现断路器模式,以避免重复请求的指数负载。基本上,基于云的应用程序必须具有健壮机制——定制的机制,或者基于云基础架构的机制,如来自调度器或服务总线的高级框架。
10 安全
我们的容器和microservices的现代世界可能会暴露新的漏洞。基本的应用程序安全性是基于身份验证和授权的;有多种方法来实现这些。然而,容器安全包括额外的关键组件,从而导致本质上更安全的应用程序。构建更安全的应用程序的一个关键要素是有一种安全的方式与其他应用程序和系统进行通信,这通常需要凭据、令牌、密码和其他类型的机密信息—通常称为应用程序机密。任何安全解决方案都必须遵循安全最佳做法,例如在传输过程中加密密钥;其他时候解密密钥;并防止在最终应用程序使用时无意泄漏的密码。这些密钥需要存储,并在某个地方保持安全。为了帮助安全性,您可以利用您选择的调度器的基础架构,或者像Azure Key Vault这样的云基础架构,以及它为应用程序代码提供的方式。
11 调度器
基于容器的调度器,如在Azure Container服务( kubernetes、Mesos DC /OS、Docker Swarm)和Azure服务结构中提供的那样,对于任何基于microservice的应用程序和具有显著复杂性、可扩展性需求和不断演化的任何多容器应用程序来说都是不可或缺的。本指南介绍了调度器及其在基于microservice和基于容器的解决方案中的作用。如果您的应用程序需求正在迁移到复杂的集装箱化应用程序中,您需要进一步了解协调器的用法。
《.NET 微服务:适用于容器化 .NET 应用的体系结构》关键结论的更多相关文章
- 微服务SpringCloud容器化案例
前言 当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署.因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变 ...
- 微服务与容器化Docker
1.Docker的应用案例 2. 3. 4.docker的核心:镜像.仓库.容器 Build构建镜像:类似于集装箱. Ship运输镜像,仓库:类似于码头.将镜像运输到仓库. Run运行镜像:容器:类似 ...
- DDD/CQRS模式,微服务,容器
DDD/CQRS模式,微服务,容器 https://docs.microsoft.com/zh-cn/previous-versions/msp-n-p/ee658109(v=pandp.10) We ...
- 10分钟了解微服务、容器和Kubernetes
什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...
- .netcore下的微服务、容器、运维、自动化发布
原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1 基本概念 1.1.1 什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...
- 有容云-PPT | 当微服务遇见容器
编者注: 本文为10月29日有容云高级技术顾问龙淼在Docker Live时代线下系列-广州站中演讲的PPT,本次线下沙龙为有容云倾力打造Docker Live时代系列主题线下沙龙,每月一期畅聊容器技 ...
- 清晰架构(Clean Architecture)的Go微服务: 程序容器(Application Container)
清晰架构(Clean Architecture)的一个理念是隔离程序的框架,使框架不会接管你的应用程序,而是由你决定何时何地使用它们.在本程序中,我特意不在开始时使用任何框架,因此我可以更好地控制程序 ...
- SpringCloudAlibaba微服务docker容器打包和部署示例实战
概述 我们使用前面<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(中)>的两个微服务示例,分别是库存微服务和订单微服务,基于Nacos注册中心和配置 ...
- Java 服务 Docker 容器化最佳实践
转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
随机推荐
- 新手理解HTML、CSS、javascript之间的关系-修订
几年前写过一篇博文 <新手理解HTML.CSS.javascript之间的关系>,没想到网上出现了不少转载,当时没有太用心,里面的很多内容有待商榷,这里发布重新发布一篇. 网页主要有三部分 ...
- 解决 Your project contains error(s),please fix them before running your applica ..
解决 Your project contains error(s),please fix them before running your application问题 http://www.cnblo ...
- sql得到表中的列信息
取列全部用的 sys. 中的表 CTE:WITH name AS() 用法: sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...
- VSTO Project 客户端自动发送邮件
利用office vsto功能,抓取我们选择的任务,根据配置节,邮件发送内容,最终根据任务名称,任务开始结束时间,任务资源名称,发送邮件给任务资源. 这是我的VSTO界面. 配置我们发送邮件的服务器地 ...
- C#实现打印
C#实现导出pdf文件,打印 using System; using System.Collections.Generic; using System.Linq; using System.Web; ...
- 还在占用存储的进程lsof grep deleted;
查看僵尸进程 lsof grep deleted; 用于查看已经停止但还在占用存储的进程
- windows 开启 nginx 监听80 端口 以及 禁用 http 服务后,无法重启 HTTP 服务,提示 系统错误 123,文件目录、卷标出错
1. 正常情况直接运行 start nginx.exe 不能开启成功,因为 80 端口被占用.提示: bind() to 0.0.0.0:80 failed (10013: An attempt w ...
- BZOJ1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(模拟 调和级数)
Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 3031 Solved: 1596[Submit][Status][Discuss] Descriptio ...
- ci框架 用框架自带db 添加括号,比如 like 等等左右添加括号 解决办法
$this->load->model('station/Station_model','Station'); // East // North $this->Station-> ...
- vue 数组数据更新或者对象数据更新 但是页面没有同步问题
1,使用set函数来设置数据. 2,你可以通过 $forceUpdate 来做这件事.在数据赋值之后 就直接调用 this.$forceUpdata()