dubbo zookeeper图解入门配置
这次主要是对dubbo 和zookeeper的配置做个记录,以便以后自己忘记了,或者踩的坑再次被踩
快速阅读
zookeerer类似 springcloud中的Eureka都做为注册中心,用srpingboot建立三个项目生产者,消费者,公共接口,引用阿里的dubbo做为rpc框架, 生产者负责实现接口的业务逻辑 并且在zookeeper注册中心中注册,同是消费者也连接zookeeper注册中心进行消息调用 。
优点:
做为分布式服务架构,将核心业务抽取出来,稳定服务器,同时扩展方便 。可以针对高并发数据进行快速合理的扩展和监控。提高集群的利用率
zookeeper的配置
下载zookeeper 我用的版本是3.4.13
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
linux服务器解压
下载以后放到linux服务器上直接解压就可以了。
[root@bogon hcb]# tar zxvf zookeeper-3.4.13.tar.gz -C /usr
备份zoo.cfg配置文件
直接把zoo_sample.cfg改名就可以了。o
mv /usr/zookeeper-3.4.13/conf/zoo_sample.cfg zoo.cfg
启动zookeeper
我是因为已经启动过了,显示 already running
[root@bogon bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 2521.
查看zookeeper状态
如果有standalone表示启动正常 可以正常使用
[root@bogon bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone检查是否可以正常使用
用telnet 来测试
telnet 192.168.159.131 2181
虚拟机的linux可以ping通

但是win7主机外面无法ping通

这一般是因为linux的防火墙问题,直接关闭就可以了
关闭linux 防火墙
检查防火墙状态,
显示状态为running表示防火墙正在运行
[root@bogon bin]# firewall-cmd --state
running
关闭linux防火墙,并再次查询状态
[root@bogon bin]# systemctl stop firewalld.service
[root@bogon bin]# firewall-cmd --state
not running
禁止开机启动防火墙
[root@bogon bin]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
在win主机上再次telnet,可以成功连接

创建spring boot项目进行连接zookeeper
用Ideal创建一个maven项目 ,在项目里添加三个module
这三个项目分别是生产者dubboprovider 消费者dubboconsumer 接口duoboapi
创建一个maven的项目

输入项目名字

下一步

进入项目界面

新建provider module



同样的方法 创建其它两个module,结果如下所示三个module创建完毕

配置主项目 pom.xml
引用三个主要的依赖,
dubbo-spring-boot-starter: 在spring容器中注入特定bean ,集成了dubbo和spring boot
zookeeper:zookeeper的依赖
zkclient:zookeeper的客户端依赖
<dependencies>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
定义接口
在dubboapi 模块中java下,新建一个类com.hcb.Service.IHelloService
package com.hcb.Service; public interface IHelloService {
String SayHello(String name);
}实现 生产者模块
在该模块的pom.xml引用接口
<groupId>com.hcb</groupId>
<artifactId>dubboprovider</artifactId>
<dependencies>
<dependency>
<groupId>com.hcb</groupId>
<artifactId>dubboapi</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
新建main入口方法
引用@SpringBootApplication,@EnableDubboConfiguration 注解
@SpringBootApplication 整合了三个注解。(默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
@Configuration 是和@Bean 把实体model翻译成了xml的配置文件 ,使配置更简单
@EnableAutoConfiguration 能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
@ComponentScan 会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
@EnableDubboConfiguration, 表示要开启dubbo功能.
参考:https://www.cnblogs.com/MaxElephant/p/8108140.html
package com.hcb; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.concurrent.CountDownLatch; @SpringBootApplication
@EnableDubboConfiguration
public class provider {
public static void main(String[] args) throws InterruptedException {
SpringApplication.run(provider.class,args);
new CountDownLatch(1).await();
}
}定义一个类com.hcb.Service.HelloService 来实现 接口
@Service注解,将自动注册到Spring容器,不需要再定义bean了
@component (把普通pojo实例化到spring容器中,相当于配置文件中的
)泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),
package com.hcb.Service; import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component; @Service
@Component
public class HelloSevice implements IHelloService {
public String SayHello(String name){
return "hi "+name;
}
}resoruces中新建application.properties配置 文件
指定名字并给出要注册的zookeepr的地址
spring.dubbo.appname=dubboprovider
spring.dubbo.registry=zookeeper://192.168.159.131:2181
启动
在provider类中在击main方法所在的类,然后选择run

程序正常启动不报错

消费者模块的配置
消费者consume中pom.xml的配置 ,
引入接口和spring-boot-starter-web 是指这是一个web模块
spring-boot-starter-web如果用2.1.5.RELEASE 会报错,先用1.5.3
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.hcb</groupId>
<artifactId>dubboapi</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
建立配置文件 和provider一样,名字换成consumer就可以
spring.dubbo.appname=dubboconsumer
spring.dubbo.registry=zookeeper://192.168.159.131:2181
建立启动类
package com.hcb; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.concurrent.CountDownLatch; @SpringBootApplication
@EnableDubboConfiguration
public class Consumer {
public static void main(String[] args) {
SpringApplication.run(Consumer.class,args);
}
}建立controll类实现接口
package com.hcb; import com.alibaba.dubbo.config.annotation.Reference;
import com.hcb.Service.IHelloService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/hello")
public class HelloController {
@Reference
IHelloService ihelloService; @RequestMapping
public String hello(@RequestParam String name){
return ihelloService.SayHello(name);
}
}启动消费者


测试
浏览器中输入 http://localhost:8080/hello?name=%E6%A1%82%E6%9E%97
正确显示出来

源码下载地址:
链接:https://pan.baidu.com/s/1WO2BQnsmIxP04mWNZin93A
提取码:5h0w
dubbo zookeeper图解入门配置的更多相关文章
- dubbo+zookeeper集群配置
集群服务注册到多台zookeeper配置: <dubbo:registry protocol="zookeeper" address="10.20.153.10:2 ...
- SpringBoot+Dubbo+ZooKeeper+Maven入门实践
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11798626.html 注*** 本实例为仅适合初学者,关于dubbo和springboot以 ...
- MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建
: 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程 API Pom.xml:不用引用任何东西 Provider Pom.xml:要denpend ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- dubbo+zookeeper伪集群配置
zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待.所以可以通过zookeeper集群解决. 一.为什么需要zookeeper呢? 大部分分布式应用需要一个主控.协 ...
- 170328、Maven+SpringMVC+Dubbo 简单的入门demo配置
之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程序猿来说,真是一个好消息.最近有时间了,打算做一个demo把dubbo在本地跑起来先. 先copy一段dubbo ...
- Dubbo + Zookeeper 简单配置
Dubbo + Zookeeper Zookeeper 下载及配置 下载到本机/usr/local目录 wget https://mirrors.tuna.tsinghua.edu.cn/apache ...
- java:zookeeper集群配置,dubbo
1.zookeeper集群配置: 2.dubbo:(配置见视频)
- (转)Dubbo + Zookeeper入门初探
一.搭建java和tomcat环境 二.搭建zookeeper 三.搭建dubbo监控中心 四.配置项目 4.1 服务提供方代码 4.2 服务使用方代码 五.测试 2018年2月15日,阿里巴巴的du ...
随机推荐
- 采用localStorage做定时缓存
背景 页面采用ajax获取数据时,每访问一次就会发送一次请求向服务端获取数据,可是呢. 有些数据更新的又不频繁,所以我就想着使用localStorage进行本地存储,然后在固定间隔时在去更新数据.(下 ...
- jq的ajax方法
相较与js异步对象的繁琐,jq的ajax对象结构更加清晰 一:ajax对象简述 ajax(Asynchronous JavaScript and XML),异步的xml和js对象,主要用于在不刷新全局 ...
- python 将字符串中的unicode字符码转换成字符
将字符串str =’\u98ce\u534e\u7684\u51b2\u950b'转换成汉字显示 可以直接print输出 print u'\u98ce\u534e\u7684\u51b2\u950b' ...
- Vue指令之`v-model`和`双向数据绑定
v-bind 只能实现数据的单向绑定,从 M 自动绑定到 V, 无法实现数据的双向绑定 <input type="text" v-bind:value="msg& ...
- javascript_12-递归
递归 // function f1(){ // console.log("hello"); // f1(); // } // f1(); // 给递归添加结束的条件 var i = ...
- Android笔记(十一) Android中的布局——网格布局
网格布局是Android4.0新增的布局管理器,因此需要在Android4.0之后的版本才可以使用,之前的平台使用该布局的话,需要导入相应的支持库. GridLayout的作用类似于HTML中的tab ...
- 制作一个简单的部门员工知识分享的python抽取脚本
需求: 基于公司的文化和公司部门间以及员工之间的工作需求状态,或者想要了解某一些技能.专业方面的知识需求.促进并提高员工们的技能认知和技术水平. 详细代码如下: 先说一下存入csv表格的表头字段: 1 ...
- Eclipse启动tomcat超时
启动tomcat 超时 Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the ser ...
- 多任务4---greenlet完成多任务
同yield一样 ,单线程,来回切换完成多任务,需要安装greenlet插件 pip install greenlet 代码: from greenlet import greenlet import ...
- php类的定义与实例化方法
php类的定义 类是对某个对象的定义.它包含有关对象动作方式的信息,包括它的名称.方法.属性和事件.实际上它本身并不是对象,因为它不存在于内存中.当引用类的代码运行时,类的一个新的实例,即对象,就在内 ...