架构师基础--SpringCloud

tech2024-11-23  17

文章目录

Spring Cloud1.微服务2. 微服务和微服务架构3. 微服务的优缺点4.微服务技术栈5.常用微服务框架6. Spring Cloud是什么?7. Spring Boot和Spring Cloud的区别8. Dubbo和Spring Cloud的区别Spring Cloud参考资料9.Eureka组件1) Eureka是什么2)Eureka原理 Ribbon 负载均衡1) Ribbon是什么2) 负载均衡分类3) Ribbon 负载均衡策略自定义Ribbon负载均衡 FeignFeign 是什么 Hystrix熔断器Hystrix 是什么?服务熔断

Spring Cloud

1.微服务

单机版 只有一个一个工程, 耦合高分布式 dubbo是基于RPC来通信 SpringCloud基于HTTP的RESTful API 多个工程,耦合度比较低,轻量级通信架构

2. 微服务和微服务架构

微服务架构: idea用maven 开发的一个个独立module,具体是使用spring boot开发的一个个工具。 多个微服务之间通过轻量级的通信架构进行相互协作组成的一个整体。

3. 微服务的优缺点

高内聚,足够小,代码易理解。 开发简单,开发效率高 耦合基地,开发部署都是独立的 微服务能使用不同的语言开发 微服务只是业务逻辑代码,不和HTML, CSS界面混合 每个微服务都可以有自己的数据库

4.微服务技术栈

服务治理服务注册服务调用服务负载均衡服务监控 SpringCloud实现以上所有的 服务条目落地技术服务开发SpringBoot, Spring, SpringMVC服务配置与管理Netflix的Archaius, 阿里Diamond服务注册与发现Eureka, Consul, Zookeeper服务调用Rest, RPC, gRPC服务熔断Hystrix,Envoy负载均衡Ribbon,Nginx服务接口调用Feign服务配置中心管理SpringCloudConfig, Chef服务路由(API网关)zuul服务监控Zabbix, Nagios,Metric,Spectator全链路追踪Zipkin,Brave,Dapper服务部署Docker,OpenStack,Kubernetes数据流操作开发包SpringCloud Stream(封装与Redis, Rabbit,Kafka等发送接收消息)时间消息总线SpringCloudBus

5.常用微服务框架

阿里Dubbo/HSF 京东JSF 新浪Motan

框架Netflix/SpringCloudMotangRPCTriftDubbo功能定位完整微服务架构微服务框架,整合zk或consul,实现集群的服务注册/发现RPC框架RPC框架服务框架支持RestY, Ribbon支持多种可插拔的序列化选择NNNN支持RPCNY(Hession2)YYY支持多语言Y(Rest形式)NYYY服务注册发现Y(Eureka 服务注册,Karyon服务框架支持服务自注册和健康检查)Y(Zookeeper/consul)NNY负载均衡Y(服务端zuul+ 客户端Ribbon) zuul服务,动态路由,云端负载均衡Eureka(针对中间层服务器)Y客户端NNY(客户端)配置服务Netxflix Archaius SpringCloud Config Server集中配置NNNN服务调用链监控Y(zuul)zuul提供边缘服务API网关NNNN高可用容错Y(服务端Hystrix+ 客户端Ribbon)Y(客户端)NNY(客户端)典型应用案例NetflixSinaGoogleFacbook社区活跃度高一般高一般重新维护学习难度中等低高高低文档丰富程度高一般一般一般高其他SpirngBus为应用程序带啦更多管理端点支持降级Netflix内部在开发继承gRPCIDL定义实践的公司比较多

6. Spring Cloud是什么?

这种当然看官网才是原汁原味。

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.

7. Spring Boot和Spring Cloud的区别

Spring Boot 关注单个个体微服务SrpingCloud关注全局,是微服务的协调治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理,服务发现,断路器,路由,微代理实践总线,全局锁,决策竞选,分布式会话等集成服务。Spring Boot 可以离开SpringCloud独立开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。

8. Dubbo和Spring Cloud的区别

成熟的互联网架构(分布式 + 服务治理Dubbo) 实现功能对比
FunctionDubboSpringCloud服务注册中心ZookeeperEureka服务调用方式RPCREST API服务监控Dubbo MonitorSpringBoot Admin断路器不完善Spring Cloud Netflix Hystrix服务网关无Spring Cloud Netflix Zuul分布式配置无Spring Cloud Config服务跟踪无Spring Cloud Sleuth消息总线无Spring Cloud Bus数据流无Spring Cloud Stream………

