微服务系列+IdentityServer4

一. 架构演变历史

1. 集中式开发

  最初的大型计算机使用打孔卡,并且大多数计算都在批处理过程中进行。

2. CS架构

  客户端/服务器体系结构将大多数逻辑放在服务器端,并将某些处理放在客户端上。

3. BS三层架构

  Web浏览器成为客户端软件,而Web和应用程序服务器托管所有处理和逻辑。

4. 面向服务SOA

  SOA是微服务的前身,主要是为了摆脱单体应用的问题,它充分利用现有的基础设施;依赖消息中间件(MSMQ、RabbitMQ)和SOAP作为主要的通讯协议;快速响应业务的变化。

5. 微服务 

  微服务使用各个自服务控制模块的思想代替SOA中的总线,从而实现了更加松耦合和更加灵活的系统。

 

二. 什么是微服务

1. 微服务介绍

(1). 简介

  微服务架构(Microservice Architecture)是一种架构概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。

概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。

本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。

(2). 与SOA对比

(3). 优势

 关键点:复杂度可控,独立按需扩展,技术选型灵活,容错性高,可用性高。

A. 方便扩容和保证服务的可伸缩性。

B. 降低耦合,有利于团队写作和版本的快速更新。

C. 服务测试和升级容易。

D. 项目技术可以保持多样性。 

(4). 面临的问题 

  关键点:多服务运维难度,系统部署依赖,服务间通信成本,数据一致性,系统集成测试,重复工作,性能监控等。

A. 增加了运维的复杂度和维护微服务集群的复杂度。

B. 从单体迁移到微服务工作量大,有困难。

C. 提高了技术开发的门槛。 

2. 微服务技术体系 

 (1). Api资源服务:Asp.Net Core WebApi 【3.x版本】

 (2). 服务的注册与发现:【Consul 1.6.1.1】

 (3). 配置中心:【Winton.Extensions.Configuration.Consul 3.1.0】

 (4). 熔断和降级:客户端  【Polly 7.2.1】     web端 【Microsoft.Extensions.Http.Polly 3.1.5】

 (5). 网关:【Ocelot 16.0.1】

       Ocelot集成Consul:【Ocelot.Provider.Consul 16.0.1】

     Ocelot缓存机制:【Ocelot.Cache.CacheManager 16.0.1】

     Ocelot熔断机制:【Ocelot.Provider.Polly  16.0.1】

 (6). 认证授权服务器: 【IdentityServer4     4.0.2】

        Core WebApi集成校验:【IdentityServer4.AccessTokenValidation  3.0.1】

   扩展HttpClient发送请求:【IdentityModel  4.3.1】

   IDS4授权码或隐式等模式的校验: 【Microsoft.AspNetCore.Authentication.OpenIdConnect  3.1.5】

 (7). JWT:【JWT 7.2.1】

 (8). 负载均衡:Nginx

PS:以上程序集版本均为截止目前(20200713)最新版本,后续如果有大版本变更,写法发生变化或者引进了新特性,该系列文章均会更新。

部分升级写法: 

 A. Ocelot 从15.x版本升级到16.x版本:根节点由ReRoutes 改为 Routes即可。

 B. JWT 从5.x版本升级到7.x版本:解密方法发生了变化,详见具体章节。

 C. IdentityServer4 从3.x版本升级到4.x版本:必须配置apiscopes,ApiResource中要加上 { Scopes = { "xxxx" } }, configureservice要加上 .AddInMemoryApiScopes(Config1.GetApiScopes()) 

3. 最终架构图

 

 

三. 目录

阶段一:微服务系列

       第一节:微服务准备(Webapi复习、PostMan的使用、项目启动方式、业务代码准备)

       第二节:Consul简介及服务注册、发现、健康检查

       第三节:基于Consul做服务的配置中心

       第四节:Polly基于控制台和Web端用法(熔断、降级、重试、超时处理等)

       第五节:基于Ocelot网关简介、路由功能、集成Consul使用

       第六节:Ocelot之自身负载、网关限流、缓存和熔断机制

       第七节:基于Ocelot网关层的微服务校验(手写jwt校验中间件和利用IdentityModel.Tokens.Jwt校验)

       第八节:理解认证和授权、Oauth2.0及四种授权模式、OpenId Connect

       第九节:IdentityServer4简介及客户端模式和用户密码模式的应用

       第十节:IdentityServer4隐式模式介绍和代码实操演练

       第十一节:IdentityServer4授权码模式介绍和代码实操演练

       第十二节:Ocelot集成IDS4认证授权-微服务主体架构完成

       第十三节:Nginx的简介、三种轮询配置方式、以及解决微服务架构负载均衡问题

       第十四节:分布式事务简介、理论分析、及强一致性(2PC、3PC)剖析

       第十四节:分布式事务之弱一致性(TCC)、最终一致性(本地消息表、最大努力通知)剖析

       第十五节:CAP框架简介和基于CAP实现微服务的事件总线

       第十六节:CAP框架异常处理、实现分布式事务(最终一致性) 及 其它用法

       第十七节:CAP框架5.x版本新特性和CAP框架源码剖析

       第十八节:Skywalking由浅入深---未完

       第十九节:.Net技术栈+SkyWalking实操--未完

       第二十节:xxxxxxxxxxxxxxxxx

       第二十一节:xxxxxxxxxxxxxxxxx

 

阶段二:IdentityServer4系列

       第一节:理解认证和授权、Oauth2.0及四种授权模式、OpenId Connect

       第二节:IdentityServer4简介及客户端模式和用户密码模式的应用

       第三节:IdentityServer4隐式模式介绍和代码实操演练

       第四节:IdentityServer4授权码模式介绍和代码实操演练

       第五节:IdentityServer4的Pkce机制、令牌刷新机制、混合授权模式

       第六节:IdentityServer4设备流授权模式和扫码登录(应用于IOT)

       第七节:xxxxxxxxxxxxxxxxx

       第八节:xxxxxxxxxxxxxxxxx

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
posted @ 2020-05-13 22:05  Yaopengfei  阅读(4273)  评论(15编辑  收藏  举报