.NET Core微服务系列基础文章

 今年从原来的Team里面被抽出来加入了新的Team,开始做Java微服务的开发工作,接触了Spring Boot, Spring Cloud等技术栈,对微服务这种架构有了一个感性的认识。虽然只做了两个月的开发工作,但是对微服务架构的兴趣却没有结束,又因为自己的.NET背景(虽然对.NET的生态有点恨铁不成钢),想要探索一下在.NET平台下的微服务架构的可行性,也准备一些材料作为分享的素材。

  

  幸运的是,在.NET Core首届在线峰会上,看到了很多前辈的分享,也增强了自己要摸索和实践.NET Core微服务架构的决心。因此,站在各位前辈的肩膀上(详见第四部分的学习资料),我学习并总结了这个系列的文章,主要面向有.NET Web开发背景(本系列不会主要讲解.NET Core,不过不会阻碍你的阅读),没有接触过或者很少接触微服务架构的初级开发童鞋,文中介绍的开源技术也不一定是最佳的选择,事实上混合式架构(Linux+Windows+开源组合)与Docker+K8S的组合已经成了现在主流企业级和互联网项目的(默认)标准,重点是大家转变这个思路,拥抱Open Source,拥抱Cloud,也拥抱.NET Core,才会让.NET的生态好起来。鲁迅先生说,“世上本无路,走的人多了也就成了路”,对于.NET生态也一样,只有我们拥抱的人(这里主要指使用.NET相关开源技术的人)多了,也才会有好的生态,特与君共勉。当然,这里并不是说要抱死.NET,或者鼓吹.NET多么好,没有绝对好的技术栈,只有刚刚好的业务需求,爱.NET Core,也不排斥Java等其他技术栈,相互合作,共同构建,脱离微软(这里指广义上的老一代微软全家桶:ASP.NET+MSSQL+WindowsServer等),拥抱开源,任重而道远!

  此外,鉴于个人时间和精力有限,以及其他园友在特定领域已经取得的相关学习成果,我还会不定期收集一些其他园友的系列文章放在这个索引里边,方便大家快速定位查看学习。

  最后,由于个人的职业规划,我即将离开现在的公司(当然,并不是说现在的公司不好,而是个人对.NET的初恋情结)去一家新的公司去实践.NET Core,使用开源技术(有可能会给园子里的开源项目提Issue,也尽力积极提PR),实践微服务,实践架构设计,后续也会实践大数据,去经历一些之前经历不到的路程,也希望可以在后续分享一些实践系列的文章到博客园。如果有成都地区的园友想要来实践.NET Core的,也可以联系我,我司也在招聘优秀的.NET程序猿来一起搞事情

二、重点内容索引

2.1 服务发现&注册&通信

  基于Consul实现服务治理(Part 1)

  基于Consul实现服务治理(Part 2)

  服务间的通信调用方式(REST and RPC)

2.2 熔断&降级

  基于Polly+AspectCore实现熔断与降级机制

2.3 API网关

  基于Ocelot实现API网关服务(Part 1)

  基于Ocelot实现API网关服务(Part 2)

2.4 统一验证&授权

  基于IdentityServer实现授权与验证服务(Part 1)

  基于IdentityServer实现授权与验证服务(Part 2)

  基于Ocelot+IdentityServer实现统一验证与授权服务

  其他好文:

  IdentityServer4 中文文档与实战(from 晓晨Master 李志强)

  ASP.NET Core 中的那些认证中间件及一些重要知识点 (from savorboard 杨晓东)

  使用IdentityServer4建立AuthorizationServer系列文章(from 草根专栏 杨旭)

  Swagger如何访问Ocelot中带权限验证的API (from axzxs2001 桂素伟)

  Ocelot.JwtAuthorize:一个基于网关的Jwt验证包 (from axzxs2001 桂素伟)

2.5 分布式追踪&日志

  基于Ocelot+Butterfly实现分布式追踪

  基于Exceptionless实现分布式日志记录

  分布式日志框架Exceptionless之生产环境部署步骤

  Skywalking:

  在 ASP.NET Core 中集成 Skywalking APM (from savorboard 杨晓东)

  Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控 (from Lemon 刘浩杨)

  使用docker-compose 一键部署你的分布式调用链跟踪框架Skywalking (from 一线码农 黄星辰)

  更多Skywalking分享https://github.com/OpenSkywalking/Community

  

2.6 统一性能监控

  基于App.Metrics+InfluxDB+Grafana实现统一性能监控

