微服务的一般架构图:
使用dubbo+zookeeper实现简化的微服务架构
dubbo是一个分布式服务框架,是阿里巴巴SOA服务化治理方案的核心框架。zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于google chubby。
zookeeper能做什么
1.数据的发布/订阅(配置中心:disconf)
2.命名服务
3.master选举(kafka、hadoop、hbase)
4.分布式队列
5.分布式锁
zookeeper特性
1.顺序一致性
从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
2.原子性
所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、
要么全都不应用
3.可靠性
一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
4.实时性
一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)
zookeeper可以作为dubbo服务的注册中心,两者结合起来可以实现微服务中的 服务注册、发现、负载均衡和健康检查,容错,动态配置管理的功能。
zk配置说明
zoo.cfg配置文件分析
tickTime=2000 zookeeper中最小的时间单位长度 (ms)
initLimit=10 follower节点启动后与leader节点完成数据同步的时间
syncLimit=5 leader节点和follower节点进行心跳检测的最大延时时间
dataDir=/tmp/zookeeper 表示zookeeper服务器存储快照文件的目录
dataLogDir 表示配置 zookeeper事务日志的存储路径,默认指定在dataDir目录下
clientPort 表示客户端和服务端建立连接的端口号:2181
代码说明
1.下载ZK,开启zk
本地window系统下载的是:zookeeper-3.4.14,在文件的bin目录下打开zkServer.cmd
2.建立dubbo工程
dubbo-api定义接口
dubbo-consumer1消费端
dubbo-provider提供方0
dubbo-provider1提供方1
2个提供方开启成功后,可以查看zk的节点验证
一个提供方端口是20880 ,另外一个提供方端口是20881
消费方调用是默认采用FailoverClusterInvoker,debug可以看到有2个可调用的节点20880,20881
通过负载均衡策略得到最终的调用方数据,进行调用
Invoker invoker =this.select(loadbalance, invocation, copyinvokers, invoked);