【.NET Core微服务架构】-- 初识

560 阅读4分钟

什么是微服务架构?

微服务是一种架构风格,是以开发一组小型服务的方式来作为一个独立的应用系统,即每个服务都运行在自己的进程中,服务之间采用轻量级的HTTP通信机制(通常是采用HTTP的RESTFUL API)进行通信。每一个服务都是根据业务来进行划分的,并且每个服务都可以独立地部署到生产环境上。最大的优势是这些服务都可以采用不同的编程语言编写,且可以使用不同的数据存储技术,即可以使用不同的数据库来存储。对这些微服务我们只需要使用一个非常轻量级的集中式管理来进行协调就可以了。
微服务是如何诞生的?
最开始的项目是采用单体应用架构来进行构建的;单体应用架构一个应用中包含了程序所有的功能,也就是把所有的功能模块都放在一个应用程序里面,后面随着V8引擎的推出,node.js的崛起,出现了很多优秀的前端框架,然后就形成了前后端分离的架构方式,然后随着前端的方向越来越多,app,小程序等等,业务越来越多,单体架构的后端已经不能够满足如此繁重的需求,所以就出现了微服务的理念。因而也诞生了许多微服务相关的技术栈。

技术栈

image.png

看着眼花缭乱,其实也不复杂,先看看微服务的流程图。 image.png

下面只简单的介绍下都是做什么的。

网关

网关最主要的功能就是路由、限流、熔断、缓存等。

服务注册与发现

服务注册与发现,搭配网关一起使用,可以实现动态的扩展服务。

授权中心

选择Jwt Token的方式进行鉴权,第三方插件Ids4支持多种丰富的权限配置。

分布式事务

CAP 是一个在分布式系统中(SOA,MicroService)实现事件总线及最终一致性(分布式事务)的一个开源的 C# 库,她具有轻量级,高性能,易使用等特点。

全链路追踪

Skywalking 是一个APM系统,为微服务架构和云原生架构系统设计,它通过客户端探针自动收集追踪性能所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking 可以感知应用间关系和服务间关系,并进行相应的指标统计及展示。

配置中心

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

数据库

数据库就不多说了SQL Server或者MySql,ORM的框架选择SqlSugar,当然EFCore也是一个不错的选择。

NoSql

Redis是非关系型的数据库,性能极高、丰富的数据类型、原子性、丰富的特性,适用于作数据库,高速缓存和消息队列代理。

消息队列

消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。消息队列主要解决了应用耦合、异步处理、流量削锋等问题。当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如 Redis 、Mysql以及phxsql也可实现消息队列的功能

任务调度

Quartz.NET是一个开源的定时作业调度项目,旨在创建一个免费商业使用的作业调度器,同时具有“企业级”的特性。

  • API 操作简单,只要几行简单的代码你就可以在应用程序里面实现自己的作业调度,并实时监视作业执行情况
  • 触发器功能强大,比 Windows 的任务计划提供更细的触发粒度
  • 良好的可扩展性,它基于接口编程,你可以实现自己的 Schedule 调度器,Job 作业,以及 Trigger 触发器等
  • 持久化,作业可以保存在内存中,也可以持久化到数据库,支持多种数据库类型:SqlServer、Oracle、MySql等
  • 分布式和集群,这是一个高级应用,可以在多台计算机之间创建负载平衡、容错处理
  • 支持Cron表达式
  • 支持以配置文件的方式定制作业调度

系统日志

分布式异常日志收集框架Exceptionless是开源的工具,根据官方给出的说明: Exceptionless可以为您的ASP.NET、Web API、WebFrom、WPF、控制台和MVC应用程序提供实时错误、特性和日志报告。它将收集的信息组织成简单的可操作的数据,这些数据将帮助你很方便的查看异常信息。