- 每个服务可独立运行在自己的进程里
- 一系列独立运行的微服务共同构建起整个系统
- 每个服务为独立的业务开发,一个微服务值关注某个特定的功能,例订单管理,用户管理
- 为服务之间通过一些轻量的通信机制进行通信,例Restful API进行调用
- 可以使用不同的语言与数据存储技术开发
SpringCloud的出现简化了分布式架构的开发
- 他是对Netflix开源组件的封装
- 整合了分布式开发需要用到的一套技术
- 使用SpringBoot作为底层,通过SpringBoot的自动配置见花分布式开发
特点:- 服务注册和发现
- 路由
- service - to - service调用
- 负载均衡
- 断路器(雪崩效应)
常用组件
Eureka组件 实现服务的注册和发现
服务注册 :当为服务client启动时,想Eureka Server发起注册,并上报该节点的相关信息
服务发现 : 通过注册中心获取提供者的地址
Ribbon简介
是一个基于HTTP和TCP的客户端负载均衡工具
ribbon提供了很多的负载均衡算法
RoundRobinRule(轮询算法)
RandomRule(随机算法)
AvailabilityFilteringRule(过滤失效服务 再轮询):会先过滤由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
WeightedResponseTimeRule(权重):根据平均响应的时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够会切换到WeightedResponseTimeRule
RetryRule(先轮询 调用失败 使用重试机制):先按照RoundRobinRule的策略获取服务,如果获取失败则在制定时间内进行重试,获取可用的服务
BestAviableRule(过滤失效服务 再请求并发量最小的服务):会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
Feign
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔(添加jar即可使用)的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器(对象的序列化 和 反序列化)。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果并且springcloud为feign添加了springmvc注解的支持。
本文探讨了微服务架构的特点,如服务独立性、轻量级通信、技术栈多样性,以及SpringCloud如何简化分布式系统开发。介绍了服务注册与发现、负载均衡、断路器等关键概念,同时详细解析了Eureka、Ribbon、Feign等核心组件的工作原理和使用场景。
1411

被折叠的 条评论
为什么被折叠?



