.Net Core3.1 微服务架构技术栈

66 篇文章 0 订阅
订阅专栏

微服务这个概念早在2012年就提出来了,经过了这些年的发展,现在已经成为企业非常主流的架构选项了。

微服务的前世今生

 

与微服务架构相对的,叫单体架构。这是我们最熟悉的开发方式,就是一个项目搞定业务全过程,在同一个进程里面完成。随着业务发展,数据量和并发上去了,一般会选择右边的垂直拆分,拆分后的每个系统,依旧是单体架构的。

 

 

垂直拆分后,子系统都能独立做集群,承载能力大大提升。但随着业务进一步发展,子系统会越来臃肿,而且根据二八原则,80%的请求其实都集中在20%的业务上,不同的子系统也都有很多重复的功能模块。于是乎分布式就诞生了,将高频重复的功能拆成独立的服务部署,各系统都通过调用服务来完成功能。

分布式拆出服务独立部署和维护, 既完成了功能的复用,又能保证高频服务的伸缩性和高可用,代表着更高的生产力。然而欲戴王冠必承其重,分布式带来的问题跟提供的价值一样多,比如分布式锁、一致性、可用性、复杂度等要命问题。

 

 

随着时间推移,业务倒逼技术进步,在大数据高并发的要求下,分布式技术慢慢开始成熟,针对各种问题都形成了行之有效的办法,然后分布式也成了架构设计系统的常规手段。基于服务的形式来完成对业务的解耦,提供高可用和伸缩性的特性,满足了日益增长的业务需求。随着业务的不断拆分,粒度越来越细,一个新的称谓微服务(Microservice)就应运而生!

什么是微服务架构?我理解为是一种架构设计系统的风格,基于小粒度的服务来完成对业务的解耦,将业务流程拆分成多个服务组装。就像以前三层架构里面,一个业务会调用多个BLL方法,而现在换成了调用多个服务。这就是微服务了,当然,小伙伴儿认真想想会发现,真的要落地微服务,问题太多了!下面,我就以.Net Core技术栈下,对微服务架构落地的种种问题和解决方案来一一探讨!

落地微服务架构

 

一 、进程间通信: 

这个是构建微服务的基础,通常有以下三大类:

1 .基于第三方存储共享的通讯(数据库/Redis/队列等)

2. 基于Http协议的服务(WebService/WCF/WebApi)

3. 远程调用模式(FX下的RPC和.Net Core下的gRPC)

 

二、服务注册与发现:

微服务架构是搭建在底层服务实例基础上,必须通过集群来保证服务的高可用和动态伸缩,因此服务注册,服务发现,健康检查,异常下线功能都是必须的,在.Net Core下可以考虑选择Consul(首选)、etcd或者ZooKeeper。

三、网关Gateway

微服务架构支持多客户端共用服务,而且底层服务数目众多,不可能全部都暴露给外部客户端(安全隐患/公网IP),而且多客户端也不可能维护无止境的服务实例地址,因此网关gateway是必须的!就像门面模式Façade一样管理好底层服务,通过路由映射底层服务实例,客户端一律通过网关来完成服务调用。此外,由于请求都从网关走,那么也可以在网关这里完成鉴权授权、限流、熔断、降级等进阶功能。

 

 

四、鉴权授权

微服务架构里到处都是服务实例,还都是集群化部署,甚至还兼容不同技术平台的服务实例,传统的session共享式做权限验证已经行不通了,当下都是使用token来做用户识别。大致原理如下图,由鉴权中心颁发token,然后带着token去访问各服务实例。在.Net Core里面首选IdentityServer4或者JWT。在真实落地微服务时,一般会建立个独立的鉴权中心,然后在网关层完成鉴权授权,非常方便。

 

 

以上是系统架构,往下是功能性需求

 

五、瞬态故障处理

真的去写代码时,你会发现调用服务总没有调用方法那么方便,会因为网络、延迟等造成种种意外,因此需要一种优雅的方式来执行请求重试、超时处理、故障恢复等策略,目前.Net Core下推荐使用Polly,常见应用是集成到gateway或者AOP的模式插入到客户端里面。

 

六、分布式追踪

一个请求会涉及多个服务,而服务本身还有依赖,整个请求路径就构成了一个网状的调用链,想象一下其实挺害怕!在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,因此必须得有跟踪请求,性能分析的工具,以便快速定位和解决问题。SkyWalking (推荐)、Cat、Zipkin、Pinpoint都是可选项,这里就不建议大家自己造轮子了。

 

七、日志收集与分析

微服务下的日志已经不是单机系统日志那么简单,茫茫多的服务节点,复杂的依赖调用关系,会带来海量的日志,一套优秀的分布式日志收集和分析框架是必须入手的,这里我给大家推荐的是ExceptionLess,入手简单资料齐全。

 

 

 

