.NET Core微服务架构

Posted 张飞飞啦啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET Core微服务架构相关的知识,希望对你有一定的参考价值。

1.1微服务架构概述

微服务架构概述:
ASP.NETCore是一个全新的开源、跨平台框架,可以用它来构
建基于网络连接的现代云应用程序,比如: Web应用,loT应用和
移动后端等。
ASP.NET Core可以运行在.NET Core或完整的.NET Framework 2
上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发
框架,由开销很小的模块化组件构成。
 

1.介绍微服务架构的概念、优缺点和设计原则
2. .NET Core技术的特点、组成和安装
3.使用.NET Core CLI和Virsual Studio创建并运
行.NET Core控制台应用程序
4. .NETCore异步编程的概念和使用步骤
 

1. 微服务架构的起源:
2014年,马丁。福勒(MrinoWe)和詹姆斯.刘易斯( Jomes Lewis )
共同提出了微服务的概念,定义了微服务架构是以开发一-组小型服
务的方式来开发一个独立的应用系统,每个服务都以一个独立进程
的方式运行,每个服务与其他服务使用轻量级(通常是HTTP API)
的通信机制。
 

微服务的诞生重要因素与意义:
(1)敏捷开发,减少浪费、快速反馈,以用户体验为目标;
(2)持续交付使开发团队更快、更可靠、更频繁地改进软件;
(3)基础设施即代码帮助开发团队简化环境的管理。
 

2.微服务架构的优缺点:
基于微服务架构的应用程序有以下优点:
(1)每个服务都很小,这样能聚焦一个指定的业务功能或业务需求。
(2)微服务能够被小团队单独开发,可由2~ 5人的开发人员组成。
(3)微服务是松耦合的,是有功能意义的服务,微服务在开发阶段或部署
阶段都是独立的。
(4)微服务能使用不同的语言开发。
(5)微服务易于被开发人员理解、修改和维护。
(6)微服务允许利用最新技术。
(7)微服务只是业务逻辑的代码,不会和html、CSS 或其他界面组件混合。
 

基于微服务架构的应用程序有以下缺点:
(1)微服务架构可能带来过多的操作。
(2)微服务的分布式系统可能复杂并难以管理。
(3)分布式系统部署和跟踪问题难。
(4)当服务器数量增加后,管理复杂性增加。
 

3.微服务架构的设计原则:
基于微服务架构程序的设计过程,需遵循以下原则:
(1)垂直划分优先原则:应该根据业务领域对服务进行垂直划分
(2)持续演进原则:微服务开发需要逐步划分和持续演进,避免服务
数量的爆炸性增长。
(3)服务自治、接口隔离原则:服务通过标准的接口隔离,隐藏内
部实现细节。
(4)自动化驱动原则:在服务划分之前,应该首先构建自动化的工
具及环境。
 

4.微服务架构与.NET平台:
微服务架构中需要处理的问题包括服务间通信、服务治理与服
务发现、网关和安全认证、限流与容错以及日志监控等。
(1)第一代微服务框架技术: Dubbo服务框架、Orleans分布式应用
框架等,这些框架与特定编程语言绑定紧密。
(2)第二代微服务框架技术:如Spring Cloud云应用开发框架,这个
框架适合混合开发。
(3)第三代微服务框架技术:以服务网格( Service Mesh )为概念的
新一代框架,如Service Fabric 框架、Istio服务治理框架、Conduit等。
 

1.2 .NET Core 平台简介和安装实践 

1.NET Core平台介绍:
.NET Core平台是适用于Windows、Mac OSX和Linux操作系统免
费的、开源托管的计算机软件平台,是微软公司开发的第一个官方
版本,具有跨平台能力的应用程序开发框架。
未来也将会支持FreeBSD与Alpine平台,也是微软公司在一开始
发展时就开源的软件平台,经常也会拿来和现有的开源.NET平台
Xamarin Mono比较。
 

2..NET Core平台的特点:
.NET Core平台具有以下特点:
(1)跨平台:可以支持在Windows、macOS 和Linux操作系统上运行。
(2)跨体系结构保持一致: 在多个体系结构上以相同的行为运行代码。
(3)命令行工具:包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
(4)部署灵活:可以包含在应用、已安装的并行用户或计算机范围中。
(5)兼容性: .NET Core通过.NET Standard与.NET Framework和Xamarin Mono兼容。
(6)开放源代码: .NET Core平台是开放源代码,使用MIT和Apache 2许可证授权。
(7 )由Microsoft支持: .NET Core由Microsoft提供支持。
 