两者最大的区别: SpringCloud抛弃了Dubbo的RPC通信,采用的是HTTP的REST方式

HTTP的REST方式,一定程度上牺牲了服务调用的性能,但也避免了原生RPC带来的问题。REST比RPC更加灵活,服务提供发和调用发只依赖约定,不存在代码级别的强依赖。

Spring Cloud参考资料

https://www.springcloud.cc/spring-cloud-netflix.html https://www.springcloud.cc/spring-cloud-dalston.html Spring Cloud中国社区:http://springcloud.cn/ Spring Cloud中文网:https://www.springcloud.cc/

9.Eureka组件

1) Eureka是什么

Eureka主管服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件。功能类似于dubbo的注册中心,如Zookeeper。

2)Eureka原理

Eureka采用C-S的设计架构。Eureka Server作为服务注册功能的服务器,这是服务注册中心。 而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。 SpringCloud的一些其他模块(比如zuul) 就可以通过Eureka Server来发现熊中的其他微服务,并执行相关的逻辑。

Euraka和Dubbo的对比

Eureka包含两个组件: Eureka Server和Eureka Client Eureka Server提供服务注册服务 各个节点启动后,会在EurekaServer中注册,EurekaServer中的注册表中将会存储所有可以用服务节点信息,服务节点的信息可以在界面中直观看到。

Eureka Client是yige Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会在Eureka Server发送心跳(默认周期为30s)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳, Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

Eureka三大组成: Eureka Server提供服务注册和发现 Service Provider 服务提供方将自身服务注册到Eureka,从而是服务消费方能找到 Eureka Consumer服务消费方获取注册服务列表,从而能够消费服务。

Eureka和Zookeeper的区别 传统的A(Atomicity原子性)C(Consistency一致性)I(Isolation独立性)D(Durablity持久性) C(Consistency强一致性)A(可用性)P(Partition Tolerance分区容错性) Eureka遵守的是AP规则 Zookeeper遵的是CP规则

Ribbon 负载均衡

1) Ribbon是什么

Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡工具

2) 负载均衡分类

集中式负载均衡(偏向硬件):Nginx, 硬件F5. 集中式负载均衡:即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件如F5,也可以是软软件如Nginx)由该设施负载把访问请求通过某种策略转发至服务的提供方。 进程内负载均衡(偏向软件):Ribbon 进程内负载均衡: 将LB逻辑集成到消费方,消费方从服务注册中心获知有那些地址可用,然后自己在从这些地址照顾你选择一个合适的服务器。 Ribbon就是进程内LB, 它只是一个类库,集成与消费方进程,消费方通过它来获取到服务提供方的地址。

3) Ribbon 负载均衡策略

RoundRobinRule 轮询策略。Ribbon默认采用的策略。

RandomRule 随机策略,从所有可用的provider中随机选择一个。

RetryRule 先按照RoundRobinRule策略获取provider,若获取失败,则在指定的时限内重试。默认的时限为500毫秒。

BestAvailableRule 选择并发量最小的provider,即连接的消费者数量最少的provider

AvailabilityFilteringRule 该算法规则是:过滤掉处于断路器跳闸状态的provider,或已经超过连接极限的provider,对剩余provider采用轮询策略。

ZoneAvoidanceRule 复合判断provider所在区域的性能及provider的可用性选择服务器。

WeightedResponseTimeRule “权重响应时间”策略。根据每个provider的平均响应时间计算其权重,响应时间越快权重越大,被选中的机率就越高。在刚启动时采用轮询策略。后面就会根据权重进行选择

自定义Ribbon负载均衡

这个可以参考官网的源码来进行修改。 Ribbon Load Balance Algorithm

Feign

Feign 是什么

Feign 是一个声明式的服务客户点,使得编写Web服务客户端变得容易 如何实现

创建一个接口在主启动类上添加@FeignClient(value = “MICROSERVICECLOUD-DEPT”)

Feign是对Ribbon的进一步封装,从而实现面向接口编程。 Feign官网参考

Hystrix熔断器

Hystrix 是什么?

服务熔断

Spring Cloud主要技术就到这里了。所有的内容形成代码放在github上了。 Spring Cloud Config 这个链接只和Spring Cloud Config 相关。 Spring Cloud Main Project

最新回复(0)