转载

.Net微服务实践(一):微服务框架选型

微服务框架

微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

以往我们开发应用程序都是单体型,虽然开发和部署比较方便,但后期随着业务的不断增加,开发迭代和性能瓶颈等问题,将会困扰开发团队,微服务就是解决此问题的有效手段。

那么我们在具体实践落地微服务时,我们又需要做什么?一个微服务框架到底又有什么呢?特别是对于.NET生态圈的小伙伴们,一直都有很多困惑,不知该如何下手。

既然我们不知道,又要高清楚,那最好的办法是什么呢?我认为最有效的方式是 研究成熟的产品 。市面上成熟的微服务框架有一些, 而SpringCloud就是可供研究的对象,下面我们一起来看看SpringCloud是什么?

SpringCloud

SpringCloud技术栈

.Net微服务实践(一):微服务框架选型

从上面的技术栈图中可以看出:

  • 微服务框架核心是 服务治理
  • 服务治理的核心组件包括 网关服务注册与发现服务调用

SpringCloud核心组件

组件 选型 备注
网关 Zuul
服务注册与发现 EurekaConsulzookeeper
服务调用 Feign 根据注解和选择机器,拼接Url地址,发起请求简化服务调用
负载均衡 Ribbon 服务调用负载均衡,配合Feign和Euraka使用
断路器 Hystrix 隔离、熔断以及降级的一个框架服务线程池隔离,实现不同服务的调度隔离,避免服务雪崩

核心组件工作原理

.Net微服务实践(一):微服务框架选型

Eureka:服务启动时,Eureka会将服务注册到EurekaService,并且EurakeClient还可以返回过来从EurekaService拉去注册表,从而知道服务在哪里

Ribbon:服务间发起请求的时候,基于Ribbon服务做到负载均衡,从一个服务的对台机器中选择一台

Feign:基于fegin的动态代理机制,根据注解和选择机器,拼接Url地址,发起请求

Hystrix:发起的请求是通过Hystrix的线程池来走,不同的服走不同的线程池,实现了不同的服务调度隔离,避免服务雪崩的问题

Zuul:如果前端后端移动端调用后台系统,统一走zull网关进入,有zull网关转发请求给对应的服务

说明:如果.Net Core平台下想要使用SpringCloud,可通过 steeltoe 来实现,具体可参考 https://steeltoe.io/

微服务架构组件

一个较完整的微服务架构包含的如下的组件

组件 选型
网关 ZuulOcelotKongTykOrangeSpring Cloud Gatewayapiaxleapi-umbrella
服务注册与发现 EurekaConsulzookeeper
服务调用 FeignrestTemplate
负载均衡 Ribbon
断路器 Hystrix
配置管理 Spring Cloud Config
链路追踪 Spring Cloud SleuthZipkinHTracekyWalking
安全 Spring Cloud SecurityAuth2IdentityServer4
监控 spectatoratlas
消息、事件总线 Spring Cloud Bus (Redis、RabbitMQ、Kafaka)

最后

上面已经介绍了一个微服务框架所包含的架构组件,那么.NET下如何落地呢?接下来我们从网关开始来一步一步实践。 .NET下的网关,我们推荐使用Ocelot,来开始我们的Ocelot之旅.

原文  http://www.cnblogs.com/lcyhjx/p/12641840.html
正文到此结束
Loading...