3..NET Core平台组成:
.NET Core平台组成包括以下部分:
(1) .NET Core运行时:提供类型系统、程序集加载、垃圾回收器、本机互操
作和其他基本服务。.提供基元数据类型、应用编写类型和基本实用程序。
(2) ASP.NET Core运行时:提供框架以生成基于新式云的Internet连接的应用
程序,例如Web应用、loT ( Internet of Things,物联网)应用以及移动后端。
(3) .NET CoreCu工具和语言编译器( Roslyn和F#) :提供.NET Core开发人员体验。
(4) dotnet工具:用于启动.NET Core应用和CL工具,它在选择运行和托管
运行时会提供程序集加载策略并启动应用和工具。

4.安装.NET Core平台
:
使用.NET Core平台之前需要先在当前计算机中安装.NET Core平
台,安装方式有两种:独立安装和使用VisualStudio Installer安装。
(1)独立安装:就是从微软官方网站上下载NET Core SDK安装包,再在当前
计算机中安装。
(2 )使用Visual Studio Installer安装
如果在当前计算机中安装有Visual Studio 2017或Visual Studio 2019以上版本,
则可以使用Visual Studiolnstaller安装。
 

1.4 异步编程

1.异步编程介绍
服务器端的运行任务都交给了多个虚拟机来运行,方便企业根
据业务需求的变化调整虚拟机上的CPU数目、内存大小和存储空间
大小。
异步编程可以直接处理多个服务或计算核心上的阻塞输入/输
出( Input/Output, 1/0 )操作和并发操作。.NET可以通过语言级异步
模型来提高应用和服务的响应速度及灵活性。

 .NET支持三种异步编程模式:
异步编程模型( Asynchronous Programming Model, APM)
基于事件的异步模式( Event- -based AsynchronousPattern, EAP )
基于任务的异步模式( Task-based Asynchronous Pattern, TAP )
这三种异步编程模式都能有效改进文件和网络I/O程序的体验。

.NET Core平台中基于任务的异步模式,具有以下特点:
(1)等待I/O请求返回的同时可通过生成处理更多请求的线程,处理更多的
服务器请求。
(2)等待I/O请求的同时生成UI交互线程,并通过将长时间运行的工作转换
到其他CPU核心,让UI的响应速度更快。
(3)许多较新的.NET APIs都是异步的。
(4)在.NET中编写异步代码很简单。
 

2.使用TAP模式实现异步编程
基于任务的异步模式是基于System.Threading.Tasks.Task命名
空间中的System.Threading.Tasks.Task<TResult>和System.Threading.
Tasks类型,这些类型用于表示任意异步操作。
为了简化异步编程的过程,.NET Framework 4.5在C#中引入了
await和async关键字。
await关键字应用于异步方法,在方法的执行中插入挂起点,直到等待任务
完成。使用await和async关键字定义异步方法不一定会创建新线程,当编译器看
到await关键字时,线程会挂起,等待运行结束。
 

在.NET Core中进行基于任务的异步模式编程的步骤如下:
(1)创建任务方法:创建的任务方法是一一个耗时方法,可能是I/O操作或
者CPU密集型工作。不返回值的任务由System.Threading.Tasks.Task类表示,返
回值的任务由System.Threading.Tasks.Task<TResult>类表示,该类从Task继承。
(2)调用任务方法: -般通过加入await关键字来调用任务方法,而任务
方法将异步执行,但是只能在通过async关键字修改的方法中、lambda表达式中
或匿名方法中使用await关键字,async修饰符只能用于返回Task和Void的方法,
不能用于程序的入口。
 

控制台应用 案例


        static void Main(string[] args)
        
            CallWithAsync();
        
        //1.创建任务方法
        static Task<string> GeetingAsync(string name)
        
           //1.1创建Task对象
           Task<string> task = new Task<string>(() =>  
           Thread.Sleep(2000);
           return string.Format("您好! 0", name);
         );
        //1.2启动任务
        task.Start();
        Console.WriteLine("启动任务");
        task.Wait();
        return task;
        
        //2.调用任务方法
        async static void CallWithAsync() 
        string result=await GeetingAsync("张三");
            Console.WriteLine(result); 
        

.net core 微服务架构技术栈

本人在多家企业工作,经历了不同架构方式的微服务开发,因此就自己对微服务的粗浅认识,编写本文,希望能帮助想改造自身已有架构转投微服务架构的企业,或从头构建自己的微服务架构平台的企业走向成功。

 

微服务的概念

微服务(Microservice)概念据说是在2012年出现,其一出现就对互联网行业产生了巨大影响,因为其理念刚好符合“分而治之”的思想,在日益巨大化的互联网行业内,不免逐步产生了无法把控的思绪混乱,而“微”刚好能解决这个痛点。

微服务的精髓

“分而治之”是微服务的精髓!理解了这个精髓,就可以如庖丁解牛般设计你的系统架构。每个相对独立的业务均可拆分为微服务,微服务高度自治,数据、缓存、接口都是自我管理的,不要麻烦别的服务区管理,微服务间的通信一般约定为接口间的通讯和异步消息的通讯。微服务和微服务组合共同提供外部的接口,已形成更大的服务。

微服务的复杂度

由于把许多独立的业务拆成不同的微服务,因此带来的微服务构建的复杂度,一般表现为下列几点:

  1. 微服务的注册和发现

  2. 微服务的部署和弹性伸缩

  3. 微服务间的通讯

  4. 微服务间通讯的效率

  5. 微服务间的事务性(ACID)

  6. 微服务的对外网关、限流熔断

  7. 微服务的全局配置

  8. 微服务的认证授权(OAuth2)

  9. 微服务间的异步通讯、消息

  10. 微服务的日志

  11. 微服务的监

以上是关于.NET Core微服务架构的主要内容,如果未能解决你的问题,请参考以下文章

我想学习微服务架构。你有任何关于 .Net Core 微服务架构的信息吗?

.NET Core微服务架构

.NET Core with 微服务

.Net Core微服务架构技术栈的那些事

.Net Core with 微服务 - 架构图

.NET Core开发实战 微服务架构最佳实践