Dubbo
SOA思想(微服务思想)
面向服务的架构(SOA)是一个组件模型(程序结构),它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
微服务:在分布式的思想的条件下,应该尽可能的降低服务之间的耦合性,同时满足当服务发生异常时,可以自动的实现故障的迁移(关键字: 分布式 架构的松耦合 服务高可用)
微服务中高可用实现策略
传统高可用弊端:
如果添加/减少服务器时,需要手动的修改nginx的配置文件,并且重启服务之后,服务才能生效. 效率略低.不够智能,不能满足微服务条件下的高可用的要求(自动).
2.采用注册中心的方式实现高可用
调用步骤:
1.当服务生产者启动时,会链接注册中,将服务信息写入到注册中
2.当注册中心接收到服务信息时,会动态的维护服务注册列表数据
3.当消费者启动时,首先会链接注册中心,目的是获取注册列表
4.当消费者接收到注册列表时,将列表缓存到本地,方便以后调用
5.当服务的生产者有多个时,进行负载均衡,挑选其中的一个服务器进行访问
6.6.当服务的生产者宕机时,注册中心有心跳检测机制.当发现服务宕机时,首先会维护自己的注册列表数据,标识为down.之后全网广播通知所有的消费者修改服务列表数据.
RPC远程过程调用
1.RPC解决了分布式系统中服务之间的调用问题
2.远程调用时,就是一个代理的调用,使用的时候感觉就是再使用本地服务
Dubbo负载均衡策略
1.随机策略
2.轮询策略
3.一致性hash算法
4.最小访问
Dubbo用法
1.导jar包
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2.编辑中立接口
3).编辑生产者
3.1).编辑实现类
3.2).编辑YML文件 服务名称 根据接口定义的 /服务端口 唯一的
4).定义消费者
4.1).在controller中注入接口
4.2).编辑YML配置文件 链接zk集群即可.
Dubbo数据传输说明