1. 微服务思想
面向服务的架构(SOA)是一个组件模型(程序结构),它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互
在分布式的思想的条件下,应该尽可能的降低服务之间的耦合性,同时满足当服务发生异常时,可以自动的实现故障的迁移.(HA)
关键词: 1.分布式 2.架构的松耦合 3.服务高可用
2. Dubbo框架
说明: 早期没有微服务框架时,需要利用httpClient的形式完成远程的业务调用.代码的层级繁琐
一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
yml
dubbo:
scan:
basePackages: com.jt #扫描dubbo注解的包路径
application: #应用名称
name: provider-user #一个接口对应一个服务名称,
#如果一个接口有多个实现类,则名称也应该相同
registry:
address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
protocol: #指定协议
name: dubbo #使用dubbo协议(tcp-ip) web-controller直接调用sso-Service
#port是dubbo协议内部的通信端口
port: 20880
2.1 Dubbo缓存策略
随机策略
轮询策略
一致性hash算法
最小访问
3. RPC
RPC是远程过程调用(Remote Procedure Call)的缩写形式
总结:
1.RPC解决分布式系统中,服务之间的调用问题
2.远程调用时,就是一个代理的调用,使用的时候感觉就是在使用本地服务.
4. 微服务中高可用实现策略
采用注册中心的方式实现高可用
调用步骤:
1.当服务生产者启动时,会链接注册中.将服务信息写入到注册中.
2.当注册中心接收到服务信息时,会动态的维护服务注册列表数据.
3.当消费者在启动时,首先会链接注册中心.目的是获取注册列表.
4.当消费者接收到注册列表时,将列表缓存到本地,方便以后调用.
5.当服务的生产者有多个时,进行负载均衡,挑选其中的一个服务器进行访问.
6.当服务的生产者宕机时,注册中心有心跳检测机制.当发现服务宕机时,首先会维护自己的注册列表数据,标识为down.之后全网广播通知所有的消费者修改服务列表数据.
5. 注册中心Zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等
zookeeper是分布式环境中提供一致性服务的调度器.