作为总结和要点,以下是本指南中最重要的结论。
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 应用的体系结构》关键结论的更多相关文章

  1. 微服务SpringCloud容器化案例

    前言 当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署.因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变 ...

  2. 微服务与容器化Docker

    1.Docker的应用案例 2. 3. 4.docker的核心:镜像.仓库.容器 Build构建镜像:类似于集装箱. Ship运输镜像,仓库:类似于码头.将镜像运输到仓库. Run运行镜像:容器:类似 ...

  3. DDD/CQRS模式,微服务,容器

    DDD/CQRS模式,微服务,容器 https://docs.microsoft.com/zh-cn/previous-versions/msp-n-p/ee658109(v=pandp.10) We ...

  4. 10分钟了解微服务、容器和Kubernetes

    什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...

  5. .netcore下的微服务、容器、运维、自动化发布

    原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...

  6. 有容云-PPT | 当微服务遇见容器

    编者注: 本文为10月29日有容云高级技术顾问龙淼在Docker Live时代线下系列-广州站中演讲的PPT,本次线下沙龙为有容云倾力打造Docker Live时代系列主题线下沙龙,每月一期畅聊容器技 ...

  7. 清晰架构(Clean Architecture)的Go微服务: 程序容器(Application Container)

    清晰架构(Clean Architecture)的一个理念是隔离程序的框架,使框架不会接管你的应用程序,而是由你决定何时何地使用它们.在本程序中,我特意不在开始时使用任何框架,因此我可以更好地控制程序 ...

  8. SpringCloudAlibaba微服务docker容器打包和部署示例实战

    概述 我们使用前面<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(中)>的两个微服务示例,分别是库存微服务和订单微服务,基于Nacos注册中心和配置 ...

  9. Java 服务 Docker 容器化最佳实践

    转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...

随机推荐

  1. gluon 实现线性回归

    from mxnet import autograd, nd num_inputs = 2 num_examples = 1000 true_w = [2,-3.4] true_b = 4.2 fea ...

  2. Codeforces Round #431 (Div. 2)

    A. Odds and Ends Where do odds begin, and where do they end? Where does hope emerge, and will they e ...

  3. Reverse Polish notation

    Reverse Polish notation is a notation where every operator follows all of its operands. For example, ...

  4. 2018.11.8 Error contacting service. It is probably not running.

    安装zookeeper-3.4.6的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下: JMX enabled by default Using config ...

  5. 如何解决“请考虑使用 app.config 将程序集“XXXXXXXX”从版本XXXX重新映射到版本XXXX”的问题

    > 请考虑使用 app.config 将程序集“System.ValueTuple, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”从版本“\ ...

  6. 【洛谷P3834】(模板)可持久化线段树 1(主席树)

    [模板]可持久化线段树 1(主席树) https://www.luogu.org/problemnew/show/P3834 主席树支持历史查询,空间复杂度为O(nlogn),需要动态开点 本题用一个 ...

  7. HDU1069 Monkey and Banana

    HDU1069 Monkey and Banana 题目大意 给定 n 种盒子, 每种盒子无限多个, 需要叠起来, 在上面的盒子的长和宽必须严格小于下面盒子的长和宽, 求最高的高度. 思路 对于每个方 ...

  8. html+css让网页自动适应手机屏幕

    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...

  9. Oracle 反向索引(反转建索引) 理解

    一 反向索引 1.1 反向索引的定义 反向索引作为B-tree索引的一个分支,主要是在创建索引时,针对索引列的索引键值进行字节反转,进而实现分散存放到不同叶子节点块的目的. 1.2 反向索引针对的问题 ...

  10. iOS之报错“Cannot create __weak reference in file using manual reference counting”解决办法

    解决的办法:在Build Settings--------->Aplle LLVM8.0 - Language - Objectibe-C------------->Weak Refere ...