微服务框架
微服务 (Microservices) 是一种架构风格, 一个大型复杂软件应用由一个或多个微服务组成. 系统中的各个微服务可被独立部署, 各个微服务之间是松耦合的. 每个微服务仅关注于完成一件任务并很好地完成该任务. 在所有情况下, 每个任务代表着一个小的业务能力.
以往我们开发应用程序都是单体型, 虽然开发和部署比较方便, 但后期随着业务的不断增加, 开发迭代和性能瓶颈等问题, 将会困扰开发团队, 微服务就是解决此问题的有效手段.
那么我们在具体实践落地微服务时, 我们又需要做什么? 一个微服务框架到底又有什么呢? 特别是对于. NET 生态圈的小伙伴们, 一直都有很多困惑, 不知该如何下手.
既然我们不知道, 又要高清楚, 那最好的办法是什么呢? 我认为最有效的方式是研究成熟的产品. 市面上成熟的微服务框架有一些, 而 SpringCloud 就是可供研究的对象, 下面我们一起来看看 SpringCloud 是什么?
SpringCloud
SpringCloud 技术栈
从上面的技术栈图中可以看出:
微服务框架核心是服务治理
服务治理的核心组件包括网关, 服务注册与发现, 服务调用
SpringCloud 核心组件
组件 | 选型 | 备注 |
---|---|---|
网关 | Zuul | |
服务注册与发现 | Eureka Consul zookeeper | |
服务调用 | Feign | 根据注解和选择机器, 拼接 Url 地址, 发起请求 简化服务调用 |
负载均衡 | Ribbon | 服务调用负载均衡,配合 Feign 和 Euraka 使用 |
断路器 | Hystrix | 隔离、熔断以及降级的一个框架 服务线程池隔离,实现不同服务的调度隔离,避免服务雪崩 |
核心组件工作原理
Eureka: 服务启动时, Eureka 会将服务注册到 EurekaService, 并且 EurakeClient 还可以返回过来从 EurekaService 拉去注册表, 从而知道服务在哪里
Ribbon: 服务间发起请求的时候, 基于 Ribbon 服务做到负载均衡, 从一个服务的对台机器中选择一台
Feign: 基于 fegin 的动态代理机制, 根据注解和选择机器, 拼接 Url 地址, 发起请求
Hystrix: 发起的请求是通过 Hystrix 的线程池来走, 不同的服走不同的线程池, 实现了不同的服务调度隔离, 避免服务雪崩的问题
Zuul: 如果前端后端移动端调用后台系统, 统一走 zull 网关进入, 有 zull 网关转发请求给对应的服务
说明: 如果. Net Core 平台下想要使用 SpringCloud, 可通过 steeltoe 来实现, 具体可参考 https://steeltoe.io/
微服务架构组件
一个较完整的微服务架构包含的如下的组件
组件 | 选型 |
---|---|
网关 | Zuul Ocelot Kong Tyk Orange Spring Cloud Gateway apiaxle api-umbrella |
服务注册与发现 | Eureka Consul zookeeper |
服务调用 | Feign restTemplate |
负载均衡 | Ribbon |
断路器 | Hystrix |
配置管理 | Spring Cloud Config |
链路追踪 | Spring Cloud Sleuth Zipkin HTrace kyWalking |
安全 | Spring Cloud Security Auth2 IdentityServer4 |
监控 | spectator atlas |
消息、事件总线 | Spring Cloud Bus (Redis、RabbitMQ、Kafaka) |
最后
上面已经介绍了一个微服务框架所包含的架构组件, 那么. NET 下如何落地呢? 接下来我们从网关开始来一步一步实践. .NET 下的网关, 我们推荐使用 Ocelot, 来开始我们的 Ocelot 之旅.
来源: https://www.cnblogs.com/lcyhjx/p/12641840.html