赞
踩
1 配置管理
2 名字服务
3 分布式锁
4 集群管理
1.PERSISTENT 持久化节点
2.PERSISTENT_SEQUENTIAL 持久顺序节点
3.EPHEMERAL 临时节点
4.EPHEMERAL_SEQUENTIAL 临时自动编号节点
- [root@localhost temp]# tar -zxf zookeeper-3.4.6.tar.gz
- [root@localhost temp]# cp zookeeper-3.4.6 /usr/local/zookeeper -r
Zookeeper 目录结构
Zookeeper集群中的角色主
提供数据缓存目录
复制应用
提供配置文件
修改配置文件 zoo.cfg - 设置数据缓存路径
提供应用唯一标识
简化方式为:
修改配置文件 zoo.cfg - 设置服务、投票、选举端口
启动 ZooKeeper 应用
Zookeeper常见命令:
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。
单体架构
单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难
SOA架构
面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
RPC远程过程调用
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。
Dubbo架构图
Consumer
服务的消费者, 就是服务的客户端.
Provider
Container
monitor
0 start: 启动 Spring 容器时,自动启动 Dubbo 的 Provider
1 register: Dubbo 的 Provider 在启动后自动会去注册中心注册内容.注册的内容包括:
2 subscribe: 订阅.当 Consumer 启动时,自动去 Registry 获取到所已注册的服务的信息.
3 notify: 通知.当 Provider 的信息发生变化时, 自动由 Registry 向 Consumer 推送通知.
4 invoke: 调用. Consumer 调用 Provider 中方法
5 count:次数. 每隔 2 分钟,provoider 和 consumer 自动向 Monitor 发送访问数.Monitor进行统计.
RMI协议:
Hessian 协议:
Zookeeper:
Multicast:
Redis:
Simple:
创建工程
修改 pom.xml文件添加 Dubbo 的坐标
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.sxt</groupId>
- <artifactId>01-dubbo-provider-demo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.5.4</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
- <dependency>
- <groupId>com.101tec</groupId>
- <artifactId>zkclient</artifactId>
- <version>0.10</version>
- </dependency>
- </dependencies>
- </project>

关于版本的问题。在 Dubbo 的 的 2.5.3 版本中对于 spring的支持是 2.5.x 。替换低版本的 spring
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
- ce"
- xsi:schemaLocation="http://maven.apache.org/P
- OM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.bjsxt</groupId>
- <artifactId>01-dubbo-provier-demo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <!-- https://mvnrepository.com/artifact/com.alibaba/dub bo -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.5.3</version>
- <!-- 去除依赖 -->
- <exclusions>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.1.6.RELEASE</version>
- </dependency>
- </dependencies>
- </project>

创建服务
配置applocation-dubbo.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://code.alibabatech.com/schema/dubbo
- http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
- <dubbo:application name="myprovider"/>
- <!--配置注册中心 -->
- <!-- address:注册中心的IP和端口-->
- <!--protocol:注册中心的类型 -->
- <!--如果zookeeper是一个集群,需要将集群中的所有IP和端口号添加在该属性中-->
- <dubbo:registry address="192.168.176.128:2181,192.168.176.128:2182,192.168.176.128:2183" protocol="zookeeper">
- </dubbo:registry>
- <!--配置协议与端口 -->
- <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
- <!--配置注册接口 -->
- <dubbo:service interface="com.sxt.service.DubboService" ref="dubboServiceImpl"></dubbo:service>
- <bean id="dubboServiceImpl" class="com.sxt.service.impl.DubboServiceImpl"></bean>
-
- </beans>

测试类Start
使用 DubboAPI 启动 Provider
Main.main(args);
特点:
启动 Zookeeper 注册中心
通过 SpringAPI 启动容器
在 ApplicationContext 接口中未定义 start()方法,需要时用接口实现类
启动时异常信息JDK 版本不符合要求。注意 dubbo2.5.4 要求 jdk 必须是 1.8 或者以上的版本
Dubbo 启动时需要依赖 zookeeper 基于 java 语言的客户单工具
修改 POM 文件添加 zkclient 坐标
- <!-- com.101tec " zkclient -->
- <dependency>
- <groupId>com.101tec</groupId>
- <artifactId>zkclient</artifactId>
- <version>0.10</version>
- </dependency>
注册中心中的服务发布信息
显示结果如下:
- dubbo%3A%2F%2F192.168.2.108%3A20880%2Fcom.bjsxt.service.DubboService%3Fanyh
- ost%3Dtrue%26application%3Dmyprovider%26dubbo%3D2.5.4%26generic%3Dfalse%26interfa
- ce%3Dcom.bjsxt.service.DubboService%26methods%3DshowMsg%26pid%3D3936%26side%3
- Dprovider%26timestamp%3D1536807891514
转换结果如下:
- dubbo://192.168.2.108:20880/com.bjsxt.service.DubboService?anyhost=true&application=m
- yprovider&dubbo=2.5.4&generic=false&interface=com.bjsxt.service.DubboService&methods=sh
- owMsg&pid=3936&side=provider×tamp=1536807891514
安装 Admin 管理
配置 Admin 管理平台
vim编辑 ROOT/dubbo.properties
访问 Admin 管理平台
http://192.168.176.128:8080/
创建工程
修改pom.xml文件
编写 Consumer接口+实体类
配置 applicationContext.xml
测试 类ConsumerTest
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。