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

2019/04/10 10:10
阅读数 9

[TOC]

微服务框架

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

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

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

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

SpringCloud

SpringCloud技术栈

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

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

SpringCloud核心组件

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

核心组件工作原理

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

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

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

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

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

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

微服务架构组件

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

组件 选型
网关 Zuul </br> Ocelot </br> Kong</br>Tyk </br> Orange</br>Spring Cloud Gateway </br> apiaxle</br>api-umbrella
服务注册与发现 Eureka </br> Consul </br> zookeeper
服务调用 Feign </br> restTemplate
负载均衡 Ribbon
断路器 Hystrix
配置管理 Spring Cloud Config</br> apollo
链路追踪 Spring Cloud Sleuth </br> Zipkin </br> HTrace </br> SkyWalking
安全 Spring Cloud Security </br> Auth2 </br> IdentityServer4
监控 spectator </br> atlas
消息、事件总线 Spring Cloud Bus (Redis、RabbitMQ、Kafaka)

最后

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

原文出处:https://www.cnblogs.com/lcyhjx/p/12641840.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部