《.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 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
随机推荐
- 2016 China Collegiate Programming Contest Final
2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...
- Node.js使用MySQL数据库中对RowDataPacket对象的使用
使用Node.js开发使用MySQL数据库的网站,在查询后返回一RowDataPacket类型的对象 原先使用toString()方法一直得到仅为object的字符串,无法使用 后思考,才发现忽略了其 ...
- PHP设计模式——观察者模式
PHP版本 <?php /** * 观察者模式 * 观察者模式能够便利的创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定性功能. * * 为软件添加由某个动作或状态变化激活的,但是松散 ...
- 【洛谷P1169】[ZJOI2007]棋盘制作
棋盘制作 题目链接 这个题是[USACO5.3]巨大的牛棚Big Barn和玉蟾宫的结合 一道顶两道毒瘤! 题解: 首先,棋盘有两种选法: 1.任意白格(x,y) (x+y)%2=0 ,任意黑格(x, ...
- 【洛谷P2184】贪婪大陆
贪婪大陆 题目链接 对于一个区间[l,r],右端点在l左边即[1,l-1]中的区间与区间[l,r]没有交集, 左端点在r右边即[r,n]中的区间与区间[l,r]没有交集, 其余区间必与[l,r]有交集 ...
- 【luogu P3372 线段树1】 模板
线段树的模板题 题目链接:https://www.luogu.org/problemnew/show/P3372 update区间修改,query区间求和 #include <iostream& ...
- Nodejs做整站转发
刚接触nodejs,做个东西练下手,通过nodejs直接转发整站,原本想把内容全翻译成英文,但google对流量行审查,被封IP,所以就没啥用了, 效果像这样 var b = function (a, ...
- C#中对于float,double,decimal的误解(转载)
浮点型 Name CTS Type Description Significant Figures Range (approximate) float System.Single 32-bit sin ...
- 下载YouTube视频的网站和工具
1.界面友好,可选择的清晰度较多(我个人用这个比较多) http://en.savefrom.net/ 2.几乎可以解析到所有的清晰度 http://www.clipconverter.cc 3.可选 ...
- 学习MySql和MongoDB笔记
首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型. 主要的数据库:SQL Server,Oracle,Mysql,Postgr ...