2.7 数据一致性&事件总线

  基于EasyNetQ使用RabbitMQ消息队列

  基于MassTransit实现数据最终一致性(Part 1)

  基于MassTransit实现数据最终一致性(Part 2)

  基于开源项目CAP的初步使用与数据最终一致性

  CAP:

  如何在你的项目中集成CAP(手把手视频教程)(from savorboard 杨晓东)

2.8 统一配置中心

  

  基于Apollo实现统一配置中心

2.9 Docker & CI/CD

  

  ASP.NET Core on Docker (部署ASP.NET Core到Docker)

  基于Jenkins+Docker实现持续部署(Part 1)

  基于Jenkins+Docker实现持续部署(Part 2)(正在编写中ing...)

  其他好文:

  ASP.NET Core & Docker & Jenkins 零基础持续集成(from 晓晨Master 李志强)

2.10 与Spring Cloud的集成

  

  基于Steeltoe使用Spring Cloud Eureka实现服务注册与发现

  基于Steeltoe集成Spring Cloud Zuul实现统一API网关

  基于Steeltoe使用Spring Cloud Hystrix熔断保护与可视化监控

  基于Steeltoe使用Spring Cloud Config统一管理配置

  基于Steeltoe使用Zipkin实现分布式追踪

  示例代码:https://github.com/Manulife-Chengdu/Microservice.PoC.Steeltoe

2.11 eShopOnContainers架构分析

  《.NET微服务:容器化.NET应用架构指南》学习笔记

  下面的系列文章来自一位朋友:圣杰

  ①  eShopOnContainers 知多少[1]:总体概览

  ②  eShopOnContainers 知多少[2]:Run起来

  ③  eShopOnContainers 知多少[3]:Identity microservice

  ④  eShopOnContainers 知多少[4]:Catalog microservice

  ⑤  eShopOnContainers 知多少[5]:   EventBus with RabbitMQ

  ⑥  eShopOnContainers 知多少[6]:持久化事件日志

  ⑦  eShopOnContainers 知多少[7]:Basket microservice

  ⑧  eShopOnContainers 知多少[8]:Ordering microservice

  ⑨  eShopOnContainers 知多少[9]:Ocelot gateways

2.12 其他

  下面的系列文章来自一位园友:曹剑,这个系列文章把微服务的最重要的内容过了一遍。

  ①  微服务实战(一):落地微服务架构到直销系统(什么是微服务)

  ②  微服务实战(二):落地微服务架构到直销系统(构建消息总线框架接口)

  ③  微服务实战(三):落地微服务架构到直销系统(构建基于RabbitMq的消息总线)

  ④  微服务实战(四):落地微服务架构到直销系统(将生产者与消费者接入消息总线)

  ⑤  微服务实战(五):落地微服务架构到直销系统(构建高性能大并发系统)

  ⑥  微服务实战(六):落地微服务架构到直销系统(事件存储)

  ⑦  微服务实战(七):落地微服务架构到直销系统(实现命令与命令处理器)

  ⑧  微服务实战(八):落地微服务架构到直销系统(服务高可用性)

  ⑨  微服务实战(九):落地微服务架构到直销系统(回顾总结)

三、学习资料

这里分享一些学习.NET Core与微服务的学习资料:

  ①  杨中科,.NET Core微服务基础课程

  ②  张善友,NanoFabric简介(DNC在线峰会),NanoFabric GitHub: https://github.com/geffzhang/NanoFabric

  ③  桂素伟,.NET Core微服务课程,基于.NET Core的微服务示例 GitHub: https://github.com/axzxs2001/HisMicroserviceSample

  ④  刘腾飞(Jesse),ASP.NET Core分布式项目实战课程

  ⑤  杨波,极客时间课程-微服务架构实战160讲 (此课程主要以Java技术栈讲解,但可以学习很多通用的知识点和思想)

  ⑥  Microsoft,.NET微服务:容器化.NET应用架构指南 (建议想要应用.NET Core微服务架构的童鞋必读此书),示例项目eShopOnContainers GitHub: https://github.com/dotnet-architecture/eShopOnContainers

  

  ⑦ 杨旭,草根专栏 ASP.NET Core Web API索引系列文章

  ......

  除此之外,每篇文章后面都有参考资料,也都是值得学习的资料。

四、其他拓展

下面列两个基于Java技术栈的微服务框架学习示例,都是由我完整学习过的示例总结:

  ①  Spring Boot 1.5.x 基础学习示例

  ②  Spring Cloud 微服务架构基础学习笔记与示例

  