八、统一配置中心

配置管理平台是必不可少的,那么多服务那么多集群,一个个人肉管理会疯掉的。Apollo能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,是由携程框架部门研发的开源配置管理中心,.Net社区的骄傲,点赞!

 

 

 

九、分布式锁

单体架构下,多线程操作同一个对象,可以用lock锁保证只有一个线程能进入,微服务架构多进程下,怎么管控?核心思路是基于第三方的共享数据访问加上互斥逻辑来完成管控,像数据库/Nosql/Consul等介质均可。实践中,Redis是首选不解释。

 

十、分布式事务

CAP有言,在分布式的情况下,系统的可用性和一致性是没法同时满足的。微服务体系下,一个业务请求都需要N个服务节点协作,可用性是最高优先级,否则系统没法正常运转了。那如何数据的一致性怎么办?当下主流的模式有3种,2PC/3PC,TCC以及本地消息表,前一个是牺牲可用性去保障一致性,用的较少,后面都是保障数据最终一致性。目前在互联网公司主流选择是下图的基于消息队列的分布式事务实现。

 

再往下是发布部署

 

十一、Jenkins-CI/CD

持续集成持续交付(CI/CD)是敏捷开发的核心,在微服务架构下也是常备的。简单来说,就是能持续的合并代码分支纳入新功能,能持续的交付产出给下游,让整个项目进展肉眼可见。不过静心想想就知道有很多麻烦事儿,所以这一切就交给专业的工具来完成了,Jenkins值得拥有。

 

十二、Docker容器部署

微服务架构里,需要快捷启动服务实例,支持不同系统环境,不同运行环境,不同语言的各种服务实例,独立的物理服务器是不现实的,虚拟化技术的成本太高,快捷的沙箱环境+高效的资源利用+可复制快速启动的容器Docker 成为首选,Build Once,Run AnyWhere!不会docker的程序员,已经不是一个好的工程师了。

 

十三、容器编排Kubernetes

有了Docker,我们可以肆无忌惮轻松惬意的扩充服务实例,乐极生悲,容器实例可能会膨胀到你控制不住的地步,可能一个月后整个团队就没人能搞清楚服务和容器间错综复杂的关系了。所以你需要一个管理工具,那就是Kubernete,用于编排容器,是管理应用的全生命周期的工具,可以理解为docker管家。

 

学习实践微服务架构

 

能看到这里的小伙伴儿,可谓是饱受煎熬了,这么多的框架/组件/工具/方法,是不是让你望而生畏了。确实,现在企业要落地微服务架构,对架构师也提出了更高的要求和挑战(谁让你拿的钱最多)。下面,我来给大家分享下如何学习和实践微服务!

 

 

第一阶段

理解单体架构设计,掌握OOP+AOP的编程设计思想,熟悉DDD领域驱动设计的分析设计方法,尝试去简单拆分系统。

 

第二阶段

以微服务的思路去重构系统,将高频且独立的服务拆分,部署集群,Consul服务治理,整合网关,完成基础微服务架构。

 

第三阶段

进一步完善架构,开始重构鉴权授权、服务追踪、分布式日志分析、引入配置中心等组件,解决分布式锁和分布式事务,做到功能可用。

 

第四阶段

去引入新的工具完成项目部署运营管理,Jenkins/Docker/K8S,一步步的纳入使用,这里最省事儿的办法是上云,阿里云、Azure云都值得推荐。

 

第五阶段

项目全面微服务化,迈过前面的门槛了,后面会越来越顺利,在完整项目实战中去落地微服务架构,应对各种真实情况。

