《.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 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
随机推荐
- 线程概念的外延 Threading Terminology-What Are Threads
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/AboutThrea ...
- BZOJ1033:[ZJOI2008]杀蚂蚁antbuster(模拟)
Description 最近,佳佳迷上了一款好玩的小游戏:antbuster.游戏规则非常简单:在一张地图上,左上角是蚂蚁窝,右 下角是蛋糕,蚂蚁会源源不断地从窝里爬出来,试图把蛋糕搬回蚂蚁窝.而你的 ...
- POJ 最小球覆盖 模拟退火
最小球覆盖:用半径最小的球去覆盖所有点. 纯粹的退火算法,是搞不定的,精度不够,不然就会TLE,根本跑不出答案来. 任取一点为球心,然后一点点靠近最远点.其实这才是最主要的. 因为:4个点确定一个球, ...
- HDU 2647 拓扑排序
题意:每个人的工资至少888,然后有m个条件,前者比后者要多.求最少工资. 分析: 最开始的开邻接矩阵的肯定超时,如果dfs,会出现由于刚开始不是从入度为0的点出发,后期修改不了.比较麻烦. 正确方式 ...
- springboot(服务端接口)获取URL请求参数的几种方法
原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 一.下面为7种服务端获取前端传过来的参数的方法 常用的方法为:@RequestParam和@Req ...
- win10 安装YII2
YII2下载地址:http://www.yiichina.com/download 高级版本和基本版本的区别是: 基础版只有一个只有一个web应用,高级版则生成前后台.建议使用高级版,方便 Yii2框 ...
- sqlite简单笔记
五种约束需要注意的地方 1.自增使用:autoincrement 2.约束必须进行后面处理:unique(字段[多个可以以逗号分开]) 3.外键必须放后面:foreign key(字段引用) refe ...
- c语言描述的直接插入排序法
#include<stdio.h> #include<stdlib.h> #define SIZE 6 typedef int Type; //直接插入排序法 void Ins ...
- mac启动springboot失败,8080端口被占用,mac命令行关闭端口
如下图,idea启动springboot失败,8080端口被占用 Error starting ApplicationContext. To display the conditions report ...
- mysql获取汉字首字母函数
DELIMITER ;;CREATE FUNCTION `GET_FIRST_PINYIN_CHAR`(PARAM VARCHAR(255)) RETURNS VARCHAR(2) CHARSET u ...