什么是微服务架构?来看看从业10年的架构师是怎么回答的吧

1 基于Consul的服务注册与发现

Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单。

Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合

2 基于Ocelot实现API网关服务

Ocelot是一个使用.NET Core平台上的一个API Gateway,这个项目的目标是在.NET上面运行微服务架构。Ocelot框架内部集成了IdentityServer(身份验证)和Consul(服务注册发现),还引入了Polly来处理进行故障处理。目前,腾讯和微软是Ocelot在官网贴出来的客户。

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

Polly是一个被.NET基金会认可的弹性和瞬态故障处理库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略,其主要功能如下:

功能1:重试(Retry)

功能2:断路器(Circuit-Breaker)

功能3:超时检测(Timeout)

功能4:缓存(Cache)

功能5:降级(Fallback)

Polly的策略主要由“故障”和“动作”两个部分组成,“故障”可以包括异常、超时等情况,“动作”则包括Fallback(降级)、重试(Retry)、熔断(Circuit-Breaker)等。策略则用来执行业务代码,当业务代码出现了“故障”中的情况时就开始执行“动作”。

4 基于IdentityServer建立授权与验证服务

IdentityServer4(这里只使用版本号为4)是一个基于OpenID Connect和OAuth 2.0的针对http://ASP.NETCore 2.0的框架。IdentityServer是将规范兼容的OpenID Connect和OAuth 2.0终结点添加到任意http://ASP.NETCore应用程序的中间件。通常,你构建(或重新使用)包含登录和注销页面的应用程序,IdentityServer中间件会向其添加必要的协议头,以便客户端应用程序可以使用这些标准协议与其对话。

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

Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于http://ASP.NET,http://ASP.NETCore,Web API,Web Forms,WPF,Console,http://ASP.NETMVC 等技术开发的应用程序中,并且提供了REST接口可以应用在 Javascript,Node.js 中。它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置,对于微服务架构的应用程序来说,统一的日志收集系统的建立更是有必要。

6 基于Ocelot+SkyWalking实现分布式追踪

微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题,但是在微服务的架构下,大部分功能模块都是单独部署运行的,彼此通过总线交互,都是无状态的服务,这种架构下,前后台的业务流会经过很多个微服务的处理和传递,我们会面临以下问题:

分散在各个服务器上的日志怎么处理?

如果业务流出现了错误和异常,如何定位是哪个点出的问题?

如何快速定位问题?

如何跟踪业务流的处理顺序和结果?

以前在单应用下的日志监控很简单,在微服务架构下却成为了一个大问题,如果无法跟踪业务流,无法定位问题,我们将耗费大量的时间来查找和定位问题,在复杂的微服务交互关系中,我们就会非常被动。因此,我们需要对其进行追踪!

SkyWalking-netcore是一个使用Open Tracing规范来设计追踪数据的开源追踪组件,只需要做很少的配置即可对经过网关的所有API服务进行Tracing。

7 基于Apollo实现统一配置中心

在微服务架构环境中,项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改配置,如果配置出现错误,需要重新打包发布,时间成本较高,因此需要做统一的配置中心,能做到自动更新配置文件信息,解决以上问题。

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。其服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

你可能感兴趣的:(什么是微服务架构?来看看从业10年的架构师是怎么回答的吧)