Spring cloud 作为当下主流的微服务框架,让我们实现微服务架构简单快捷
Spring cloud中各个组件在微服务架构中扮演的角色如下图所示,黑线表示注释说明,蓝线由A指向B,表示B从A处获取服务。
Spring cloud组成的微服务架构图
由上图所示,微服务架构大致由上图的逻辑结构组成,包括各种微服务、注册发现、服务网关、熔断器、统一配置、跟踪服务等。
下面说说Spring cloud中的组件分别充当其中的什么角色。
Feign(接口调用):微服务之间通过Rest接口通讯,Spring Cloud提供Feign框架来支持Rest的调用
Feign使得不同进程的Rest接口调用得以用优雅的方式进行,这种优雅表现得就像同一个进程调用一样。
Netflix eureka(注册发现):微服务模式下,一个大的Web应用通常都被拆分为很多比较小的web应用(服务)
这个时候就需要有一个地方保存这些服务的相关信息,才能让各个小的应用彼此知道对方,这时就需要在注册中心进行注册。
每个应用启动时向配置的注册中心注册自己的信息(ip地址,端口号, 服务名称等信息),注册中心将他们保存起来
服务间相互调用的时候,通过服务名称就可以到注册中心找到对应的服务信息,从而进行通讯。
注册与发现服务为微服务之间的调用带来了方便,解决了硬编码的问题。服务间只通过对方的服务id,而无需知道其ip和端口即可以获取对方方服务。
Ribbon(负载均衡):Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。
为Ribbon配置服务提供者的地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。
Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。
在SpringCloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从EurekaServer获取服务提供者的地址列表,并基于负载均衡算法,请求其中一个服务提供者的实例
(为了服务的可靠性,一个微服务可能部署多个实例)
Hystrix(熔断器):当服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。
在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃(雪崩效应),Hystrix正是为了防止此类问题发生。
Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。
Hystrix主要通过以下几点实现延迟和容错:
包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用了设计模式中的“命令模式”。
跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间。
资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等候,从而加速失败判定。
监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时和被拒绝的请求等。
回退机制:当请求失败、超时、被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑可由开发人员指定。
Zuul(微服务网关) :不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。
例如一个电影购票的手机APP,可能调用多个微服务的接口才能完成一次购票的业务流程
如果让客户端直接与各个微服务通信,会有以下的问题:
以上问题可借助微服务网关解决。微服务网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。
使用微服务网关后,微服务网关将封装应用程序的内部结构,客户端只用跟网关交互,而无须直接调用特定微服务的接口。
这样,开发就可以得到简化。不仅如此,使用微服务网关还有以下优点:
易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析。
易于认证。可在微服务网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。
减少了客户端与各个微服务之间的交互次数。
Spring cloud Config( 统一配置服务):对于传统的单体应用,常使用配置文件管理所有配置。
例如一个SpringBoot开发的单体应用,可将配置内容放在application.yml文件中。如果需要切换环境,可设置多个Profile,并在启动应用时指定spring.profiles.active={profile}。
然而,在微服务架构中,微服务的配置管理一般有以下需求:
集中管理配置。一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此集中管理配置是非常有必要的。
不同环境,不同配置。例如,数据源配置在不同的环境(开发、测试、预发布、生产等)中是不同的。
运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小或熔断阈值,并且在调整配置时不停止微服务。
配置修改后可自动更新。如配置内容发生变化,微服务能够自动更新配置。
综上所述,对于微服务架构而言,一个通用的配置管理机制是必不可少的,常见做法是使用配置服务器管理配置。
Spring cloud bus利用Git或SVN等管理配置、采用Kafka或者RabbitMQ等消息总线通知所有应用,从而实现配置的自动更新并且刷新所有微服务实例的配置。
Sleuth+ZipKin(跟踪服务):Sleuth和Zipkin结合使用可以通过图形化的界面查看微服务请求的延迟情况以及各个微服务的依赖情况。
需要注意的是Spring boot2及以上不在支持Zipkin的自定义,需要到官方网站下载ZipKin相关的jar包。
另外需要提一点的是Spring boot actuator,提供了很多监控端点如/actuator/info、/actuator/health、/acutator/refresh等,可以查看微服务的信息、健康状况、刷新配置等。
对于家装来说,瓷砖铺贴是必不可少的一项工程,而瓷砖无论是质量问题还是铺贴问题都会对日常生活造成一定的影响,因此铺贴验收很重要,今天就一起聊一聊关于瓷砖验收的技巧。瓷砖的平整度首先就是用肉眼观察,若肉眼都可以清晰的看出瓷砖不平整那么瓷砖铺贴肯定就是不合格的,这样就必须返工。若表面看不出什么问题,即使用
2025-04-26 16:28:29
在日常的衣物清洗中,最让人头疼的莫过于衣物间的“亲密接触”——串色。那些不经意间沾染上的颜色,仿佛给衣物添上了不速之客,让人心生懊恼。别担心,今天,我将带你走进一场衣物色彩复原的奇妙之旅,用生活中的小妙招和专业技巧,让你的衣物重焕新生。一、日常小物,大显神通1. 醋的温柔力量厨房里的调味高手——醋,
2025-04-26 16:23:13
铝合金门窗之所以成为现代建筑门窗的首选材料,是因为与钢门窗、木门窗及塑钢窗相比,具有以下的优点。第一点:材质较轻铝合金门窗用材比较节省,质量相应比较轻。工程实践证明:每平方米铝合型材用量平均为8~12kg,而每平米钢门窗的用钢量平均为17~20kg,由此可见,铝合金门窗比钢门减轻质量接近50%。第二
2025-04-26 15:25:19
在中国传统文化中,本命年指的是一个人出生那年的生肖再次轮回到的那一年,按照十二生肖的周期,每12年一个轮回。人们普遍认为本命年是一个比较特殊的年份,有以下几个讲究:1. 穿红色:在本命年,人们通常会穿红色衣物,如红色内衣、红色腰带、红色袜子或红色装饰品等,以红色来驱邪避凶,带来好运,这种习俗被称为“
2025-04-26 14:59:12
很多朋友至今在喝祁门红茶的时候,仍然会对祁红的干茶外形有些云里雾里:怎么有些祁红是碎了?有的又是成条形、卷曲形的?难道买到假货了?可大家都明明说自己是按传统的工艺制作的,有着多少代的传承,这到底怎么分啊?在他们的认知里,他们之前喝过,看到红茶可能是这样的——也可能是这样的——而当他们喝到的祁红却可能
2025-04-26 14:54:53
光纤宽带猫接口及按键说明 一般来说 ,黑色接口是电源线,灰色接口是电话线,黄色接口是网线,蓝色接口是光纤。但由于市面上路由器、光猫没有严格的造型标准,所以有些接口也是不太一样的,比如有些猫的光纤接口就在底部。具体情况具体分析,只要记住OPTICAL这个口是光纤接口就好啦。 光纤宽带猫指示灯状态说明
2025-04-26 13:44:31