1、Spring Cloud和dubbo差异
组件差异
1
2
3
4
5
6
7
8
9
10
11
12
13dubbo:zookeeper+dubbo+springmvc/springboot
通信方式:rpc
注册中心:zookeeper,nacos
配置中心:diamond(淘宝开发)
spring cloud:spring+Netflix
springcloud是基于springboot实现的
通信方式:http restful
注册中心:eureka,consul,nacos
配置中心:config
断路器:hystrix
网关:zuul,gateway
分布式追踪系统:sleuth+zipkin现状比较
dubbo spring cloud 背景 国内影响大 国外影响大 平手 社区活跃度 低(现在又好了) 高 cloud胜出 架构完整度 不完善(dubbo有些不提供,需要用第三方,它只关注服务治理) 比较完善,微服务组件应有尽有。 cloud胜出 学习成本 dubbo需要配套学习 无缝spring cloud胜出 性能 高。(基于Netty) 低。(基于http,每次都要创建)。 此性能的损耗对大部分应用是可以接受的。而HTTP风格的API,是很方便的。用小的性能损耗换来了方便。 dubbo胜出
3、springcloud组件简介
- Eureka:服务注册与发现,用于服务管理。
- Feign: web调用客户端,能够简化HTTP接口的调用。
- Ribbon:基于客户端的负载均衡。
- Hystrix:熔断降级,防止服务雪崩。
- Zuul:网关路由,提供路由转发、请求过滤、限流降级等功能。
- Config:配置中心,分布式配置管理。
- Sleuth:服务链路追踪
- Admin:健康管理
4、Eureka
client: 拉取server注册表到本地;注册服务;初始化三个定时任务-心跳续约-定时拉取注册表-按需注册;发送下线(客户端停止时发送给server)
server:接受服务注册;接受服务心跳;服务剔除;服务下线;集群同步(启动时从peer拉取信息,2.将注册到自己的服务同步到peer)
eureka元数据
- 标准元数据:主机名、ip、端口、健康信息,会被发布到注册表中,用于服务间调用
- 自定义元数据:自定义key-value meta-map
eureka配置优化
server端优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17通过设置自我保护优化:
如果服务少的话不开启自我保护,因为服务太少,如果只是故障两三个节点也会占比很大,很容易达到eureka自我保护阈值。
如果服务多的话可以开启自我保护,这样可以有效防止网络波动带来的大面积心跳检测失败。
开启true关闭false:
enable-self-preservation: false
自我保护阈值设定:
renewal-percent-threshold: 0.85
剔除服务时间间隔,清理无效节点,默认60*1000毫秒,即60秒:
自定义无效服务剔除间隔:
eviction-interval-timer-in-ms: 1000
关闭从readOnly读注册表:
use-read-only-response-cache: false
readWrite 和 readOnly 同步时间间隔:
response-cache-update-interval-ms: 1000client端优化
1
2
3
4
5
6
7
8
9
10
11拉取注册表间隔:
表示eureka client间隔多久去拉取服务器注册信息,默认为30秒,可以自定义注册表拉取间隔:
registry-fetch-interval-seconds: 5
心跳续约间隔:
eureka客户端需要多长时间发送心跳给eureka服务器,表明他仍然或者,默认30秒,自定义心跳续约间隔:
lease-renewal-interval-in-seconds: 10
心跳过期时间:
eureka服务器在接受到实力的最后一次发出的心跳后,需要等待多久才可以将此实力删除,自定义心跳过期时间:
lease-expiration-duration-in-seconds: 10集群搭建
- service-url配置url时,将所有url打乱配置,即不同的server中的url配置顺序不要一样,这样可以让节点被均匀访问。
- eureka有效的服务集群只有三个,注册多个eureka服务无效,只会浪费资源。
分区
eureka提供了region和zone两个概念来进行分区,这两个概念均来自于亚马逊的AWS:
- region:可以简单理解为地理上的分区,比如亚洲地区,或者华北地区,再或者北京等等,没有具体大小的限制。根据项目具体的情况,可以自行合理划分region。
- zone:可以简单理解为region内的具体机房,比如说region划分为北京,然后北京有两个机房,就可以在此region之下划分出zone1,zone2两个zone。
最后更新: 2021年03月02日 13:19