原文地址:https://www.cnblogs.com/lhxsoft/p/10637276.html

时间: 2024-11-05 04:52:33

.NET Core微服务系列基础文章的相关文章

.NET Core微服务之ASP.NET Core on Docker

Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Docker极简介绍 1.1 总体介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低. 简而言之> 容器是一个打包了应用服务的环境,它是一

.NET Core微服务之基于Consul实现服务治理

一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更"一站式",内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单. Consul用Golang实现,因此具有天然可移植性(支持Linux.windows和Ma

微服务系列(一):微服务架构的优势与不足

微服务在当下引起广泛关注,成为文章.博客.社交媒体讨论和大会演讲的热点:在 Gartner 的 “Hype Cycle” 上排名也非常靠前.与此同时,在软件社区也有人质疑微服务并非新事物.反对者认为微服务只是 SOA (Service Oriented Architecture)的二度包装.然而,无论是追捧还是质疑,微服务架构拥有巨大优势,尤其是它让敏捷开发和复杂的企业应用交付成为可能. 本系列包含 7 篇文章,介绍了微服务的设计.构建和部署,并与传统的单体架构进行了比较.本系列将分析微服务架构

【CHRIS RICHARDSON 微服务系列】使用微服务重构单体应用-7

编者的话 |本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的最后一篇.第一篇介绍了微服务架构模块,并且讨论了使用微服务的优缺点.随后的文章讨论了微服务的不同方面,包括使用 API 网关.进程间通讯.服务发现.事件驱动的数据管理,以及部署微服务.本篇将讨论从单体应用迁移到微服务的策略. 作者介绍:Chris Richardson,是世界著名的软件大师,经典技术著作<POJOS IN ACTION>一书的作者,也是 cloudfoundry.com 最初的创始人

.NET Core微服务之基于Ocelot实现API网关服务(续)

一.负载均衡与请求缓存 1.1 负载均衡 为了验证负载均衡,这里我们配置了两个Consul Client节点,其中ClientService分别部署于这两个节点内(192.168.80.70与192.168.80.71). 为了更好的展示API Repsonse来自哪个节点,我们更改一下返回值: [Route("api/[controller]")] public class ValuesController : Controller { // GET api/values [Http

springcloud微服务系列之服务注册与发现组件Eureka

一.Eurake的简介二.使用Eureka进行服务的注册消费1.创建一个服务注册中心2.创建服务的提供者3.创建服务的消费者总结 一.Eurake的简介 今天我们来介绍下springcloud的核心组件Eureka,Eurake是负责微服务架构中服务治理的功能,负责各个服务实例的注册与发现. Eureka包含了服务器端和客户端组件.服务器端,也被称作是服务注册中心,用于提供服务的注册与发现. 客户端组件包含服务消费者与服务生产者.在应用程序运行时,服务生产者向注册中心注册自己的服务实例,当消费者

.NET Core微服务之路:目录

微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑,包含微服务核心组件如 1. Eureka:实现服务注册与发现. 2. Zuul:实现统一API网关. 3. Hystrix:实现熔断保护与可视化监控. 4. Config:实现统一管理配置. (还有更多组件,欢迎补充) 都是我们NET程序员梦寐以求的福音,而.NET Core发展至今,也专门是为微服务提供的框架平台,只是目前处于各路神仙各显神通的阶段,没有一个统一的框

基于.net core 微服务的另类实现

原文:基于.net core 微服务的另类实现 基于.net core 的微服务,网上很多介绍都是千篇一律基于类似webapi,通过http请求形式进行访问,但这并不符合大家使用习惯.如何像形如[ GetService<IOrderService>().SaveOrder(orderInfo)]的方式, 调用远程的服务,如果你正在为此苦恼, 本文或许是一种参考. 背景 原项目基于传统三层模式组织代码逻辑,随着时间的推移,项目内各模块逻辑互相交织,互相依赖,维护起来较为困难.为此我们需要引入一种

.net core 微服务之Api网关(Api Gateway)

原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2.构建中间件 4.结语 引用链接 1. 微服务引子 首先恭喜你,进入微服务的开发世界.微服务属于架构演进中的一种阶段,其特点是根据业务模块水平划分服务种类,每个服务可以独立部署并互相隔离,并对外提供轻量的Api调用,服务具有高可用特性. 微服务应遵循的设计原则: 单一职责原则: 每个微服务只需要实现自