dubbo
什么是RPC
RPC就是Remote Procedure Call,远程过程调用,它相对应的是本地过程调用
RPC和HTTP
HTTP只是传输协议,协议只是规范了一定的交流格式
RPC对比的是本地调用过程,是用来作用分布式系统之间通信,它可以用HTTP来传输,也可以基于TCP自定义协议传输
dubbo的执行流程
节点 | 角色说明 |
---|---|
Consumer | 需要调用远程服务的服务消费方 |
Registry | 注册中心 |
Provider | 服务提供方 |
Container | 服务运行的容器 |
Monitor | 监控中心 |
1.服务器提供者Provider启动然后向注册中心注册自己所能提供的服务
2.服务消费者Consunmer启动向注册中心订阅自己所需的服务
3.注册中心将提供者信息通知给Consumer,
4.Consumer获取到提供者的地址,因此可以通过负载均衡选择一个Provider直接调用
5.之后服务提供方数据变更的话注册中心会把变更推送给服务消费者
6.服务提供者和消费者都会在内存中记录着调用的次数和时间,然后定时发送统计到监控中心
spring cluod
spring cloud的优缺点
优点:
1.产出与spring大家族可以保证后续的更新,完善
2.spring cloud为微服务架构提供了非常完整的支持,例如配置管理,服务发现,断路器,微服务网关等
3.耦合度比较低
4.微服务时跨平台的适用于任何一种语言开发
缺点:
1.微服务过多,治理成本高,不利于维护系统
2.分布式系统开发成本高
主要项目
1.spring Cloud Config
集中配置管理工具,分布式系统中统一的外部配置管理
2.spring cloud Netflix
开源组件集成,包括
Eureka:服务治理
Ribbon:负载均衡
Hystrix:服务容错,实现了断路器模式
Feign:声明式服务调用
Zuul:API网关,对请求提供路由及过滤功能
3.spring cloud Bus
用于传播集群状态变化的消息总线,使用轻量级消息代理连接分布式系统中的节点,可以用来动态刷新集群中的服务配置
4.spring cloud Security
安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持
5.spring cloud Task
用于快速构建短暂,有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性
6.spring cloud Gateway
API网关组件,对请求提供路由及过滤功能
spring cloud 和dubbo的区别
1.服务调用方式dubbo时RPC springcloud时 Rest API
2.注册中心 doubbo是zookeeper spring cloud是eureka,也可以是zookeeper
3.spring cloud 还有服务网关,分布式配置,服务跟踪等服务,这些dubbo没有
Eureka和zookeeper的区别
1.zookeeper中的节点服务器挂了就要选举,必须有一台是主其他是从
2.Euraka各个系欸但是平等关系,服务器挂了没关系,只要有一台Eureka就可以保证服务可用.如果查询到的数据并不是最新的,就是因为Eureka的自我自我保护机制导致的
3.Eureka本身是一个工程,zookeeper只是一个进程
4.Eureka可以很好的应对网络系统故障导致分节点失去联系的情况,而不像zookeeper一样使得整个注册系统瘫痪
4.在CAP机制上面 C:一致性 A:可用性 P分区容错性
Eureka保证的A:一致性和P分区容错性
zookeeper保证的是C:一致性和P:分区容错性
Dubbo | Spring Cloud | |
服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
服务网关 | 无 | Spring Cloud Netflix Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
...... | ... | ...... |