SpringBoot 整合 Dubbo&Zookeeper 实现分布式
1. 安装 Zookeeper 环境
2. 服务提供者
因为用了父工程的版本管理,所以这里没有显示版本,我把用到的版本给大家分享下。
- jdk 1.8
- springboot 1.5.8
- spring-boot-starter-dubbo 1.0.0
闲余之际我会把demo源码分享。
2.1 pom依赖
<dependencies>
<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--spring data jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.8-dmr</version>
<scope>compile</scope>
</dependency>
<!--dubbo 依赖-->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
</dependency>
<!--junit 测试工具-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
2.2. Service填写
大概给下项目架构:
为了方便,我用的springboot data jpa做持久性框架。如果不会jpa,请先看我springboot jpa整合。
1. SchoolRepository .java
/**
* Created by Fant.J.
*/
@Repository
public interface SchoolRepository extends JpaRepository<School,Integer> {
}
- SchoolService.java 略(一个正常的借口)
- 实现类SchoolServiceImpl .java核心代码
@Service(version = "2.0.1")
public class SchoolServiceImpl implements SchoolService {
@Autowired
private SchoolRepository schoolRepository;
这里的@Service注解是dubbo的注解,不是springframework下的注解。该注解就是向zk注册服务。
2.3. application.properties
server.port=9002
## Dubbo 服务提供者配置
spring.dubbo.application.name=school-server
spring.dubbo.registry.address=zookeeper://xxx.xxx.xxx.xxx:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20882
spring.dubbo.scan=com.xxx.school.service
spring.datasource.url=jdbc:mysql://xxxxxxxxxx
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
注意: 每一个服务都需要一个未被使用的dubbo端口 。
3. 服务消费
为了和服务提供者解耦,我们需要把Service接口类单独拿出来放到client模块里,这里不贴详细代码了。
3.1 pom.xml
这里略,根据controller类里的需要来填充相关依赖
3.2 SchoolController
@RestController
@RequestMapping("/sch")
public class SchoolController {
@Reference(version = "2.0.1")
private SchoolService schoolService;
@RequestMapping("/all")
public ServerResponse getAll(){
return schoolService.selectAll();
}
}
注意与@Service注解的version属性值一一对应。
3.3 application.properties
## Dubbo 服务消费者配置
spring.dubbo.application.name=xxx
spring.dubbo.registry.address=zookeeper://xxxx.xxx.xxx.xxx
spring.dubbo.scan=com.xxx.web.controller
成功截图:
有疑问请在下面留言。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
SpringBoot 手写过滤器&加载第三方过滤器
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/81665638 如何手写一个过滤器呢。假设我现在需要一个计时过滤器,我想把每一次调用服务锁花费的时间打印到控制台,我该怎么做呢? 拦截机制有三种: 1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。 2. 拦截器(Interceptor)既能拿到http请求信息,也能拿到处理请求方法的信息,但是拿不到方法的参数信息。 3. 切片(Aspect)能拿到方法的参数信息,但是拿不到http请求信息。 他们三个各有优缺点,需要根据自己的业务需求来选择最适合的拦截机制。 好了下面开始正文。 本教程大概目录: 1. 手写过滤器 2. 加载第三方过滤器 好了,开始正文。 1. 手写过滤器 特别容易,继承Filter ,然后根据需求重写它的三个方法。 /** * TimeFilter 计时过滤器 * Created by Fant.J. */ @Component public class TimeFilter impl...
-
下一篇
毕业的那天,程序员师兄竟然让我去做这一行
给大家看一份最新的数据: (薪资表)2018年最新数据: python、大数据、人工智能从业者工资 为什么人工智能行业的工资那么高? 无论是科研院所,商业巨头还是初创企业,各行各业都在大力开发或者引进人工智能,由于储备不足,导致人工智能人才现在出现缺口,而且非常巨大。 据领英今日发布的全球AI领域技术人才分布图显示,中国目前的AI人才缺口超过5万人。 人才供不应求,导致领域岗位的薪资也自然水涨船高。 很多人,尤其是应届毕业生和刚参加工作的程序员们,都想在这股 AI 热潮中,凭借实力和简历脱颖而出。然而,很多人在第一关就被 HR 刷掉了,更别说技术面了。 想必大家都知道原因。 目前的人工智能,对于本科生来说并没有深入的AI专业,毕竟这些方向属于高层次的知识,需要一定的基础。虽然由于现在AI热还有工业界对于这方面人才的强烈需求,开始有大学专门开设了AI和数据科学专业,但是,这些学生毕业出来后所拥有的技能和企业所需的人才标准却是不对等的。 像BAT的人工智能部门;高校人工智能研究相关工作;明星创业公司,比如四小龙,商汤,矿世,科大等。如果你只学过计算机专业,想进入这些公司或者机构并没那么简单...
相关文章
文章评论
共有0条评论来说两句吧...