.netcore学习路线(1)主流技术栈
nozer1993的博客
05-07 3977
.netcore学习路线(1)主流技术栈写给自己新的改变学习计划学习项目学习笔记更新跳转 写给自己 程序员这条路已经走了很多年了,不得不说参加工作之后,受工作内容的影响,技术技能都变得非常的片面。你或许是写了很多年的具体业务的人,你有了解过一个请求到返回结果这个周期它究竟在你的系统经历了什么,你的系统对它的要求进行了哪些处理呢?你有尝试过新的编码方式或者新的.net版本对自己的系统,对自己的编码生涯可以带来哪些创新,哪些改变么?你有见识过新的表达式结构可以将以前十数行代码变成三两行么?你有体会过vuejs之
.Net Core 微服务之Consul(一)
m0_59178355的博客
07-01 1235
单体架构(Monolithic Architecture)是传统的应用程序设计方式,它将整个应用程序作为一个单一的、完整的单元进行开发、部署和扩展。用户界面层(Presentation Layer):负责处理用户输入和输出,通常是 Web 页面或移动应用的前端部分。业务逻辑层(Business Logic Layer):包含应用程序的核心功能和业务逻辑,负责处理数据处理、算法和业务规则等。数据访问层(Data Access Layer):用于与数据库或其他持久化存储进行交互,包括数据读取、写入和更新操作。
最实用接地气的 .NET 微服务框架
最新发布
DotNet技术匠
08-26 833
微服务架构已经成为搭建高效、可扩展系统的关键技术之一,然而,现有许多微服务框架往往过于复杂,使得我们普通开发者难以快速上手并体验到微服务带了的便利。为了解决这一问题,于是作者精心打造了一款最接地气的 .NET 微服务框架,帮助我们轻松构建和管理微服务应用。本框架不仅支持 Consul 服务注册与发现,还自带了一系列高级特性,包括配置中心、链路跟踪(APM)、服务网关等,极大地简化了微服务的开发和运维过程。
.NET技术大系概览 (迄今为止最全的.NET技术栈
weixin_34390105的博客
07-22 217
前言 .Net推出13年了,Visual Studio 2015 / .NET Framework 4.6昨天也发布了。 从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本的.NET都会增加新的技术,生态圈也在不断壮大。   爆栈三部曲  Web前端开发大系概览 (前端开发技术栈) ,包含大约180个技术点  数据库开发大系技术栈 (300多技术点) ...
.net core 技术栈 网站收集
c1sdn19的专栏
07-02 335
https://github.com/thangchung/awesome-dotnet-core
.net core 微服务
baimanmu3398的博客
09-23 118
spring cloud+.net core搭建微服务架构 https://www.cnblogs.com/longxianghui/tag/spring%20cloud/ 转载于:https://www.cnblogs.com/KQNLL/p/9692295.html
Adnc:支持经典三层与DDD架构开发模式,集成了一系列主流稳定的微服务配套技术栈。一个前分离的框架,前端基于Vue,后端基于.Net Core 3.1构建
04-06
支持经典三层与DDD架构开发模式,集成了一系列主流稳定的微服务配套技术栈。一个前后端分离的框架,前端基于,后端基于构建.Webapi遵循的RESTful设计规范,基于JWT认证授权,基于实现了读写分离,部署灵活,代码简洁...
NET Core3.1微服务
01-19
综上所述,NET Core 3.1微服务涉及到的技术栈广泛,涵盖了服务注册、负载均衡、API网关、分布式事务等多个方面。理解并掌握这些概念和技术对于构建可扩展、高可用的微服务架构至关重要。通过深入研究提供的示例项目...
.NET CORE微服务之Nacos
m0_59178355的博客
03-02 3355
背景:当在微服务项目中不同模块之间需要实现服务调用时,如何实现服务注册与发现?Nacos是一个由阿里巴巴开源的动态服务发现、配置管理和服务管理平台,它特别适用于微服务架构。服务发现与注册:Nacos提供了服务注册和发现的机制,使得在微服务架构中的各个服务能够相互识别和通信。配置管理:它允许动态地管理和共享配置信息,支持基于命名空间、分组和数据ID的配置组织方式。高可用性:Nacos设计用于承受大规模的服务访问压力,能够在高并发场景下保持稳定运行。易用性。
使用.NET Core进行微服务架构设计
# 1. 微服务架构概述 ## 1.1 传统单体架构与微服务架构的对比 ...- 技术栈多样化 ## 1.2 微服务架构的优势与挑战 微服务架构的优势包括高可扩展性、灵活性、易于部署和维护等。但同时也面临着服务间通信复杂、数据一
NetCore3.1.pdf
03-13
.NET Core是一个开源的模块化的Framework,不管是开发web或移动设备都在同一个Framework(.NET Core)下运行,而且 .NET Core也可在不同的操作系统上运行,包括Windows、linux、MacOS,实现了跨平台跨设备。 该文档是微软关于net core的详尽介绍,相信你肯定会喜欢这门语言的
.NET实现微服务架构
05-08
微服务架构(Microservices Architecture)是将系统拆分为多个服务,俗称为应用服务。应用服务实现单一、具体的业务应用功能,支持独立部署维护,多个应用服务构建成系统。应用服务之间通过轻量级通信框架进行,并且支持应用服务用不同技术或者平台实现。
net core微服务
07-02
附件是基于.net core微服务,服务器集群是基于nginx做集群服务, 通信方式是WebAPI
.NET Core微服务之基于Ocelot实现API网关服务(续)
li123128的博客
06-17 1348
为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientService分别部署于这两个节点内(192.168.80.70与192.168.80.71)。  为了更好的展示API Repsonse来自哪个节点,我们更改一下返回值: [Route("api/[controller]")] public class ValuesController : Cont...
我眼中的ASP.NET Core微服务
weixin_34402408的博客
07-01 189
前言 前几天在博客园看到有园友在分享关于微软的一个微服务架构的示例程序,想必大家都已经知道了,那就是eShopOnContainers。 我们先不看项目的后缀名称 OnXXX ,因为除了 OnContainers 还有 OnAzure,OnWeb,OnKubernetes 以及 OnServiceFabric。 我们就还是来先说说 eShop 这个项目吧,eShop 是 ASP.NET Core ...
.Net Core微服务架构技术栈的那些事
Jlion 技术博客
04-08 3248
一、前言 接触微服务架构还是从17年开始,一路走来,对微服务架构有了一定的积累和经验,今天就想通过这篇文章整理和总结自己对微服务架构技术栈的了解的那些事,让新手对微服务相关技术有一个更深入的了解;后续篇章会针对每一个技术深挖其中的工作原理和实战分享,大家可以关注我的公众号【dotNET博士】第一时间获得相关技术文章推送。 二、技术栈 2.1 工欲善其事,必先利其器 现在互联网盛行的年代,互联网产品...
基于.Net Core微服务-第1章:说明及技术栈
lijun_xiao2009的专栏
07-05 794
微服务是一种架构模式,提倡将单一应用程序划分为一组小的服务,服务相互协调、互相配合,为用户提供最终价值。
.Net 微服务架构技术栈
qq_29892677的博客
04-20 406
转载添加链接描述
ASP.NET Core 3.1 官方文档指南
ASP.NET Core 3.1 提供了许多数据访问技术,包括 EF Core 和 ADO.NET 等。EF Core 是一个基于实体框架的数据访问技术,提供了一个灵活、可扩展的方式来访问数据库。 **EF Core 和 Razor Pages** EF Core 是一个...
写文章

热门文章

  • 根据汉字获取拼音,别人写的,留着有用 15108
  • 各数据库SQL查询结果多行数据合并成一行 14295
  • 所有记录中均未找到搜索关键字的解决方法! 11434
  • js 正则表达式获取超链接地址或文本 10126
  • 在线预览文档html版 9813

分类专栏

  • NET 66篇
  • Node.js 2篇
  • Sql Server 16篇
  • ASP 5篇
  • JS 22篇
  • 杂类 27篇
  • 琐事 1篇
  • java 6篇
  • pytion
  • Python 2篇

最新评论

  • .Net Core3.1 微服务架构技术栈

    故事从未开始: 为什么我一个刚毕业的程序员要看这些东西,呜呜呜~,面试要用表情包

  • 千万级数据库查询+分页优化

    Starry Sky001: 1、以最快的速度缩小查询范围。 2、以最快的速度进行字段排序。

  • 五.RabbitMQ生产者/消费者消息确认

    伯牙绝音: 写的很不错! 目前看RabbitMQ没有一种机制可以让生产者知道消息被消费者消费的情况.

  • js + kindeditor 提交内容为空的解决办法

    MaYuKang: 牛逼,解决了我的问题

  • Python抢票神器

    0FF1ine404: 入门到入狱

大家在看

  • 四季的划分法包含了天文划分法、节气划分法、农历划分法、阳历划分法、气温划分法5种,这5种划分的依据是什么呢?分别是包含几月到几月呢?
  • 数据结构-B树和B+树
  • 代码模板之-C语言如何优雅的定义事件和字符串解析?(index < ARRAY_SIZE(str_event) ? str_event[index] : “unknown“) 161
  • EDA常见的拓扑结构 322
  • ​‌‌C++语言的基础知识点​ 109

最新文章

  • sql server 多行数据合并一行显示
  • 各数据库SQL查询结果多行数据合并成一行
  • jqGrid 复选框在跨页中的状态保持
2023年2篇
2022年2篇
2021年6篇
2020年15篇
2019年5篇
2018年7篇
2017年8篇
2016年5篇
2015年4篇
2014年11篇
2013年45篇
2012年26篇
2011年9篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司网站优化推广技术了解浦东网站优化怎么样宝安网站优化比较好大连整流器网站建设优化老牌的网站优化选哪家十堰外包网站优化价格荣成市网站seo优化排名廊坊专业网站优化益阳网站搜索排名优化恩施网站用户体验优化黄山网站优化技巧潜江本地网站优化公司排名兴山宜昌网站建设优化公司无锡网站做优化厦门网站排名优化收费情况虞城专业网站关键词优化价格天津百度网站优化制作网站优化文章怎样写山南网站改版设计后怎么优化如何优化自己网站孤牢丿云速捷许昌知名网站优化推荐网站排名优化 要到宙斯方法潍坊网站seo优化推广乌鲁木齐网站优化 鹊起科技浙江省网站推广优化肥东网站排名优化公司网站优化试卷潍坊网站优化哪家专业个性网站优化设计优化网站排名技术香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化